1 // Copyright (c) 2012 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 "base/mac/scoped_nsobject.h" 6 #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" 7 #import "chrome/browser/ui/cocoa/constrained_window/constrained_window_button.h" 8 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/platform_test.h" 10 11 class ConstrainedWindowButtonTest : public CocoaTest { 12 public: 13 ConstrainedWindowButtonTest() { 14 NSRect frame = NSMakeRect(0, 0, 50, 30); 15 button_.reset([[ConstrainedWindowButton alloc] initWithFrame:frame]); 16 [button_ setTitle:@"Abcdefg"]; 17 [button_ sizeToFit]; 18 [[test_window() contentView] addSubview:button_]; 19 } 20 21 protected: 22 base::scoped_nsobject<ConstrainedWindowButton> button_; 23 }; 24 25 TEST_VIEW(ConstrainedWindowButtonTest, button_) 26 27 // Test hover, mostly to ensure nothing leaks or crashes. 28 TEST_F(ConstrainedWindowButtonTest, DisplayWithHover) { 29 [[button_ cell] setIsMouseInside:NO]; 30 [button_ display]; 31 [[button_ cell] setIsMouseInside:YES]; 32 [button_ display]; 33 } 34 35 // Test disabled, mostly to ensure nothing leaks or crashes. 36 TEST_F(ConstrainedWindowButtonTest, DisplayWithDisable) { 37 [button_ setEnabled:YES]; 38 [button_ display]; 39 [button_ setEnabled:NO]; 40 [button_ display]; 41 } 42 43 // Test pushed, mostly to ensure nothing leaks or crashes. 44 TEST_F(ConstrainedWindowButtonTest, DisplayWithPushed) { 45 [[button_ cell] setHighlighted:NO]; 46 [button_ display]; 47 [[button_ cell] setHighlighted:YES]; 48 [button_ display]; 49 } 50 51 // Tracking rects 52 TEST_F(ConstrainedWindowButtonTest, TrackingRects) { 53 ConstrainedWindowButtonCell* cell = [button_ cell]; 54 EXPECT_FALSE([cell isMouseInside]); 55 56 [button_ mouseEntered:nil]; 57 EXPECT_TRUE([cell isMouseInside]); 58 [button_ mouseExited:nil]; 59 EXPECT_FALSE([cell isMouseInside]); 60 } 61