Home | History | Annotate | Download | only in base
      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:
     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 
     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 
     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