callback_helper_unittest.cc revision 0529e5d033099cbfc42635f6f6183833b09dff6e
1// Copyright 2014 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 "chrome/browser/sync_file_system/drive_backend/callback_helper.h"
6
7#include "base/message_loop/message_loop.h"
8#include "base/run_loop.h"
9#include "testing/gtest/include/gtest/gtest.h"
10
11namespace sync_file_system {
12namespace drive_backend {
13
14namespace {
15
16void SimpleCallback(bool* called, int) {
17  ASSERT_TRUE(called);
18  EXPECT_FALSE(*called);
19  *called = true;
20}
21
22void CallbackWithPassed(bool* called, scoped_ptr<int>) {
23  ASSERT_TRUE(called);
24  EXPECT_FALSE(*called);
25  *called = true;
26}
27
28}  // namespace
29
30TEST(DriveBackendCallbackHelperTest, CreateRelayedCallbackTest) {
31  base::MessageLoop message_loop;
32
33  bool called = false;
34  CreateRelayedCallback(base::Bind(&SimpleCallback, &called)).Run(0);
35  EXPECT_FALSE(called);
36  base::RunLoop().RunUntilIdle();
37  EXPECT_TRUE(called);
38
39  called = false;
40  CreateRelayedCallback(
41      base::Bind(&CallbackWithPassed, &called))
42      .Run(scoped_ptr<int>(new int));
43  EXPECT_FALSE(called);
44  base::RunLoop().RunUntilIdle();
45  EXPECT_TRUE(called);
46}
47
48}  // namespace drive_backend
49}  // namespace sync_file_system
50