Home | History | Annotate | Download | only in extensions
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #import "chrome/browser/ui/cocoa/extensions/chevron_menu_button.h"
      6 #import "chrome/browser/ui/cocoa/extensions/chevron_menu_button_cell.h"
      7 
      8 #include "base/memory/scoped_nsobject.h"
      9 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
     10 
     11 namespace {
     12 
     13 class ChevronMenuButtonTest : public CocoaTest {
     14  public:
     15   ChevronMenuButtonTest() {
     16     NSRect frame = NSMakeRect(0, 0, 50, 30);
     17     scoped_nsobject<ChevronMenuButton> button(
     18         [[ChevronMenuButton alloc] initWithFrame:frame]);
     19     button_ = button.get();
     20     [[test_window() contentView] addSubview:button_];
     21   }
     22 
     23   ChevronMenuButton* button_;
     24 };
     25 
     26 // Test basic view operation.
     27 TEST_VIEW(ChevronMenuButtonTest, button_);
     28 
     29 // |ChevronMenuButton exists entirely to override the cell class.
     30 TEST_F(ChevronMenuButtonTest, CellSubclass) {
     31   EXPECT_TRUE([[button_ cell] isKindOfClass:[ChevronMenuButtonCell class]]);
     32 }
     33 
     34 // Test both hovered and non-hovered display.
     35 TEST_F(ChevronMenuButtonTest, HoverAndNonHoverDisplay) {
     36   ChevronMenuButtonCell* cell = [button_ cell];
     37   EXPECT_FALSE([cell showsBorderOnlyWhileMouseInside]);
     38   EXPECT_FALSE([cell isMouseInside]);
     39 
     40   [cell setShowsBorderOnlyWhileMouseInside:YES];
     41   [cell mouseEntered:nil];
     42   EXPECT_TRUE([cell isMouseInside]);
     43   [button_ display];
     44 
     45   [cell mouseExited:nil];
     46   EXPECT_FALSE([cell isMouseInside]);
     47   [button_ display];
     48 }
     49 
     50 }  // namespace
     51