diff options
Diffstat (limited to 'chrome/browser/cocoa/bookmark_button_cell_unittest.mm')
-rw-r--r-- | chrome/browser/cocoa/bookmark_button_cell_unittest.mm | 71 |
1 files changed, 70 insertions, 1 deletions
diff --git a/chrome/browser/cocoa/bookmark_button_cell_unittest.mm b/chrome/browser/cocoa/bookmark_button_cell_unittest.mm index a1b7b40..07f9984 100644 --- a/chrome/browser/cocoa/bookmark_button_cell_unittest.mm +++ b/chrome/browser/cocoa/bookmark_button_cell_unittest.mm @@ -5,10 +5,31 @@ #include "base/scoped_nsobject.h" #import "chrome/browser/cocoa/bookmark_button_cell.h" #import "chrome/browser/cocoa/bookmark_menu.h" +#include "chrome/browser/cocoa/browser_test_helper.h" #import "chrome/browser/cocoa/cocoa_test_helper.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" +// Simple class to remember how many mouseEntered: and mouseExited: +// calls it gets. Only used by BookmarkMouseForwarding but placed +// at the top of the file to keep it outside the anon namespace. +@interface ButtonRemembersMouseEnterExit : NSButton { + @public + int enters_; + int exits_; +} +@end + +@implementation ButtonRemembersMouseEnterExit +- (void)mouseEntered:(NSEvent*)event { + enters_++; +} +- (void)mouseExited:(NSEvent*)event { + exits_++; +} +@end + + namespace { class BookmarkButtonCellTest : public CocoaTest { @@ -29,11 +50,59 @@ TEST_F(BookmarkButtonCellTest, SizeForBounds) { EXPECT_TRUE(size.width < 200 && size.height < 200); } -// Make sure the default from the base class is overridden +// Make sure the default from the base class is overridden. TEST_F(BookmarkButtonCellTest, MouseEnterStuff) { scoped_nsobject<BookmarkButtonCell> cell( [[BookmarkButtonCell alloc] initTextCell:@"Testing"]); + [cell setMenu:[[[BookmarkMenu alloc] initWithTitle:@"foo"] autorelease]]; EXPECT_TRUE([cell.get() showsBorderOnlyWhileMouseInside]); + EXPECT_TRUE([cell menu]); + + [cell setEmpty:YES]; + EXPECT_FALSE([cell.get() showsBorderOnlyWhileMouseInside]); + EXPECT_FALSE([cell menu]); +} + +TEST_F(BookmarkButtonCellTest, BookmarkNode) { + BrowserTestHelper helper_; + BookmarkModel& model(*(helper_.profile()->GetBookmarkModel())); + scoped_nsobject<BookmarkButtonCell> cell( + [[BookmarkButtonCell alloc] initTextCell:@"Testing"]); + + const BookmarkNode* node = model.GetBookmarkBarNode(); + [cell setBookmarkNode:node]; + EXPECT_EQ(node, [cell bookmarkNode]); + + node = model.other_node(); + [cell setBookmarkNode:node]; + EXPECT_EQ(node, [cell bookmarkNode]); +} + +TEST_F(BookmarkButtonCellTest, BookmarkMouseForwarding) { + scoped_nsobject<BookmarkButtonCell> cell( + [[BookmarkButtonCell alloc] initTextCell:@"Testing"]); + scoped_nsobject<ButtonRemembersMouseEnterExit> + button([[ButtonRemembersMouseEnterExit alloc] + initWithFrame:NSMakeRect(0,0,50,50)]); + [button setCell:cell.get()]; + EXPECT_EQ(0, button.get()->enters_); + EXPECT_EQ(0, button.get()->exits_); + NSEvent* event = [NSEvent mouseEventWithType:NSMouseMoved + location:NSMakePoint(10,10) + modifierFlags:0 + timestamp:0 + windowNumber:0 + context:nil + eventNumber:0 + clickCount:0 + pressure:0]; + [cell mouseEntered:event]; + EXPECT_TRUE(button.get()->enters_ && !button.get()->exits_); + + for (int i = 0; i < 3; i++) + [cell mouseExited:event]; + EXPECT_EQ(button.get()->enters_, 1); + EXPECT_EQ(button.get()->exits_, 3); } } // namespace |