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  // talk_base::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  // talk_base::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