1// Copyright (c) 2012 The Chromium 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 "jingle/glue/task_pump.h" 6 7#include "base/message_loop/message_loop.h" 8#include "jingle/glue/mock_task.h" 9#include "testing/gtest/include/gtest/gtest.h" 10 11namespace jingle_glue { 12 13namespace { 14 15using ::testing::Return; 16 17class TaskPumpTest : public testing::Test { 18 private: 19 base::MessageLoop message_loop_; 20}; 21 22TEST_F(TaskPumpTest, Basic) { 23 TaskPump task_pump; 24 MockTask* task = new MockTask(&task_pump); 25 // We have to do this since the state enum is protected in 26 // rtc::Task. 27 const int TASK_STATE_DONE = 2; 28 EXPECT_CALL(*task, ProcessStart()).WillOnce(Return(TASK_STATE_DONE)); 29 task->Start(); 30 31 base::MessageLoop::current()->RunUntilIdle(); 32} 33 34TEST_F(TaskPumpTest, Stop) { 35 TaskPump task_pump; 36 MockTask* task = new MockTask(&task_pump); 37 // We have to do this since the state enum is protected in 38 // rtc::Task. 39 const int TASK_STATE_ERROR = 3; 40 ON_CALL(*task, ProcessStart()).WillByDefault(Return(TASK_STATE_ERROR)); 41 EXPECT_CALL(*task, ProcessStart()).Times(0); 42 task->Start(); 43 44 task_pump.Stop(); 45 base::MessageLoop::current()->RunUntilIdle(); 46} 47 48} // namespace 49 50} // namespace jingle_glue 51