Chromium Code Reviews| Index: base/task_scheduler/delayed_task_manager_unittest.cc |
| diff --git a/base/task_scheduler/delayed_task_manager_unittest.cc b/base/task_scheduler/delayed_task_manager_unittest.cc |
| index 8e6061d9c6b61d83985af9085ca74ca68e23b061..ce8cc0ea1f7f566c1fabd9f2dd77a808fdc59c4c 100644 |
| --- a/base/task_scheduler/delayed_task_manager_unittest.cc |
| +++ b/base/task_scheduler/delayed_task_manager_unittest.cc |
| @@ -42,8 +42,7 @@ class MockTaskTarget { |
| class TaskSchedulerDelayedTaskManagerTest : public testing::Test { |
| public: |
| TaskSchedulerDelayedTaskManagerTest() |
| - : service_thread_task_runner_(new TestMockTimeTaskRunner), |
| - delayed_task_manager_(service_thread_task_runner_) {} |
| + : service_thread_task_runner_(new TestMockTimeTaskRunner) {} |
| ~TaskSchedulerDelayedTaskManagerTest() override = default; |
| protected: |
| @@ -56,8 +55,52 @@ class TaskSchedulerDelayedTaskManagerTest : public testing::Test { |
| } // namespace |
| -// Verify that a delayed task isn't forwarded before it is ripe for execution. |
| +// Verify that a delayed task isn't forwarded before Start(). |
| +TEST_F(TaskSchedulerDelayedTaskManagerTest, DelayedTaskDoesNotRunBeforeStart) { |
| + auto task = |
| + MakeUnique<Task>(FROM_HERE, Bind(&DoNothing), TaskTraits(), kLongDelay); |
| + |
| + testing::StrictMock<MockTaskTarget> task_target; |
| + |
| + // Send |task| to the DelayedTaskManager. |
| + delayed_task_manager_.AddDelayedTask( |
| + std::move(task), |
| + Bind(&MockTaskTarget::PostTaskNowCallback, Unretained(&task_target))); |
|
gab
2017/04/12 19:15:51
BindOnce
fdoray
2017/04/19 15:37:55
Done.
|
| + |
| + // Fast-forward time. Don't expect any forwarding to |task_target|. |
|
gab
2017/04/12 19:15:51
What ensures this? Shouldn't your task trigger a f
fdoray
2017/04/19 15:37:55
Done.
|
| + service_thread_task_runner_->FastForwardBy(kLongDelay); |
| +} |
| + |
| +// Verify that a delayed task added before Start() is forwarded when it is ripe |
| +// for execution and Start() is called. |
| +TEST_F(TaskSchedulerDelayedTaskManagerTest, |
| + DelayedTaskPostedBeforeStartRunsAfterStart) { |
| + auto task = |
| + MakeUnique<Task>(FROM_HERE, Bind(&DoNothing), TaskTraits(), kLongDelay); |
| + const Task* task_raw = task.get(); |
| + |
| + testing::StrictMock<MockTaskTarget> task_target; |
| + |
| + // Send |task| to the DelayedTaskManager. |
| + delayed_task_manager_.AddDelayedTask( |
| + std::move(task), |
| + Bind(&MockTaskTarget::PostTaskNowCallback, Unretained(&task_target))); |
| + |
| + delayed_task_manager_.Start(service_thread_task_runner_); |
| + |
| + // Run tasks on the service thread. Don't expect any forwarding to |
| + // |task_target| since the task isn't ripe for execution. |
| + service_thread_task_runner_->RunUntilIdle(); |
| + |
| + // Fast-forward time. Expect the task to be forwarded to |task_target|. |
| + EXPECT_CALL(task_target, DoPostTaskNowCallback(task_raw)); |
| + service_thread_task_runner_->FastForwardBy(kLongDelay); |
| +} |
|
gab
2017/04/12 19:15:51
Also test that task that became ripe before start
fdoray
2017/04/19 15:37:55
Done.
|
| + |
| +// Verify that a delayed task added after Start() isn't forwarded before it is |
| +// ripe for execution. |
| TEST_F(TaskSchedulerDelayedTaskManagerTest, DelayedTaskDoesNotRunTooEarly) { |
| + delayed_task_manager_.Start(service_thread_task_runner_); |
| auto task = |
| MakeUnique<Task>(FROM_HERE, Bind(&DoNothing), TaskTraits(), kLongDelay); |
| @@ -73,8 +116,10 @@ TEST_F(TaskSchedulerDelayedTaskManagerTest, DelayedTaskDoesNotRunTooEarly) { |
| service_thread_task_runner_->RunUntilIdle(); |
| } |
| -// Verify that a delayed task is forwarded when it is ripe for execution. |
| +// Verify that a delayed task added after Start() is forwarded when it is ripe |
| +// for execution. |
| TEST_F(TaskSchedulerDelayedTaskManagerTest, DelayedTaskRunsAfterDelay) { |
| + delayed_task_manager_.Start(service_thread_task_runner_); |
| auto task = |
| MakeUnique<Task>(FROM_HERE, Bind(&DoNothing), TaskTraits(), kLongDelay); |
| const Task* task_raw = task.get(); |
| @@ -91,9 +136,10 @@ TEST_F(TaskSchedulerDelayedTaskManagerTest, DelayedTaskRunsAfterDelay) { |
| service_thread_task_runner_->FastForwardBy(kLongDelay); |
| } |
| -// Verify that multiple delayed tasks are forwarded when they are ripe for |
| -// execution. |
| +// Verify that multiple delayed tasks added after Start() are forwarded when |
| +// they are ripe for execution. |
| TEST_F(TaskSchedulerDelayedTaskManagerTest, DelayedTasksRunAfterDelay) { |
| + delayed_task_manager_.Start(service_thread_task_runner_); |
| auto task_a = MakeUnique<Task>(FROM_HERE, Bind(&DoNothing), TaskTraits(), |
| TimeDelta::FromHours(1)); |
| const Task* task_a_raw = task_a.get(); |