| Index: chrome/browser/cocoa/autocomplete_text_field_cell_unittest.mm
|
| ===================================================================
|
| --- chrome/browser/cocoa/autocomplete_text_field_cell_unittest.mm (revision 23951)
|
| +++ chrome/browser/cocoa/autocomplete_text_field_cell_unittest.mm (working copy)
|
| @@ -11,16 +11,12 @@
|
|
|
| namespace {
|
|
|
| -// TODO(shess): Make a sensible distinction between
|
| -// AutocompleteTextField unittesting and AutocompleteTextFieldCell
|
| -// unittesting - or, since AutocompleteTextFieldCell doesn't really
|
| -// have independent existence, just put tests for both in
|
| -// autocomplete_text_field_unittest.mm.
|
| -
|
| class AutocompleteTextFieldCellTest : public testing::Test {
|
| public:
|
| AutocompleteTextFieldCellTest() {
|
| - NSRect frame = NSMakeRect(0, 0, 50, 30);
|
| + // Make sure this is wide enough to play games with the cell
|
| + // decorations.
|
| + NSRect frame = NSMakeRect(0, 0, 300, 30);
|
| view_.reset([[NSTextField alloc] initWithFrame:frame]);
|
| scoped_nsobject<AutocompleteTextFieldCell> cell(
|
| [[AutocompleteTextFieldCell alloc] initTextCell:@"Testing"]);
|
| @@ -43,6 +39,213 @@
|
| // Test drawing, mostly to ensure nothing leaks or crashes.
|
| TEST_F(AutocompleteTextFieldCellTest, Display) {
|
| [view_ display];
|
| +
|
| + // Test display of various cell configurations.
|
| + AutocompleteTextFieldCell* cell =
|
| + static_cast<AutocompleteTextFieldCell*>([view_ cell]);
|
| +
|
| + [cell setSearchHintString:@"Type to search"];
|
| + [view_ display];
|
| +
|
| + NSImage* image = [NSImage imageNamed:@"NSApplicationIcon"];
|
| + [cell setKeywordHintPrefix:@"prefix" image:image suffix:@"suffix"];
|
| + [view_ display];
|
| +
|
| + [cell setKeywordString:@"Search Engine:"];
|
| + [view_ display];
|
| }
|
|
|
| +TEST_F(AutocompleteTextFieldCellTest, SearchHint) {
|
| + AutocompleteTextFieldCell* cell =
|
| + static_cast<AutocompleteTextFieldCell*>([view_ cell]);
|
| +
|
| + // At default settings, everything is already good to go.
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Setting a search hint will need a reset.
|
| + [cell setSearchHintString:@"Type to search"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Changing the search hint needs a reset.
|
| + [cell setSearchHintString:@"Type to find"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Changing to an identical string doesn't need a reset.
|
| + [cell setSearchHintString:@"Type to find"];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +}
|
| +
|
| +TEST_F(AutocompleteTextFieldCellTest, KeywordHint) {
|
| + AutocompleteTextFieldCell* cell =
|
| + static_cast<AutocompleteTextFieldCell*>([view_ cell]);
|
| + NSImage* image = [NSImage imageNamed:@"NSApplicationIcon"];
|
| +
|
| + // At default settings, everything is already good to go.
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Setting a keyword hint will need a reset.
|
| + [cell setKeywordHintPrefix:@"Press " image:image suffix:@" to search Engine"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Changing the keyword hint needs a reset.
|
| + [cell setKeywordHintPrefix:@"Type " image:image suffix:@" to search Engine"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Changing to identical strings doesn't need a reset.
|
| + [cell setKeywordHintPrefix:@"Type " image:image suffix:@" to search Engine"];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +}
|
| +
|
| +TEST_F(AutocompleteTextFieldCellTest, KeywordString) {
|
| + AutocompleteTextFieldCell* cell =
|
| + static_cast<AutocompleteTextFieldCell*>([view_ cell]);
|
| +
|
| + // At default settings, everything is already good to go.
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Setting a keyword string will need a reset.
|
| + [cell setKeywordString:@"Search Engine:"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Changing the keyword string needs a reset.
|
| + [cell setKeywordString:@"Search on Engine:"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Changing to an identical string doesn't need a reset.
|
| + [cell setKeywordString:@"Search on Engine:"];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| +}
|
| +
|
| +// Test that transitions between various modes set the reset flag.
|
| +TEST_F(AutocompleteTextFieldCellTest, Transitions) {
|
| + AutocompleteTextFieldCell* cell =
|
| + static_cast<AutocompleteTextFieldCell*>([view_ cell]);
|
| + NSImage* image = [NSImage imageNamed:@"NSApplicationIcon"];
|
| +
|
| + // Transitions from hint to keyword string, keyword hint, and
|
| + // cleared.
|
| + [cell setSearchHintString:@"Type to search"];
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| + [cell setKeywordString:@"Search Engine:"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| +
|
| + [cell setSearchHintString:@"Type to search"];
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| + [cell setKeywordHintPrefix:@"Press " image:image suffix:@" to search Engine"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| +
|
| + [cell setSearchHintString:@"Type to search"];
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| + [cell clearKeywordAndHint];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Transitions from keyword hint to keyword string, simple hint, and
|
| + // cleared.
|
| + [cell setKeywordHintPrefix:@"Press " image:image suffix:@" to search Engine"];
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| + [cell setSearchHintString:@"Type to search"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| +
|
| + [cell setKeywordHintPrefix:@"Press " image:image suffix:@" to search Engine"];
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| + [cell setKeywordString:@"Search Engine:"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| +
|
| + [cell setKeywordHintPrefix:@"Press " image:image suffix:@" to search Engine"];
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| + [cell clearKeywordAndHint];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| +
|
| + // Transitions from keyword string to either type of hint, or
|
| + // cleared.
|
| + [cell setKeywordString:@"Search on Engine:"];
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| + [cell setSearchHintString:@"Type to search"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| +
|
| + [cell setKeywordString:@"Search on Engine:"];
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| + [cell setKeywordHintPrefix:@"Press " image:image suffix:@" to search Engine"];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| +
|
| + [cell setKeywordString:@"Search on Engine:"];
|
| + [cell setFieldEditorNeedsReset:NO];
|
| + EXPECT_FALSE([cell fieldEditorNeedsReset]);
|
| + [cell clearKeywordAndHint];
|
| + EXPECT_TRUE([cell fieldEditorNeedsReset]);
|
| +}
|
| +
|
| +TEST_F(AutocompleteTextFieldCellTest, TextFrame) {
|
| + AutocompleteTextFieldCell* cell =
|
| + static_cast<AutocompleteTextFieldCell*>([view_ cell]);
|
| + const NSRect bounds([view_ bounds]);
|
| + NSRect textFrame;
|
| +
|
| + // At default settings, everything goes to the text area.
|
| + textFrame = [cell textFrameForFrame:bounds];
|
| + EXPECT_FALSE(NSIsEmptyRect(textFrame));
|
| + EXPECT_TRUE(NSContainsRect(bounds, textFrame));
|
| + EXPECT_EQ(NSMinX(bounds), NSMinX(textFrame));
|
| + EXPECT_EQ(NSMaxX(bounds), NSMaxX(textFrame));
|
| +
|
| + // Small search hint leaves text frame to left.
|
| + [cell setSearchHintString:@"Search hint"];
|
| + textFrame = [cell textFrameForFrame:bounds];
|
| + EXPECT_FALSE(NSIsEmptyRect(textFrame));
|
| + EXPECT_TRUE(NSContainsRect(bounds, textFrame));
|
| + EXPECT_LT(NSMaxX(textFrame), NSMaxX(bounds));
|
| +
|
| + // Save search-hint's frame for future reference.
|
| + const CGFloat searchHintMaxX(NSMaxX(textFrame));
|
| +
|
| + // Keyword hint also leaves text to left. Arrange for it to be
|
| + // larger than the search hint just to make sure that things have
|
| + // changed (keyword hint overrode search hint), and that they aren't
|
| + // handled identically w/out reference to the actual button cell.
|
| + NSImage* image = [NSImage imageNamed:@"NSApplicationIcon"];
|
| + [cell setKeywordHintPrefix:@"Keyword " image:image suffix:@" hint"];
|
| + textFrame = [cell textFrameForFrame:bounds];
|
| + EXPECT_FALSE(NSIsEmptyRect(textFrame));
|
| + EXPECT_TRUE(NSContainsRect(bounds, textFrame));
|
| + EXPECT_LT(NSMaxX(textFrame), NSMaxX(bounds));
|
| + EXPECT_LT(NSMaxX(textFrame), searchHintMaxX);
|
| +
|
| + // Keyword search leaves text area to right.
|
| + [cell setKeywordString:@"Search Engine:"];
|
| + textFrame = [cell textFrameForFrame:bounds];
|
| + EXPECT_FALSE(NSIsEmptyRect(textFrame));
|
| + EXPECT_TRUE(NSContainsRect(bounds, textFrame));
|
| + EXPECT_GT(NSMinX(textFrame), NSMinX(bounds));
|
| + EXPECT_LT(NSMinX(textFrame), searchHintMaxX);
|
| + EXPECT_GT(NSMaxX(textFrame), searchHintMaxX);
|
| +
|
| + // Text frame should take everything over again on reset.
|
| + [cell clearKeywordAndHint];
|
| + textFrame = [cell textFrameForFrame:bounds];
|
| + EXPECT_FALSE(NSIsEmptyRect(textFrame));
|
| + EXPECT_TRUE(NSContainsRect(bounds, textFrame));
|
| + EXPECT_EQ(NSMinX(bounds), NSMinX(textFrame));
|
| + EXPECT_EQ(NSMaxX(bounds), NSMaxX(textFrame));
|
| +}
|
| +
|
| } // namespace
|
|
|
| Property changes on: chrome/browser/cocoa/autocomplete_text_field_cell_unittest.mm
|
| ___________________________________________________________________
|
| Name: svn:eol-style
|
| + LF
|
|
|
|
|