• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2008 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/task.h"
6 #include "base/synchronization/waitable_event.h"
7 #include "base/threading/worker_pool.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "testing/platform_test.h"
10 
11 typedef PlatformTest WorkerPoolTest;
12 
13 namespace base {
14 
15 namespace {
16 
17 class PostTaskTestTask : public Task {
18  public:
PostTaskTestTask(WaitableEvent * event)19   explicit PostTaskTestTask(WaitableEvent* event) : event_(event) {
20   }
21 
Run()22   void Run() {
23     event_->Signal();
24   }
25 
26  private:
27   WaitableEvent* event_;
28 };
29 
30 }  // namespace
31 
TEST_F(WorkerPoolTest,PostTask)32 TEST_F(WorkerPoolTest, PostTask) {
33   WaitableEvent test_event(false, false);
34   WaitableEvent long_test_event(false, false);
35   bool signaled;
36 
37   WorkerPool::PostTask(FROM_HERE, new PostTaskTestTask(&test_event), false);
38   WorkerPool::PostTask(FROM_HERE, new PostTaskTestTask(&long_test_event), true);
39 
40   signaled = test_event.Wait();
41   EXPECT_TRUE(signaled);
42   signaled = long_test_event.Wait();
43   EXPECT_TRUE(signaled);
44 }
45 
46 }  // namespace base
47