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