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

Side by Side Diff: base/sequence_checker_unittest.cc

Issue 1479473002: base: Use std::move() instead of Pass() for real movable types. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/sequence_checker.h"
Lei Zhang 2015/11/25 00:55:04 I remember the rule being: for unit tests, they st
danakj 2015/11/25 01:01:45 I don't remember it being any other way since I st
6
7 #include <utility>
8
5 #include "base/basictypes.h" 9 #include "base/basictypes.h"
6 #include "base/bind.h" 10 #include "base/bind.h"
7 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
8 #include "base/location.h" 12 #include "base/location.h"
9 #include "base/logging.h" 13 #include "base/logging.h"
10 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h" 15 #include "base/memory/scoped_ptr.h"
12 #include "base/sequence_checker.h"
13 #include "base/single_thread_task_runner.h" 16 #include "base/single_thread_task_runner.h"
14 #include "base/test/sequenced_worker_pool_owner.h" 17 #include "base/test/sequenced_worker_pool_owner.h"
15 #include "base/threading/thread.h" 18 #include "base/threading/thread.h"
16 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
17 20
18 // Duplicated from base/sequence_checker.h so that we can be good citizens 21 // Duplicated from base/sequence_checker.h so that we can be good citizens
19 // there and undef the macro. 22 // there and undef the macro.
20 #if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)) 23 #if (!defined(NDEBUG) || defined(DCHECK_ALWAYS_ON))
21 #define ENABLE_SEQUENCE_CHECKER 1 24 #define ENABLE_SEQUENCE_CHECKER 1
22 #else 25 #else
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 126
124 // Verify that the destructor doesn't assert. 127 // Verify that the destructor doesn't assert.
125 sequence_checked_object.reset(); 128 sequence_checked_object.reset();
126 } 129 }
127 130
128 TEST_F(SequenceCheckerTest, DestructorAllowedOnDifferentThread) { 131 TEST_F(SequenceCheckerTest, DestructorAllowedOnDifferentThread) {
129 scoped_ptr<SequenceCheckedObject> sequence_checked_object( 132 scoped_ptr<SequenceCheckedObject> sequence_checked_object(
130 new SequenceCheckedObject); 133 new SequenceCheckedObject);
131 134
132 // Verify the destructor doesn't assert when called on a different thread. 135 // Verify the destructor doesn't assert when called on a different thread.
133 PostDeleteToOtherThread(sequence_checked_object.Pass()); 136 PostDeleteToOtherThread(std::move(sequence_checked_object));
134 other_thread()->Stop(); 137 other_thread()->Stop();
135 } 138 }
136 139
137 TEST_F(SequenceCheckerTest, DetachFromSequence) { 140 TEST_F(SequenceCheckerTest, DetachFromSequence) {
138 scoped_ptr<SequenceCheckedObject> sequence_checked_object( 141 scoped_ptr<SequenceCheckedObject> sequence_checked_object(
139 new SequenceCheckedObject); 142 new SequenceCheckedObject);
140 143
141 // Verify that DoStuff doesn't assert when called on a different thread after 144 // Verify that DoStuff doesn't assert when called on a different thread after
142 // a call to DetachFromSequence. 145 // a call to DetachFromSequence.
143 sequence_checked_object->DetachFromSequence(); 146 sequence_checked_object->DetachFromSequence();
144 147
145 PostDoStuffToOtherThread(sequence_checked_object.get()); 148 PostDoStuffToOtherThread(sequence_checked_object.get());
146 other_thread()->Stop(); 149 other_thread()->Stop();
147 } 150 }
148 151
149 TEST_F(SequenceCheckerTest, SameSequenceTokenValid) { 152 TEST_F(SequenceCheckerTest, SameSequenceTokenValid) {
150 scoped_ptr<SequenceCheckedObject> sequence_checked_object( 153 scoped_ptr<SequenceCheckedObject> sequence_checked_object(
151 new SequenceCheckedObject); 154 new SequenceCheckedObject);
152 155
153 sequence_checked_object->DetachFromSequence(); 156 sequence_checked_object->DetachFromSequence();
154 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A"); 157 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A");
155 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A"); 158 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A");
156 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A"); 159 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A");
157 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A"); 160 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A");
158 pool()->FlushForTesting(); 161 pool()->FlushForTesting();
159 162
160 PostDeleteToOtherThread(sequence_checked_object.Pass()); 163 PostDeleteToOtherThread(std::move(sequence_checked_object));
161 other_thread()->Stop(); 164 other_thread()->Stop();
162 } 165 }
163 166
164 TEST_F(SequenceCheckerTest, DetachSequenceTokenValid) { 167 TEST_F(SequenceCheckerTest, DetachSequenceTokenValid) {
165 scoped_ptr<SequenceCheckedObject> sequence_checked_object( 168 scoped_ptr<SequenceCheckedObject> sequence_checked_object(
166 new SequenceCheckedObject); 169 new SequenceCheckedObject);
167 170
168 sequence_checked_object->DetachFromSequence(); 171 sequence_checked_object->DetachFromSequence();
169 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A"); 172 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A");
170 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A"); 173 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A");
171 pool()->FlushForTesting(); 174 pool()->FlushForTesting();
172 175
173 sequence_checked_object->DetachFromSequence(); 176 sequence_checked_object->DetachFromSequence();
174 PostDoStuffToWorkerPool(sequence_checked_object.get(), "B"); 177 PostDoStuffToWorkerPool(sequence_checked_object.get(), "B");
175 PostDoStuffToWorkerPool(sequence_checked_object.get(), "B"); 178 PostDoStuffToWorkerPool(sequence_checked_object.get(), "B");
176 pool()->FlushForTesting(); 179 pool()->FlushForTesting();
177 180
178 PostDeleteToOtherThread(sequence_checked_object.Pass()); 181 PostDeleteToOtherThread(std::move(sequence_checked_object));
179 other_thread()->Stop(); 182 other_thread()->Stop();
180 } 183 }
181 184
182 #if GTEST_HAS_DEATH_TEST || !ENABLE_SEQUENCE_CHECKER 185 #if GTEST_HAS_DEATH_TEST || !ENABLE_SEQUENCE_CHECKER
183 186
184 void SequenceCheckerTest::MethodOnDifferentThreadDeathTest() { 187 void SequenceCheckerTest::MethodOnDifferentThreadDeathTest() {
185 scoped_ptr<SequenceCheckedObject> sequence_checked_object( 188 scoped_ptr<SequenceCheckedObject> sequence_checked_object(
186 new SequenceCheckedObject); 189 new SequenceCheckedObject);
187 190
188 // DoStuff should assert in debug builds only when called on a 191 // DoStuff should assert in debug builds only when called on a
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 scoped_ptr<SequenceCheckedObject> sequence_checked_object( 241 scoped_ptr<SequenceCheckedObject> sequence_checked_object(
239 new SequenceCheckedObject); 242 new SequenceCheckedObject);
240 243
241 sequence_checked_object->DetachFromSequence(); 244 sequence_checked_object->DetachFromSequence();
242 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A"); 245 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A");
243 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A"); 246 PostDoStuffToWorkerPool(sequence_checked_object.get(), "A");
244 PostDoStuffToWorkerPool(sequence_checked_object.get(), "B"); 247 PostDoStuffToWorkerPool(sequence_checked_object.get(), "B");
245 PostDoStuffToWorkerPool(sequence_checked_object.get(), "B"); 248 PostDoStuffToWorkerPool(sequence_checked_object.get(), "B");
246 pool()->FlushForTesting(); 249 pool()->FlushForTesting();
247 250
248 PostDeleteToOtherThread(sequence_checked_object.Pass()); 251 PostDeleteToOtherThread(std::move(sequence_checked_object));
249 other_thread()->Stop(); 252 other_thread()->Stop();
250 } 253 }
251 254
252 #if ENABLE_SEQUENCE_CHECKER 255 #if ENABLE_SEQUENCE_CHECKER
253 TEST_F(SequenceCheckerTest, DifferentSequenceTokensDeathTestInDebug) { 256 TEST_F(SequenceCheckerTest, DifferentSequenceTokensDeathTestInDebug) {
254 // The default style "fast" does not support multi-threaded tests. 257 // The default style "fast" does not support multi-threaded tests.
255 ::testing::FLAGS_gtest_death_test_style = "threadsafe"; 258 ::testing::FLAGS_gtest_death_test_style = "threadsafe";
256 ASSERT_DEATH({ 259 ASSERT_DEATH({
257 DifferentSequenceTokensDeathTest(); 260 DifferentSequenceTokensDeathTest();
258 }, ""); 261 }, "");
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 #endif // ENABLE_SEQUENCE_CHECKER 327 #endif // ENABLE_SEQUENCE_CHECKER
325 328
326 #endif // GTEST_HAS_DEATH_TEST || !ENABLE_SEQUENCE_CHECKER 329 #endif // GTEST_HAS_DEATH_TEST || !ENABLE_SEQUENCE_CHECKER
327 330
328 } // namespace 331 } // namespace
329 332
330 } // namespace base 333 } // namespace base
331 334
332 // Just in case we ever get lumped together with other compilation units. 335 // Just in case we ever get lumped together with other compilation units.
333 #undef ENABLE_SEQUENCE_CHECKER 336 #undef ENABLE_SEQUENCE_CHECKER
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698