cc: Added inline to Tile::IsReadyToDraw
[chromium-blink-merge.git] / ui / message_center / message_center_impl_unittest.cc
bloba7c08a8aeb51c81ef83d61b4bcb289d1fa40f738
1 // Copyright 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.
5 #include "ui/message_center/message_center_impl.h"
7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h"
10 #include "base/strings/utf_string_conversions.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "ui/message_center/message_center.h"
13 #include "ui/message_center/notification_types.h"
15 namespace message_center {
16 namespace {
18 class MessageCenterImplTest : public testing::Test,
19 public MessageCenterObserver {
20 public:
21 MessageCenterImplTest() {}
23 virtual void SetUp() OVERRIDE {
24 MessageCenter::Initialize();
25 message_center_ = MessageCenter::Get();
26 loop_.reset(new base::MessageLoop(base::MessageLoop::TYPE_DEFAULT));
27 run_loop_.reset(new base::RunLoop());
28 closure_ = run_loop_->QuitClosure();
31 virtual void TearDown() OVERRIDE {
32 run_loop_.reset();
33 loop_.reset();
34 message_center_ = NULL;
35 MessageCenter::Shutdown();
38 MessageCenter* message_center() const { return message_center_; }
39 base::RunLoop* run_loop() const { return run_loop_.get(); }
40 base::Closure closure() const { return closure_; }
42 private:
43 MessageCenter* message_center_;
44 scoped_ptr<base::MessageLoop> loop_;
45 scoped_ptr<base::RunLoop> run_loop_;
46 base::Closure closure_;
48 DISALLOW_COPY_AND_ASSIGN(MessageCenterImplTest);
51 } // namespace
53 namespace internal {
55 class MockPopupTimersController : public PopupTimersController {
56 public:
57 MockPopupTimersController(MessageCenter* message_center,
58 base::Closure quit_closure)
59 : PopupTimersController(message_center),
60 timer_finished_(false),
61 quit_closure_(quit_closure) {}
62 virtual ~MockPopupTimersController() {}
64 virtual void TimerFinished(const std::string& id) OVERRIDE {
65 LOG(INFO) << "In timer finished for id " << id;
66 base::MessageLoop::current()->PostTask(FROM_HERE, quit_closure_);
67 timer_finished_ = true;
68 last_id_ = id;
71 bool timer_finished() const { return timer_finished_; }
72 const std::string& last_id() const { return last_id_; }
74 private:
75 bool timer_finished_;
76 std::string last_id_;
77 base::Closure quit_closure_;
80 TEST_F(MessageCenterImplTest, PopupTimersEmptyController) {
81 scoped_ptr<PopupTimersController> popup_timers_controller =
82 make_scoped_ptr(new PopupTimersController(message_center()));
84 // Test that all functions succed without any timers created.
85 popup_timers_controller->PauseAll();
86 popup_timers_controller->StartAll();
87 popup_timers_controller->CancelAll();
88 popup_timers_controller->TimerFinished("unknown");
89 popup_timers_controller->PauseTimer("unknown");
90 popup_timers_controller->CancelTimer("unknown");
93 TEST_F(MessageCenterImplTest, PopupTimersControllerStartTimer) {
94 scoped_ptr<MockPopupTimersController> popup_timers_controller =
95 make_scoped_ptr(
96 new MockPopupTimersController(message_center(), closure()));
97 popup_timers_controller->StartTimer("test",
98 base::TimeDelta::FromMilliseconds(1));
99 run_loop()->Run();
100 EXPECT_TRUE(popup_timers_controller->timer_finished());
103 TEST_F(MessageCenterImplTest, PopupTimersControllerPauseTimer) {
104 scoped_ptr<MockPopupTimersController> popup_timers_controller =
105 make_scoped_ptr(
106 new MockPopupTimersController(message_center(), closure()));
107 popup_timers_controller->StartTimer("test",
108 base::TimeDelta::FromMilliseconds(1));
109 popup_timers_controller->PauseTimer("test");
110 run_loop()->RunUntilIdle();
112 EXPECT_FALSE(popup_timers_controller->timer_finished());
115 TEST_F(MessageCenterImplTest, PopupTimersControllerCancelTimer) {
116 scoped_ptr<MockPopupTimersController> popup_timers_controller =
117 make_scoped_ptr(
118 new MockPopupTimersController(message_center(), closure()));
119 popup_timers_controller->StartTimer("test",
120 base::TimeDelta::FromMilliseconds(1));
121 popup_timers_controller->CancelTimer("test");
122 run_loop()->RunUntilIdle();
124 EXPECT_FALSE(popup_timers_controller->timer_finished());
127 TEST_F(MessageCenterImplTest, PopupTimersControllerPauseAllTimers) {
128 scoped_ptr<MockPopupTimersController> popup_timers_controller =
129 make_scoped_ptr(
130 new MockPopupTimersController(message_center(), closure()));
131 popup_timers_controller->StartTimer("test",
132 base::TimeDelta::FromMilliseconds(1));
133 popup_timers_controller->PauseAll();
134 run_loop()->RunUntilIdle();
136 EXPECT_FALSE(popup_timers_controller->timer_finished());
139 TEST_F(MessageCenterImplTest, PopupTimersControllerStartAllTimers) {
140 scoped_ptr<MockPopupTimersController> popup_timers_controller =
141 make_scoped_ptr(
142 new MockPopupTimersController(message_center(), closure()));
143 popup_timers_controller->StartTimer("test",
144 base::TimeDelta::FromMilliseconds(1));
145 popup_timers_controller->PauseAll();
146 popup_timers_controller->StartAll();
147 run_loop()->Run();
149 EXPECT_TRUE(popup_timers_controller->timer_finished());
152 TEST_F(MessageCenterImplTest, PopupTimersControllerStartMultipleTimers) {
153 scoped_ptr<MockPopupTimersController> popup_timers_controller =
154 make_scoped_ptr(
155 new MockPopupTimersController(message_center(), closure()));
156 popup_timers_controller->StartTimer("test",
157 base::TimeDelta::FromMilliseconds(5));
158 popup_timers_controller->StartTimer("test2",
159 base::TimeDelta::FromMilliseconds(1));
160 popup_timers_controller->StartTimer("test3",
161 base::TimeDelta::FromMilliseconds(3));
162 popup_timers_controller->PauseAll();
163 popup_timers_controller->StartAll();
164 run_loop()->Run();
166 EXPECT_EQ(popup_timers_controller->last_id(), "test2");
167 EXPECT_TRUE(popup_timers_controller->timer_finished());
170 TEST_F(MessageCenterImplTest, PopupTimersControllerStartMultipleTimersPause) {
171 scoped_ptr<MockPopupTimersController> popup_timers_controller =
172 make_scoped_ptr(
173 new MockPopupTimersController(message_center(), closure()));
174 popup_timers_controller->StartTimer("test",
175 base::TimeDelta::FromMilliseconds(5));
176 popup_timers_controller->StartTimer("test2",
177 base::TimeDelta::FromMilliseconds(1));
178 popup_timers_controller->StartTimer("test3",
179 base::TimeDelta::FromMilliseconds(3));
180 popup_timers_controller->PauseTimer("test2");
182 run_loop()->Run();
184 EXPECT_EQ(popup_timers_controller->last_id(), "test3");
185 EXPECT_TRUE(popup_timers_controller->timer_finished());
188 TEST_F(MessageCenterImplTest, PopupTimersControllerResetTimer) {
189 scoped_ptr<MockPopupTimersController> popup_timers_controller =
190 make_scoped_ptr(
191 new MockPopupTimersController(message_center(), closure()));
192 popup_timers_controller->StartTimer("test",
193 base::TimeDelta::FromMilliseconds(5));
194 popup_timers_controller->StartTimer("test2",
195 base::TimeDelta::FromMilliseconds(1));
196 popup_timers_controller->StartTimer("test3",
197 base::TimeDelta::FromMilliseconds(3));
198 popup_timers_controller->PauseTimer("test2");
199 popup_timers_controller->ResetTimer("test",
200 base::TimeDelta::FromMilliseconds(2));
202 run_loop()->Run();
204 EXPECT_EQ(popup_timers_controller->last_id(), "test");
205 EXPECT_TRUE(popup_timers_controller->timer_finished());
208 } // namespace internal
210 } // namespace message_center