1 // Copyright (c) 2013 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 "ui/message_center/cocoa/status_item_view.h" 6 7 #include "base/mac/scoped_nsobject.h" 8 #import "ui/gfx/test/ui_cocoa_test_helper.h" 9 10 class StatusItemViewTest : public ui::CocoaTest { 11 public: 12 StatusItemViewTest() 13 : view_([[MCStatusItemView alloc] init]) { 14 } 15 16 virtual void SetUp() OVERRIDE { 17 ui::CocoaTest::SetUp(); 18 [[test_window() contentView] addSubview:view_]; 19 } 20 21 virtual void TearDown() OVERRIDE { 22 [view_ removeItem]; 23 ui::CocoaTest::TearDown(); 24 } 25 26 protected: 27 base::scoped_nsobject<MCStatusItemView> view_; 28 }; 29 30 // These tests are like TEST_VIEW() but set some of the properties. 31 32 TEST_F(StatusItemViewTest, Callback) { 33 __block BOOL got_callback = NO; 34 [view_ setCallback:^{ 35 got_callback = YES; 36 }]; 37 [view_ mouseDown:nil]; 38 EXPECT_TRUE(got_callback); 39 [view_ mouseUp:nil]; 40 41 got_callback = NO; 42 [view_ rightMouseDown:nil]; 43 EXPECT_TRUE(got_callback); 44 [view_ rightMouseUp:nil]; 45 46 got_callback = NO; 47 [view_ otherMouseDown:nil]; 48 EXPECT_TRUE(got_callback); 49 [view_ otherMouseUp:nil]; 50 } 51 52 TEST_F(StatusItemViewTest, UnreadCount) { 53 CGFloat initial_width = NSWidth([view_ frame]); 54 55 [view_ setUnreadCount:2 withQuietMode:NO]; 56 [view_ display]; 57 EXPECT_EQ(NSWidth([view_ frame]), initial_width); 58 59 [view_ setUnreadCount:0 withQuietMode:NO]; 60 [view_ display]; 61 EXPECT_EQ(NSWidth([view_ frame]), initial_width); 62 63 [view_ setUnreadCount:1000 withQuietMode:YES]; 64 [view_ display]; 65 EXPECT_EQ(NSWidth([view_ frame]), initial_width); 66 67 [view_ setUnreadCount:0 withQuietMode:YES]; 68 [view_ display]; 69 EXPECT_EQ(NSWidth([view_ frame]), initial_width); 70 } 71 72 TEST_F(StatusItemViewTest, Highlight) { 73 [view_ setHighlight:YES]; 74 [view_ display]; 75 [view_ setHighlight:NO]; 76 [view_ display]; 77 } 78 79 TEST_F(StatusItemViewTest, HighlightAndMouseEvent) { 80 [view_ mouseDown:nil]; 81 [view_ display]; 82 [view_ setHighlight:YES]; 83 [view_ display]; 84 [view_ mouseUp:nil]; 85 [view_ display]; 86 [view_ setHighlight:NO]; 87 [view_ display]; 88 } 89