diff options
Diffstat (limited to 'base/test/task_runner_test_template.cc')
-rw-r--r-- | base/test/task_runner_test_template.cc | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/base/test/task_runner_test_template.cc b/base/test/task_runner_test_template.cc new file mode 100644 index 0000000000..fe702472c7 --- /dev/null +++ b/base/test/task_runner_test_template.cc @@ -0,0 +1,47 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/test/task_runner_test_template.h" + +namespace base { + +namespace test { + +TaskTracker::TaskTracker() : task_runs_(0), task_runs_cv_(&lock_) {} + +TaskTracker::~TaskTracker() = default; + +Closure TaskTracker::WrapTask(const Closure& task, int i) { + return Bind(&TaskTracker::RunTask, this, task, i); +} + +void TaskTracker::RunTask(const Closure& task, int i) { + AutoLock lock(lock_); + if (!task.is_null()) { + task.Run(); + } + ++task_run_counts_[i]; + ++task_runs_; + task_runs_cv_.Signal(); +} + +std::map<int, int> TaskTracker::GetTaskRunCounts() const { + AutoLock lock(lock_); + return task_run_counts_; +} + +void TaskTracker::WaitForCompletedTasks(int count) { + AutoLock lock(lock_); + while (task_runs_ < count) + task_runs_cv_.Wait(); +} + +void ExpectRunsTasksInCurrentSequence(bool expected_value, + TaskRunner* task_runner) { + EXPECT_EQ(expected_value, task_runner->RunsTasksInCurrentSequence()); +} + +} // namespace test + +} // namespace base |