blob: 175b31166691cb75644eafb807973237ffd7c483 [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// 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
10using testing::InSequence;
11using testing::IsNull;
12using testing::StrictMock;
13
14namespace v8 {
15namespace platform {
16
17namespace {
18
19struct MockTask : public Task {
20 virtual ~MockTask() { Die(); }
21 MOCK_METHOD0(Run, void());
22 MOCK_METHOD0(Die, void());
23};
24
25} // namespace
26
27
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