Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(264)

Side by Side Diff: base/task_queue_unittest.cc

Issue 8570022: base::Bind() conversion for chrome/browser/search_engines (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/task_queue.cc ('k') | chrome/browser/search_engines/search_provider_install_data.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 #include "base/basictypes.h"
6 #include "base/memory/scoped_ptr.h"
7 #include "base/task.h"
8 #include "base/task_queue.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace {
12
13 // Sets bools according to whether Run or the destructor were called.
14 class TrackCallsTask : public Task {
15 public:
16 TrackCallsTask(bool* ran, bool* deleted)
17 : ran_(ran),
18 deleted_(deleted) {
19 *ran_ = false;
20 *deleted_ = false;
21 }
22
23 virtual ~TrackCallsTask() {
24 *deleted_ = true;
25 }
26
27 virtual void Run() {
28 *ran_ = true;
29 }
30
31 private:
32 bool* ran_;
33 bool* deleted_;
34
35 DISALLOW_COPY_AND_ASSIGN(TrackCallsTask);
36 };
37
38 // Adds a given task to the queue when run.
39 class TaskQueuerTask : public Task {
40 public:
41 TaskQueuerTask(TaskQueue* queue, Task* task_to_queue)
42 : queue_(queue),
43 task_to_queue_(task_to_queue) {
44 }
45
46 virtual void Run() {
47 queue_->Push(task_to_queue_);
48 }
49
50 private:
51 TaskQueue* queue_;
52 Task* task_to_queue_;
53
54 DISALLOW_COPY_AND_ASSIGN(TaskQueuerTask);
55 };
56
57 } // namespace
58
59 TEST(TaskQueueTest, RunNoTasks) {
60 TaskQueue queue;
61 EXPECT_TRUE(queue.IsEmpty());
62
63 queue.Run();
64 EXPECT_TRUE(queue.IsEmpty());
65 }
66
67 TEST(TaskQueueTest, RunTasks) {
68 TaskQueue queue;
69
70 bool ran_task1 = false;
71 bool deleted_task1 = false;
72 queue.Push(new TrackCallsTask(&ran_task1, &deleted_task1));
73
74 bool ran_task2 = false;
75 bool deleted_task2 = false;
76 queue.Push(new TrackCallsTask(&ran_task2, &deleted_task2));
77
78 queue.Run();
79
80 EXPECT_TRUE(ran_task1);
81 EXPECT_TRUE(deleted_task1);
82 EXPECT_TRUE(ran_task2);
83 EXPECT_TRUE(deleted_task2);
84 EXPECT_TRUE(queue.IsEmpty());
85 }
86
87 TEST(TaskQueueTest, ClearTasks) {
88 TaskQueue queue;
89
90 bool ran_task1 = false;
91 bool deleted_task1 = false;
92 queue.Push(new TrackCallsTask(&ran_task1, &deleted_task1));
93
94 bool ran_task2 = false;
95 bool deleted_task2 = false;
96 queue.Push(new TrackCallsTask(&ran_task2, &deleted_task2));
97
98 queue.Clear();
99
100 EXPECT_TRUE(queue.IsEmpty());
101
102 queue.Run();
103
104 EXPECT_FALSE(ran_task1);
105 EXPECT_TRUE(deleted_task1);
106 EXPECT_FALSE(ran_task2);
107 EXPECT_TRUE(deleted_task2);
108 EXPECT_TRUE(queue.IsEmpty());
109 }
110
111 TEST(TaskQueueTest, OneTaskQueuesMore) {
112 TaskQueue main_queue;
113
114 // Build a task which will queue two more when run.
115 scoped_ptr<TaskQueue> nested_queue(new TaskQueue());
116 bool ran_task1 = false;
117 bool deleted_task1 = false;
118 nested_queue->Push(
119 new TaskQueuerTask(&main_queue,
120 new TrackCallsTask(&ran_task1, &deleted_task1)));
121 bool ran_task2 = false;
122 bool deleted_task2 = false;
123 nested_queue->Push(
124 new TaskQueuerTask(&main_queue,
125 new TrackCallsTask(&ran_task2, &deleted_task2)));
126
127 main_queue.Push(nested_queue.release());
128
129 // Run the task which pushes two more tasks.
130 main_queue.Run();
131
132 // None of the pushed tasks shoudl have run yet.
133 EXPECT_FALSE(ran_task1);
134 EXPECT_FALSE(deleted_task1);
135 EXPECT_FALSE(ran_task2);
136 EXPECT_FALSE(deleted_task2);
137 EXPECT_FALSE(main_queue.IsEmpty());
138
139 // Now run the nested tasks.
140 main_queue.Run();
141
142 EXPECT_TRUE(ran_task1);
143 EXPECT_TRUE(deleted_task1);
144 EXPECT_TRUE(ran_task2);
145 EXPECT_TRUE(deleted_task2);
146 EXPECT_TRUE(main_queue.IsEmpty());
147 }
OLDNEW
« no previous file with comments | « base/task_queue.cc ('k') | chrome/browser/search_engines/search_provider_install_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698