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

Side by Side Diff: base/test/scoped_task_environment_unittest.cc

Issue 2868093002: Add base::test::ScopedTaskEnvironment::RunUntilIdle(). (Closed)
Patch Set: Created 3 years, 7 months 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
(Empty)
1 // Copyright 2017 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/test/scoped_task_environment.h"
6
7 #include "base/bind.h"
8 #include "base/synchronization/atomic_flag.h"
9 #include "base/task_scheduler/post_task.h"
10 #include "base/threading/thread_task_runner_handle.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace base {
14 namespace test {
15
16 namespace {
17
18 void VerifyRunUntilIdleDidNotReturnAndSetFlag(
19 AtomicFlag* run_until_idle_returned,
20 AtomicFlag* task_ran) {
21 EXPECT_FALSE(run_until_idle_returned->IsSet());
22 task_ran->Set();
23 }
24
25 } // namespace
26
27 TEST(ScopedTaskEnvironmentTest, RunUntilIdle) {
28 AtomicFlag run_until_idle_returned;
29 ScopedTaskEnvironment scoped_task_environment;
30
31 AtomicFlag first_main_thread_task_ran;
32 ThreadTaskRunnerHandle::Get()->PostTask(
33 FROM_HERE, BindOnce(&VerifyRunUntilIdleDidNotReturnAndSetFlag,
34 Unretained(&run_until_idle_returned),
35 Unretained(&first_main_thread_task_ran)));
36
37 AtomicFlag first_task_scheduler_task_ran;
38 PostTask(FROM_HERE, BindOnce(&VerifyRunUntilIdleDidNotReturnAndSetFlag,
39 Unretained(&run_until_idle_returned),
40 Unretained(&first_task_scheduler_task_ran)));
41
42 AtomicFlag second_task_scheduler_task_ran;
43 AtomicFlag second_main_thread_task_ran;
44 PostTaskAndReply(FROM_HERE,
45 BindOnce(&VerifyRunUntilIdleDidNotReturnAndSetFlag,
46 Unretained(&run_until_idle_returned),
47 Unretained(&second_task_scheduler_task_ran)),
48 BindOnce(&VerifyRunUntilIdleDidNotReturnAndSetFlag,
49 Unretained(&run_until_idle_returned),
50 Unretained(&second_main_thread_task_ran)));
51
52 scoped_task_environment.RunUntilIdle();
53 run_until_idle_returned.Set();
54
55 EXPECT_TRUE(first_main_thread_task_ran.IsSet());
56 EXPECT_TRUE(first_task_scheduler_task_ran.IsSet());
57 EXPECT_TRUE(second_task_scheduler_task_ran.IsSet());
58 EXPECT_TRUE(second_main_thread_task_ran.IsSet());
59 }
60
61 } // namespace test
62 } // namespace base
OLDNEW
« base/test/scoped_task_environment.cc ('K') | « base/test/scoped_task_environment.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698