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)28TEST(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