• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/scoped_ptr.h"
6 #include "base/task.h"
7 
8 #include "testing/gtest/include/gtest/gtest.h"
9 
10 namespace {
11 
12 class HelperObject {
13  public:
HelperObject()14   HelperObject() : next_number_(0) { }
GetNextNumber()15   int GetNextNumber() { return ++next_number_; }
GetNextNumberArg(int * number)16   void GetNextNumberArg(int* number) { *number = GetNextNumber(); }
17 
18  private:
19   int next_number_;
20 };
21 
22 }  // namespace
23 
TEST(Task,OneArg)24 TEST(Task, 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 
TEST(Task,ReturnValue)34 TEST(Task, 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