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 11namespace { 12 13class 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. 27TEST_VIEW(ChevronMenuButtonTest, button_); 28 29// |ChevronMenuButton exists entirely to override the cell class. 30TEST_F(ChevronMenuButtonTest, CellSubclass) { 31 EXPECT_TRUE([[button_ cell] isKindOfClass:[ChevronMenuButtonCell class]]); 32} 33 34// Test both hovered and non-hovered display. 35TEST_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