Home | History | Annotate | Download | only in libplatform
      1 // Copyright 2014 the V8 project 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 "include/v8-platform.h"
      6 #include "src/libplatform/task-queue.h"
      7 #include "src/libplatform/worker-thread.h"
      8 #include "testing/gmock/include/gmock/gmock.h"
      9 
     10 using testing::InSequence;
     11 using testing::IsNull;
     12 using testing::StrictMock;
     13 
     14 namespace v8 {
     15 namespace platform {
     16 
     17 namespace {
     18 
     19 struct MockTask : public Task {
     20   virtual ~MockTask() { Die(); }
     21   MOCK_METHOD0(Run, void());
     22   MOCK_METHOD0(Die, void());
     23 };
     24 
     25 }  // namespace
     26 
     27 
     28 TEST(WorkerThreadTest, Basic) {
     29   static const size_t kNumTasks = 10;
     30 
     31   TaskQueue queue;
     32   for (size_t i = 0; i < kNumTasks; ++i) {
     33     InSequence s;
     34     StrictMock<MockTask>* task = new StrictMock<MockTask>;
     35     EXPECT_CALL(*task, Run());
     36     EXPECT_CALL(*task, Die());
     37     queue.Append(task);
     38   }
     39 
     40   WorkerThread thread1(&queue);
     41   WorkerThread thread2(&queue);
     42 
     43   // TaskQueue DCHECKS that it's empty in its destructor.
     44   queue.Terminate();
     45 }
     46 
     47 }  // namespace platform
     48 }  // namespace v8
     49