1ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org// Copyright 2014 the V8 project authors. All rights reserved. 2ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org// Use of this source code is governed by a BSD-style license that can be 3ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org// found in the LICENSE file. 4ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 5ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org#include "src/libplatform/default-platform.h" 6ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org#include "testing/gmock/include/gmock/gmock.h" 7ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 8ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgusing testing::InSequence; 9ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgusing testing::StrictMock; 10ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 11ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgnamespace v8 { 12ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgnamespace platform { 13ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 14ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgnamespace { 15ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 16ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgstruct MockTask : public Task { 17ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org virtual ~MockTask() { Die(); } 18ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org MOCK_METHOD0(Run, void()); 19ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org MOCK_METHOD0(Die, void()); 20ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org}; 21ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 22ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} // namespace 23ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 24ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 25ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.orgTEST(DefaultPlatformTest, PumpMessageLoop) { 26ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org InSequence s; 27ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 28ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org int dummy; 29ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org Isolate* isolate = reinterpret_cast<Isolate*>(&dummy); 30ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 31ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org DefaultPlatform platform; 32ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org EXPECT_FALSE(platform.PumpMessageLoop(isolate)); 33ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 34ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org StrictMock<MockTask>* task = new StrictMock<MockTask>; 35ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org platform.CallOnForegroundThread(isolate, task); 36ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org EXPECT_CALL(*task, Run()); 37ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org EXPECT_CALL(*task, Die()); 38ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org EXPECT_TRUE(platform.PumpMessageLoop(isolate)); 39ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org EXPECT_FALSE(platform.PumpMessageLoop(isolate)); 40ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} 41ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org 42ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} // namespace platform 43ada3a6017e603965f87fa34f6e2fa60379e8d697machenbach@chromium.org} // namespace v8 44