callback_unittest.cc revision c407dc5cd9bdc5668497f21b26b09d988ab439de
1// Copyright (c) 2009 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 "base/callback.h"
6#include "base/scoped_ptr.h"
7
8#include "testing/gtest/include/gtest/gtest.h"
9
10namespace {
11
12class HelperObject {
13 public:
14  HelperObject() : next_number_(0) { }
15  int GetNextNumber() { return ++next_number_; }
16  void GetNextNumberArg(int* number) { *number = GetNextNumber(); }
17
18 private:
19  int next_number_;
20};
21
22}  // namespace
23
24TEST(Callback, OneArg) {
25  HelperObject obj;
26  scoped_ptr<Callback1<int*>::Type> callback(
27      NewCallback(&obj, &HelperObject::GetNextNumberArg));
28
29  int number = 0;
30  callback->Run(&number);
31  EXPECT_EQ(number, 1);
32}
33
34TEST(Callback, ReturnValue) {
35  HelperObject obj;
36  scoped_ptr<CallbackWithReturnValue<int>::Type> callback(
37      NewCallbackWithReturnValue(&obj, &HelperObject::GetNextNumber));
38
39  EXPECT_EQ(callback->Run(), 1);
40}
41