| // 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<NSButton> view( |
| [[NSButton alloc] initWithFrame:frame]); |
| view_ = view.get(); |
| base::scoped_nsobject<ImageButtonCell> 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 |