OLD | NEW |
---|---|
(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 | |
OLD | NEW |