// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/mac/scoped_nsobject.h" #import "chrome/browser/ui/cocoa/cocoa_test_helper.h" #import "chrome/browser/ui/cocoa/image_button_cell.h" #include "grit/theme_resources.h" namespace { class ImageButtonCellTest : public CocoaTest { public: ImageButtonCellTest() { NSRect frame = NSMakeRect(0, 0, 50, 30); base::scoped_nsobject view( [[NSButton alloc] initWithFrame:frame]); view_ = view.get(); base::scoped_nsobject cell( [[ImageButtonCell alloc] initTextCell:@""]); [view_ setCell:cell.get()]; [[test_window() contentView] addSubview:view_]; } void SetImages() { [[view_ cell] setImageID:IDR_BACK forButtonState:image_button_cell::kDefaultState]; [[view_ cell] setImageID:IDR_BACK_H forButtonState:image_button_cell::kHoverState]; [[view_ cell] setImageID:IDR_BACK_P forButtonState:image_button_cell::kPressedState]; [[view_ cell] setImageID:IDR_BACK_D forButtonState:image_button_cell::kDisabledState]; } NSButton* view_; }; // Test drawing, mostly to ensure nothing leaks or crashes. TEST_F(ImageButtonCellTest, DisplayWithHover) { SetImages(); EXPECT_FALSE([[view_ cell] isMouseInside]); [view_ display]; [[view_ cell] setIsMouseInside:YES]; [view_ display]; // Unset the hover image and draw. [[view_ cell] setImageID:0 forButtonState:image_button_cell::kHoverState]; [view_ display]; } // Test drawing, mostly to ensure nothing leaks or crashes. TEST_F(ImageButtonCellTest, DisplayWithPressed) { SetImages(); EXPECT_FALSE([[view_ cell] isHighlighted]); [view_ display]; [[view_ cell] setHighlighted:YES]; [view_ display]; // Unset the pressed image and draw. [[view_ cell] setImageID:0 forButtonState:image_button_cell::kPressedState]; [view_ display]; } // Test drawing, mostly to ensure nothing leaks or crashes. TEST_F(ImageButtonCellTest, DisplayWithDisabled) { SetImages(); EXPECT_TRUE([[view_ cell] isEnabled]); [view_ display]; [[view_ cell] setEnabled:NO]; [view_ display]; // Unset the disabled image and draw. [[view_ cell] setImageID:0 forButtonState:image_button_cell::kDisabledState]; [view_ display]; } TEST_F(ImageButtonCellTest, NewImageCausesDisplay) { [[view_ cell] setImageID:IDR_STOP forButtonState:image_button_cell::kDefaultState]; [view_ display]; EXPECT_FALSE([view_ needsDisplay]); [[view_ cell] setImageID:IDR_RELOAD forButtonState:image_button_cell::kDefaultState]; EXPECT_TRUE([view_ needsDisplay]); } } // namespace