tab_view_unittest.mm revision 72a454cd3513ac24fbdd0e0cb9ad70b86a99b801
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 "base/scoped_nsobject.h"
8#import "chrome/browser/ui/cocoa/cocoa_test_helper.h"
9#import "chrome/browser/ui/cocoa/tabs/tab_view.h"
10#include "testing/gtest/include/gtest/gtest.h"
11#include "testing/platform_test.h"
12
13namespace {
14
15class TabViewTest : public CocoaTest {
16 public:
17  TabViewTest() {
18    NSRect frame = NSMakeRect(0, 0, 50, 30);
19    scoped_nsobject<TabView> view([[TabView alloc] initWithFrame:frame]);
20    view_ = view.get();
21    [[test_window() contentView] addSubview:view_];
22  }
23
24  TabView* view_;
25};
26
27TEST_VIEW(TabViewTest, view_)
28
29// Test drawing, mostly to ensure nothing leaks or crashes.
30TEST_F(TabViewTest, Display) {
31  for (int i = 0; i < 5; i++) {
32    for (int j = 0; j < 5; j++) {
33      [view_ setHoverAlpha:i*0.2];
34      [view_ setAlertAlpha:j*0.2];
35      [view_ display];
36    }
37  }
38}
39
40// Test it doesn't crash when asked for its menu with no TabController set.
41TEST_F(TabViewTest, Menu) {
42  EXPECT_FALSE([view_ menu]);
43}
44
45TEST_F(TabViewTest, Glow) {
46  // TODO(viettrungluu): Figure out how to test this, which is timing-sensitive
47  // and which moreover uses |-performSelector:withObject:afterDelay:|.
48
49  // Call |-startAlert|/|-cancelAlert| and make sure it doesn't crash.
50  for (int i = 0; i < 5; i++) {
51    [view_ startAlert];
52    [view_ cancelAlert];
53  }
54  [view_ startAlert];
55  [view_ startAlert];
56  [view_ cancelAlert];
57  [view_ cancelAlert];
58}
59
60}  // namespace
61