OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chromecast/base/bind_to_task_runner.h" | 5 #include "chromecast/base/bind_to_task_runner.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/memory/free_deleter.h" | 9 #include "base/memory/free_deleter.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
11 #include "base/synchronization/waitable_event.h" | 11 #include "base/synchronization/waitable_event.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
13 | 13 |
14 namespace chromecast { | 14 namespace chromecast { |
15 | 15 |
16 void BoundBoolSet(bool* var, bool val) { | 16 void BoundBoolSet(bool* var, bool val) { |
17 *var = val; | 17 *var = val; |
18 } | 18 } |
19 | 19 |
20 void BoundBoolSetFromScopedPtr(bool* var, scoped_ptr<bool> val) { | 20 void BoundBoolSetFromScopedPtr(bool* var, std::unique_ptr<bool> val) { |
21 *var = *val; | 21 *var = *val; |
22 } | 22 } |
23 | 23 |
24 void BoundBoolSetFromScopedPtrFreeDeleter( | 24 void BoundBoolSetFromScopedPtrFreeDeleter( |
25 bool* var, | 25 bool* var, |
26 scoped_ptr<bool, base::FreeDeleter> val) { | 26 std::unique_ptr<bool, base::FreeDeleter> val) { |
27 *var = *val; | 27 *var = *val; |
28 } | 28 } |
29 | 29 |
30 void BoundBoolSetFromScopedArray(bool* var, scoped_ptr<bool[]> val) { | 30 void BoundBoolSetFromScopedArray(bool* var, std::unique_ptr<bool[]> val) { |
31 *var = val[0]; | 31 *var = val[0]; |
32 } | 32 } |
33 | 33 |
34 void BoundBoolSetFromConstRef(bool* var, const bool& val) { | 34 void BoundBoolSetFromConstRef(bool* var, const bool& val) { |
35 *var = val; | 35 *var = val; |
36 } | 36 } |
37 | 37 |
38 void BoundIntegersSet(int* a_var, int* b_var, int a_val, int b_val) { | 38 void BoundIntegersSet(int* a_var, int* b_var, int a_val, int b_val) { |
39 *a_var = a_val; | 39 *a_var = a_val; |
40 *b_var = b_val; | 40 *b_var = b_val; |
(...skipping 22 matching lines...) Expand all Loading... |
63 base::Callback<void(bool)> cb = | 63 base::Callback<void(bool)> cb = |
64 BindToCurrentThread(base::Bind(&BoundBoolSet, &bool_var)); | 64 BindToCurrentThread(base::Bind(&BoundBoolSet, &bool_var)); |
65 cb.Run(true); | 65 cb.Run(true); |
66 EXPECT_FALSE(bool_var); | 66 EXPECT_FALSE(bool_var); |
67 loop_.RunUntilIdle(); | 67 loop_.RunUntilIdle(); |
68 EXPECT_TRUE(bool_var); | 68 EXPECT_TRUE(bool_var); |
69 } | 69 } |
70 | 70 |
71 TEST_F(BindToTaskRunnerTest, BoundScopedPtrBool) { | 71 TEST_F(BindToTaskRunnerTest, BoundScopedPtrBool) { |
72 bool bool_val = false; | 72 bool bool_val = false; |
73 scoped_ptr<bool> scoped_ptr_bool(new bool(true)); | 73 std::unique_ptr<bool> scoped_ptr_bool(new bool(true)); |
74 base::Closure cb = BindToCurrentThread(base::Bind( | 74 base::Closure cb = BindToCurrentThread(base::Bind( |
75 &BoundBoolSetFromScopedPtr, &bool_val, base::Passed(&scoped_ptr_bool))); | 75 &BoundBoolSetFromScopedPtr, &bool_val, base::Passed(&scoped_ptr_bool))); |
76 cb.Run(); | 76 cb.Run(); |
77 EXPECT_FALSE(bool_val); | 77 EXPECT_FALSE(bool_val); |
78 loop_.RunUntilIdle(); | 78 loop_.RunUntilIdle(); |
79 EXPECT_TRUE(bool_val); | 79 EXPECT_TRUE(bool_val); |
80 } | 80 } |
81 | 81 |
82 TEST_F(BindToTaskRunnerTest, PassedScopedPtrBool) { | 82 TEST_F(BindToTaskRunnerTest, PassedScopedPtrBool) { |
83 bool bool_val = false; | 83 bool bool_val = false; |
84 scoped_ptr<bool> scoped_ptr_bool(new bool(true)); | 84 std::unique_ptr<bool> scoped_ptr_bool(new bool(true)); |
85 base::Callback<void(scoped_ptr<bool>)> cb = | 85 base::Callback<void(std::unique_ptr<bool>)> cb = |
86 BindToCurrentThread(base::Bind(&BoundBoolSetFromScopedPtr, &bool_val)); | 86 BindToCurrentThread(base::Bind(&BoundBoolSetFromScopedPtr, &bool_val)); |
87 cb.Run(std::move(scoped_ptr_bool)); | 87 cb.Run(std::move(scoped_ptr_bool)); |
88 EXPECT_FALSE(bool_val); | 88 EXPECT_FALSE(bool_val); |
89 loop_.RunUntilIdle(); | 89 loop_.RunUntilIdle(); |
90 EXPECT_TRUE(bool_val); | 90 EXPECT_TRUE(bool_val); |
91 } | 91 } |
92 | 92 |
93 TEST_F(BindToTaskRunnerTest, BoundScopedArrayBool) { | 93 TEST_F(BindToTaskRunnerTest, BoundScopedArrayBool) { |
94 bool bool_val = false; | 94 bool bool_val = false; |
95 scoped_ptr<bool[]> scoped_array_bool(new bool[1]); | 95 std::unique_ptr<bool[]> scoped_array_bool(new bool[1]); |
96 scoped_array_bool[0] = true; | 96 scoped_array_bool[0] = true; |
97 base::Closure cb = | 97 base::Closure cb = |
98 BindToCurrentThread(base::Bind(&BoundBoolSetFromScopedArray, &bool_val, | 98 BindToCurrentThread(base::Bind(&BoundBoolSetFromScopedArray, &bool_val, |
99 base::Passed(&scoped_array_bool))); | 99 base::Passed(&scoped_array_bool))); |
100 cb.Run(); | 100 cb.Run(); |
101 EXPECT_FALSE(bool_val); | 101 EXPECT_FALSE(bool_val); |
102 loop_.RunUntilIdle(); | 102 loop_.RunUntilIdle(); |
103 EXPECT_TRUE(bool_val); | 103 EXPECT_TRUE(bool_val); |
104 } | 104 } |
105 | 105 |
106 TEST_F(BindToTaskRunnerTest, PassedScopedArrayBool) { | 106 TEST_F(BindToTaskRunnerTest, PassedScopedArrayBool) { |
107 bool bool_val = false; | 107 bool bool_val = false; |
108 scoped_ptr<bool[]> scoped_array_bool(new bool[1]); | 108 std::unique_ptr<bool[]> scoped_array_bool(new bool[1]); |
109 scoped_array_bool[0] = true; | 109 scoped_array_bool[0] = true; |
110 base::Callback<void(scoped_ptr<bool[]>)> cb = | 110 base::Callback<void(std::unique_ptr<bool[]>)> cb = |
111 BindToCurrentThread(base::Bind(&BoundBoolSetFromScopedArray, &bool_val)); | 111 BindToCurrentThread(base::Bind(&BoundBoolSetFromScopedArray, &bool_val)); |
112 cb.Run(std::move(scoped_array_bool)); | 112 cb.Run(std::move(scoped_array_bool)); |
113 EXPECT_FALSE(bool_val); | 113 EXPECT_FALSE(bool_val); |
114 loop_.RunUntilIdle(); | 114 loop_.RunUntilIdle(); |
115 EXPECT_TRUE(bool_val); | 115 EXPECT_TRUE(bool_val); |
116 } | 116 } |
117 | 117 |
118 TEST_F(BindToTaskRunnerTest, BoundScopedPtrFreeDeleterBool) { | 118 TEST_F(BindToTaskRunnerTest, BoundScopedPtrFreeDeleterBool) { |
119 bool bool_val = false; | 119 bool bool_val = false; |
120 scoped_ptr<bool, base::FreeDeleter> scoped_ptr_free_deleter_bool( | 120 std::unique_ptr<bool, base::FreeDeleter> scoped_ptr_free_deleter_bool( |
121 static_cast<bool*>(malloc(sizeof(bool)))); | 121 static_cast<bool*>(malloc(sizeof(bool)))); |
122 *scoped_ptr_free_deleter_bool = true; | 122 *scoped_ptr_free_deleter_bool = true; |
123 base::Closure cb = BindToCurrentThread( | 123 base::Closure cb = BindToCurrentThread( |
124 base::Bind(&BoundBoolSetFromScopedPtrFreeDeleter, &bool_val, | 124 base::Bind(&BoundBoolSetFromScopedPtrFreeDeleter, &bool_val, |
125 base::Passed(&scoped_ptr_free_deleter_bool))); | 125 base::Passed(&scoped_ptr_free_deleter_bool))); |
126 cb.Run(); | 126 cb.Run(); |
127 EXPECT_FALSE(bool_val); | 127 EXPECT_FALSE(bool_val); |
128 loop_.RunUntilIdle(); | 128 loop_.RunUntilIdle(); |
129 EXPECT_TRUE(bool_val); | 129 EXPECT_TRUE(bool_val); |
130 } | 130 } |
131 | 131 |
132 TEST_F(BindToTaskRunnerTest, PassedScopedPtrFreeDeleterBool) { | 132 TEST_F(BindToTaskRunnerTest, PassedScopedPtrFreeDeleterBool) { |
133 bool bool_val = false; | 133 bool bool_val = false; |
134 scoped_ptr<bool, base::FreeDeleter> scoped_ptr_free_deleter_bool( | 134 std::unique_ptr<bool, base::FreeDeleter> scoped_ptr_free_deleter_bool( |
135 static_cast<bool*>(malloc(sizeof(bool)))); | 135 static_cast<bool*>(malloc(sizeof(bool)))); |
136 *scoped_ptr_free_deleter_bool = true; | 136 *scoped_ptr_free_deleter_bool = true; |
137 base::Callback<void(scoped_ptr<bool, base::FreeDeleter>)> cb = | 137 base::Callback<void(std::unique_ptr<bool, base::FreeDeleter>)> cb = |
138 BindToCurrentThread( | 138 BindToCurrentThread( |
139 base::Bind(&BoundBoolSetFromScopedPtrFreeDeleter, &bool_val)); | 139 base::Bind(&BoundBoolSetFromScopedPtrFreeDeleter, &bool_val)); |
140 cb.Run(std::move(scoped_ptr_free_deleter_bool)); | 140 cb.Run(std::move(scoped_ptr_free_deleter_bool)); |
141 EXPECT_FALSE(bool_val); | 141 EXPECT_FALSE(bool_val); |
142 loop_.RunUntilIdle(); | 142 loop_.RunUntilIdle(); |
143 EXPECT_TRUE(bool_val); | 143 EXPECT_TRUE(bool_val); |
144 } | 144 } |
145 | 145 |
146 TEST_F(BindToTaskRunnerTest, BoolConstRef) { | 146 TEST_F(BindToTaskRunnerTest, BoolConstRef) { |
147 bool bool_var = false; | 147 bool bool_var = false; |
(...skipping 14 matching lines...) Expand all Loading... |
162 BindToCurrentThread(base::Bind(&BoundIntegersSet, &a, &b)); | 162 BindToCurrentThread(base::Bind(&BoundIntegersSet, &a, &b)); |
163 cb.Run(1, -1); | 163 cb.Run(1, -1); |
164 EXPECT_EQ(a, 0); | 164 EXPECT_EQ(a, 0); |
165 EXPECT_EQ(b, 0); | 165 EXPECT_EQ(b, 0); |
166 loop_.RunUntilIdle(); | 166 loop_.RunUntilIdle(); |
167 EXPECT_EQ(a, 1); | 167 EXPECT_EQ(a, 1); |
168 EXPECT_EQ(b, -1); | 168 EXPECT_EQ(b, -1); |
169 } | 169 } |
170 | 170 |
171 } // namespace chromecast | 171 } // namespace chromecast |
OLD | NEW |