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