blob: d2c160e5587557c72c5c138e4a826784aaa4cdb9 [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 "src/libplatform/default-platform.h"
6#include "testing/gmock/include/gmock/gmock.h"
7
8using testing::InSequence;
9using testing::StrictMock;
10
11namespace v8 {
12namespace platform {
13
14namespace {
15
16struct MockTask : public Task {
17 virtual ~MockTask() { Die(); }
18 MOCK_METHOD0(Run, void());
19 MOCK_METHOD0(Die, void());
20};
21
22} // namespace
23
24
25TEST(DefaultPlatformTest, PumpMessageLoop) {
26 InSequence s;
27
28 int dummy;
29 Isolate* isolate = reinterpret_cast<Isolate*>(&dummy);
30
31 DefaultPlatform platform;
32 EXPECT_FALSE(platform.PumpMessageLoop(isolate));
33
34 StrictMock<MockTask>* task = new StrictMock<MockTask>;
35 platform.CallOnForegroundThread(isolate, task);
36 EXPECT_CALL(*task, Run());
37 EXPECT_CALL(*task, Die());
38 EXPECT_TRUE(platform.PumpMessageLoop(isolate));
39 EXPECT_FALSE(platform.PumpMessageLoop(isolate));
40}
41
42} // namespace platform
43} // namespace v8