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

Side by Side Diff: media/base/callback_holder_unittest.cc

Issue 15085011: Add FakeVideoDecoder. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 months 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
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
scherkus (not reviewing) 2013/05/28 15:56:57 new file: 2013
xhwang 2013/05/28 19:34:10 Done.
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 "media/base/callback_holder.h"
scherkus (not reviewing) 2013/05/28 15:56:57 being the unit test this doesn't have to be first
xhwang 2013/05/28 19:34:10 Done.
6
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 namespace media {
10
11 static void SetBool(bool* var) {
12 DCHECK(!*var);
13 *var = true;
14 }
15
16 static void CopyVar(int var1, int* var2) {
17 DCHECK_NE(var1, *var2);
18 *var2 = var1;
19 }
20
21 TEST(CallbackHolderTest, SetAfterHold_Closure) {
22 CallbackHolder<base::Closure> cb;
23 EXPECT_TRUE(cb.IsNull());
24
25 cb.HoldCallback();
26
27 bool closure_called = false;
28 cb.SetCallback(base::Bind(&SetBool, &closure_called));
29 EXPECT_FALSE(cb.IsNull());
30
31 cb.RunOrHold();
32 EXPECT_FALSE(closure_called);
33
34 EXPECT_FALSE(cb.IsNull());
35 cb.RunHeldCallback();
36 EXPECT_TRUE(cb.IsNull());
37 EXPECT_TRUE(closure_called);
38 }
39
40 TEST(CallbackHolderTest, HoldAfterSet_Closure) {
41 CallbackHolder<base::Closure> cb;
42 EXPECT_TRUE(cb.IsNull());
43
44 bool closure_called = false;
45 cb.SetCallback(base::Bind(&SetBool, &closure_called));
46 EXPECT_FALSE(cb.IsNull());
47
48 cb.HoldCallback();
49
50 cb.RunOrHold();
51 EXPECT_FALSE(closure_called);
52 EXPECT_FALSE(cb.IsNull());
53 cb.RunHeldCallback();
54 EXPECT_TRUE(cb.IsNull());
55 EXPECT_TRUE(closure_called);
56 }
57
58 TEST(CallbackHolderTest, NotHold_Closure) {
59 CallbackHolder<base::Closure> cb;
60 EXPECT_TRUE(cb.IsNull());
61
62 bool closure_called = false;
63 cb.SetCallback(base::Bind(&SetBool, &closure_called));
64 EXPECT_FALSE(cb.IsNull());
65
66 cb.RunOrHold();
67 EXPECT_TRUE(cb.IsNull());
68 EXPECT_TRUE(closure_called);
69 }
70
71 TEST(CallbackHolderTest, SetAfterHold_Callback) {
72 CallbackHolder<base::Callback<void(int, int*)> > cb;
73 EXPECT_TRUE(cb.IsNull());
74
75 cb.HoldCallback();
76
77 cb.SetCallback(base::Bind(&CopyVar));
78 EXPECT_FALSE(cb.IsNull());
79
80 int var1 = 100;
81 int var2 = 0;
82 cb.RunOrHold(var1, &var2);
83 EXPECT_FALSE(cb.IsNull());
84 EXPECT_NE(var1, var2);
85
86 cb.RunHeldCallback();
87 EXPECT_TRUE(cb.IsNull());
88 EXPECT_EQ(var1, var2);
89 }
90
91 TEST(CallbackHolderTest, HoldAfterSet_Callback) {
92 CallbackHolder<base::Callback<void(int, int*)> > cb;
93 EXPECT_TRUE(cb.IsNull());
94
95 cb.SetCallback(base::Bind(&CopyVar));
96 EXPECT_FALSE(cb.IsNull());
97
98 cb.HoldCallback();
99
100 int var1 = 100;
101 int var2 = 0;
102 cb.RunOrHold(var1, &var2);
103 EXPECT_FALSE(cb.IsNull());
104 EXPECT_NE(var1, var2);
105
106 cb.RunHeldCallback();
107 EXPECT_TRUE(cb.IsNull());
108 EXPECT_EQ(var1, var2);
109 }
110
111 TEST(CallbackHolderTest, NotHold_Callback) {
112 CallbackHolder<base::Callback<void(int, int*)> > cb;
113 EXPECT_TRUE(cb.IsNull());
114
115 cb.SetCallback(base::Bind(&CopyVar));
116 EXPECT_FALSE(cb.IsNull());
117
118 int var1 = 100;
119 int var2 = 0;
120 cb.RunOrHold(var1, &var2);
121 EXPECT_TRUE(cb.IsNull());
122 EXPECT_EQ(var1, var2);
123 }
124
125 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698