Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Side by Side Diff: base/cancelable_callback_unittest.cc

Issue 8673008: base::Bind: Implement CancelableCallback to replace CancelableTaske. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« base/cancelable_callback.cc ('K') | « base/cancelable_callback.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2011 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/cancelable_callback.h"
6 #include "testing/gtest/include/gtest/gtest.h"
7
8 namespace base {
9 namespace {
10
11 class HelperObject {
12 public:
13 HelperObject() : number_(0) { }
14 void IncrementNumber() { number_++; }
15 void IncrementNumberBy(int n) { number_ += n; }
16 int number() const { return number_; }
17
18 private:
19 int number_;
20 };
21
22 TEST(CancelableCallbackTest, Cancel) {
23 HelperObject obj;
24 CancelableCallback cancelable(base::Bind(&HelperObject::IncrementNumber,
25 base::Unretained(&obj)));
26
27 base::Closure callback = cancelable.callback();
28 callback.Run();
29 EXPECT_EQ(1, obj.number());
30
31 callback.Run();
32 EXPECT_EQ(2, obj.number());
33
34 cancelable.Cancel();
35 callback.Run();
36 EXPECT_EQ(2, obj.number());
37 }
38
39 TEST(CancelableCallbackTest, NArity) {
40 HelperObject obj;
41 CancelableCallback cancelable(
42 base::Bind(&HelperObject::IncrementNumberBy, base::Unretained(&obj), 5));
43
44 base::Closure callback = cancelable.callback();
45 callback.Run();
46 EXPECT_EQ(5, obj.number());
47
48 callback.Run();
49 EXPECT_EQ(10, obj.number());
50
51 cancelable.Cancel();
52 callback.Run();
53 EXPECT_EQ(10, obj.number());
54 }
55
56 TEST(CancelableCallbackTest, Destruction) {
groby-ooo-7-16 2011/11/23 02:14:12 CallbackCanceledOnDestruction would probably descr
James Hawkins 2011/11/23 03:59:08 Done.
57 HelperObject obj;
58 base::Closure callback;
59
60 {
61 CancelableCallback cancelable(base::Bind(&HelperObject::IncrementNumber,
62 base::Unretained(&obj)));
63
64 callback = cancelable.callback();
65 callback.Run();
66 EXPECT_EQ(1, obj.number());
67 }
68
69 callback.Run();
70 EXPECT_EQ(1, obj.number());
71 }
groby-ooo-7-16 2011/11/23 02:14:12 Can we add an example that uses PostTask? (Yes, it
James Hawkins 2011/11/23 03:59:08 Done.
72
73 } // namespace
74 } // namespace base
OLDNEW
« base/cancelable_callback.cc ('K') | « base/cancelable_callback.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698