hover_image_button_unittest.mm revision 21d179b334e59e9a3bfcaed4c4430bef1bc5759d
1// Copyright (c) 2009 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 <Cocoa/Cocoa.h>
6
7#include "app/resource_bundle.h"
8#include "base/scoped_nsobject.h"
9#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
10#import "chrome/browser/ui/cocoa/hover_image_button.h"
11#include "testing/gtest/include/gtest/gtest.h"
12#include "testing/platform_test.h"
13#include "grit/theme_resources.h"
14
15namespace {
16
17class HoverImageButtonTest : public CocoaTest {
18 public:
19  HoverImageButtonTest() {
20    NSRect content_frame = [[test_window() contentView] frame];
21    scoped_nsobject<HoverImageButton> button(
22        [[HoverImageButton alloc] initWithFrame:content_frame]);
23    button_ = button.get();
24    [[test_window() contentView] addSubview:button_];
25  }
26
27  virtual void SetUp() {
28    CocoaTest::BootstrapCocoa();
29  }
30
31  HoverImageButton* button_;
32};
33
34// Test mouse events.
35TEST_F(HoverImageButtonTest, ImageSwap) {
36  ResourceBundle& rb = ResourceBundle::GetSharedInstance();
37  NSImage* image = rb.GetNativeImageNamed(IDR_HOME);
38  NSImage* hover = rb.GetNativeImageNamed(IDR_BACK);
39  [button_ setDefaultImage:image];
40  [button_ setHoverImage:hover];
41
42  [button_ mouseEntered:nil];
43  [button_ drawRect:[button_ frame]];
44  EXPECT_EQ([button_ image], hover);
45  [button_ mouseExited:nil];
46  [button_ drawRect:[button_ frame]];
47  EXPECT_EQ([button_ image], image);
48}
49
50// Test mouse events.
51TEST_F(HoverImageButtonTest, Opacity) {
52  ResourceBundle& rb = ResourceBundle::GetSharedInstance();
53  NSImage* image = rb.GetNativeImageNamed(IDR_HOME);
54  [button_ setDefaultImage:image];
55  [button_ setDefaultOpacity:0.5];
56  [button_ setHoverImage:image];
57  [button_ setHoverOpacity:1.0];
58
59  [button_ mouseEntered:nil];
60  [button_ drawRect:[button_ frame]];
61  EXPECT_EQ([button_ alphaValue], 1.0);
62  [button_ mouseExited:nil];
63  [button_ drawRect:[button_ frame]];
64  EXPECT_EQ([button_ alphaValue], 0.5);
65}
66
67}  // namespace
68