Index: base/task_scheduler/utils_unittest.cc |
diff --git a/base/task_scheduler/utils_unittest.cc b/base/task_scheduler/utils_unittest.cc |
index 6b3904b958d2e461d3d7e4ffac7b0f9ed70a1d54..b4f5b25c0e1fbe842d0e9c3898d8df31bfd7d192 100644 |
--- a/base/task_scheduler/utils_unittest.cc |
+++ b/base/task_scheduler/utils_unittest.cc |
@@ -10,29 +10,32 @@ |
#include "base/bind_helpers.h" |
#include "base/memory/ptr_util.h" |
#include "base/memory/ref_counted.h" |
+#include "base/task_scheduler/delayed_task_manager.h" |
#include "base/task_scheduler/priority_queue.h" |
#include "base/task_scheduler/sequence.h" |
#include "base/task_scheduler/task.h" |
#include "base/task_scheduler/task_tracker.h" |
+#include "base/time/time.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace base { |
namespace internal { |
namespace { |
-// Checks that when PostTaskHelper is called with an empty sequence, the task |
-// is added to the sequence and the sequence is added to the priority queue. |
-TEST(TaskSchedulerPostTaskHelperTest, PostTaskInEmptySequence) { |
+// Checks that when PostTaskHelper is called with an empty sequence, the task is |
+// added to the sequence and the sequence is added to the priority queue. |
+TEST(TaskSchedulerPostTaskNowHelperTest, PostTaskInEmptySequence) { |
gab
2016/04/12 13:35:48
This is using PostTaskHelper not PostTaskNowHelper
fdoray
2016/04/12 14:43:57
Done.
|
std::unique_ptr<Task> task( |
new Task(FROM_HERE, Bind(&DoNothing), TaskTraits())); |
const Task* task_raw = task.get(); |
scoped_refptr<Sequence> sequence(new Sequence); |
PriorityQueue priority_queue(Bind(&DoNothing)); |
TaskTracker task_tracker; |
+ DelayedTaskManager delayed_task_manager(Bind(&DoNothing)); |
// Post |task|. |
- EXPECT_TRUE(PostTaskHelper(std::move(task), sequence, &priority_queue, |
- &task_tracker)); |
+ PostTaskHelper(std::move(task), sequence, &priority_queue, &task_tracker, |
+ &delayed_task_manager); |
// Expect to find the sequence in the priority queue. |
EXPECT_EQ(sequence, priority_queue.BeginTransaction()->Peek().sequence); |
@@ -46,21 +49,22 @@ TEST(TaskSchedulerPostTaskHelperTest, PostTaskInEmptySequence) { |
// Checks that when PostTaskHelper is called with a sequence that already |
// contains a task, the task is added to the sequence but the sequence is not |
// added to the priority queue. |
-TEST(TaskSchedulerPostTaskHelperTest, PostTaskInNonEmptySequence) { |
+TEST(TaskSchedulerPostTaskNowHelperTest, PostTaskInNonEmptySequence) { |
std::unique_ptr<Task> task( |
new Task(FROM_HERE, Bind(&DoNothing), TaskTraits())); |
const Task* task_raw = task.get(); |
scoped_refptr<Sequence> sequence(new Sequence); |
PriorityQueue priority_queue(Bind(&DoNothing)); |
TaskTracker task_tracker; |
+ DelayedTaskManager delayed_task_manager(Bind(&DoNothing)); |
// Add an initial task in |sequence|. |
sequence->PushTask( |
WrapUnique(new Task(FROM_HERE, Bind(&DoNothing), TaskTraits()))); |
// Post |task|. |
- EXPECT_TRUE(PostTaskHelper(std::move(task), sequence, &priority_queue, |
- &task_tracker)); |
+ PostTaskHelper(std::move(task), sequence, &priority_queue, &task_tracker, |
+ &delayed_task_manager); |
// Expect to find the priority queue empty. |
EXPECT_TRUE(priority_queue.BeginTransaction()->Peek().is_null()); |
@@ -73,6 +77,30 @@ TEST(TaskSchedulerPostTaskHelperTest, PostTaskInNonEmptySequence) { |
EXPECT_EQ(nullptr, sequence->PeekTask()); |
} |
+// Checks that when PostTaskHelper is called with a delayed task, it is added to |
+// the DelayedTaskManager. |
+TEST(TaskSchedulerPostTaskNowHelperTest, PostDelayedTask) { |
+ const TimeTicks delayed_run_time = TimeTicks::Now() + TimeDelta::FromHours(1); |
+ std::unique_ptr<Task> task( |
+ new Task(FROM_HERE, Bind(&DoNothing), TaskTraits())); |
+ task->delayed_run_time = delayed_run_time; |
+ scoped_refptr<Sequence> sequence(new Sequence); |
+ PriorityQueue priority_queue(Bind(&DoNothing)); |
+ TaskTracker task_tracker; |
+ DelayedTaskManager delayed_task_manager(Bind(&DoNothing)); |
+ |
+ // Post |task|. |
+ PostTaskHelper(std::move(task), sequence, &priority_queue, &task_tracker, |
+ &delayed_task_manager); |
+ |
+ // Expect to find |priority_queue| and |sequence| empty. |
+ EXPECT_TRUE(priority_queue.BeginTransaction()->Peek().is_null()); |
+ EXPECT_EQ(nullptr, sequence->PeekTask()); |
+ |
+ // Expect the DelayedTaskManager's delayed run time to have been updated. |
+ EXPECT_EQ(delayed_run_time, delayed_task_manager.GetDelayedRunTime()); |
+} |
+ |
} // namespace |
} // namespace internal |
} // namespace base |