• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 {
~MockTaskv8::platform::__anon6a86c9ef0111::MockTask20   virtual ~MockTask() { Die(); }
21   MOCK_METHOD0(Run, void());
22   MOCK_METHOD0(Die, void());
23 };
24 
25 }  // namespace
26 
27 
TEST(WorkerThreadTest,Basic)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