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

Side by Side Diff: mojo/public/cpp/bindings/tests/array_unittest.cc

Issue 1535943002: Convert Pass()→std::move() in //mojo/public/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove self-move checks to avoid triggering clang warning. Created 5 years 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <utility>
6
5 #include "mojo/public/cpp/bindings/array.h" 7 #include "mojo/public/cpp/bindings/array.h"
6 #include "mojo/public/cpp/bindings/lib/array_internal.h" 8 #include "mojo/public/cpp/bindings/lib/array_internal.h"
7 #include "mojo/public/cpp/bindings/lib/array_serialization.h" 9 #include "mojo/public/cpp/bindings/lib/array_serialization.h"
8 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" 10 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h"
9 #include "mojo/public/cpp/bindings/tests/container_test_util.h" 11 #include "mojo/public/cpp/bindings/tests/container_test_util.h"
10 #include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h" 12 #include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h"
11 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
12 14
13 namespace mojo { 15 namespace mojo {
14 namespace test { 16 namespace test {
(...skipping 23 matching lines...) Expand all
38 bool val = i % 3 == 0; 40 bool val = i % 3 == 0;
39 array[i] = val; 41 array[i] = val;
40 EXPECT_EQ(val, array.at(i)); 42 EXPECT_EQ(val, array.at(i));
41 } 43 }
42 } 44 }
43 45
44 // Tests that Array<ScopedMessagePipeHandle> supports transferring handles. 46 // Tests that Array<ScopedMessagePipeHandle> supports transferring handles.
45 TEST_F(ArrayTest, Handle) { 47 TEST_F(ArrayTest, Handle) {
46 MessagePipe pipe; 48 MessagePipe pipe;
47 Array<ScopedMessagePipeHandle> handles(2); 49 Array<ScopedMessagePipeHandle> handles(2);
48 handles[0] = pipe.handle0.Pass(); 50 handles[0] = std::move(pipe.handle0);
49 handles[1].reset(pipe.handle1.release()); 51 handles[1].reset(pipe.handle1.release());
50 52
51 EXPECT_FALSE(pipe.handle0.is_valid()); 53 EXPECT_FALSE(pipe.handle0.is_valid());
52 EXPECT_FALSE(pipe.handle1.is_valid()); 54 EXPECT_FALSE(pipe.handle1.is_valid());
53 55
54 Array<ScopedMessagePipeHandle> handles2 = handles.Pass(); 56 Array<ScopedMessagePipeHandle> handles2 = std::move(handles);
55 EXPECT_TRUE(handles2[0].is_valid()); 57 EXPECT_TRUE(handles2[0].is_valid());
56 EXPECT_TRUE(handles2[1].is_valid()); 58 EXPECT_TRUE(handles2[1].is_valid());
57 59
58 ScopedMessagePipeHandle pipe_handle = handles2[0].Pass(); 60 ScopedMessagePipeHandle pipe_handle = std::move(handles2[0]);
59 EXPECT_TRUE(pipe_handle.is_valid()); 61 EXPECT_TRUE(pipe_handle.is_valid());
60 EXPECT_FALSE(handles2[0].is_valid()); 62 EXPECT_FALSE(handles2[0].is_valid());
61 } 63 }
62 64
63 // Tests that Array<ScopedMessagePipeHandle> supports closing handles. 65 // Tests that Array<ScopedMessagePipeHandle> supports closing handles.
64 TEST_F(ArrayTest, HandlesAreClosed) { 66 TEST_F(ArrayTest, HandlesAreClosed) {
65 MessagePipe pipe; 67 MessagePipe pipe;
66 MojoHandle pipe0_value = pipe.handle0.get().value(); 68 MojoHandle pipe0_value = pipe.handle0.get().value();
67 MojoHandle pipe1_value = pipe.handle0.get().value(); 69 MojoHandle pipe1_value = pipe.handle0.get().value();
68 70
69 { 71 {
70 Array<ScopedMessagePipeHandle> handles(2); 72 Array<ScopedMessagePipeHandle> handles(2);
71 handles[0] = pipe.handle0.Pass(); 73 handles[0] = std::move(pipe.handle0);
72 handles[1].reset(pipe.handle0.release()); 74 handles[1].reset(pipe.handle0.release());
73 } 75 }
74 76
75 // We expect the pipes to have been closed. 77 // We expect the pipes to have been closed.
76 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(pipe0_value)); 78 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(pipe0_value));
77 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(pipe1_value)); 79 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, MojoClose(pipe1_value));
78 } 80 }
79 81
80 TEST_F(ArrayTest, Clone) { 82 TEST_F(ArrayTest, Clone) {
81 { 83 {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 Array<int32_t> array(4); 148 Array<int32_t> array(4);
147 for (size_t i = 0; i < array.size(); ++i) 149 for (size_t i = 0; i < array.size(); ++i)
148 array[i] = static_cast<int32_t>(i); 150 array[i] = static_cast<int32_t>(i);
149 151
150 size_t size = GetSerializedSize_(array); 152 size_t size = GetSerializedSize_(array);
151 EXPECT_EQ(8U + 4 * 4U, size); 153 EXPECT_EQ(8U + 4 * 4U, size);
152 154
153 FixedBufferForTesting buf(size); 155 FixedBufferForTesting buf(size);
154 Array_Data<int32_t>* data; 156 Array_Data<int32_t>* data;
155 ArrayValidateParams validate_params(0, false, nullptr); 157 ArrayValidateParams validate_params(0, false, nullptr);
156 SerializeArray_(array.Pass(), &buf, &data, &validate_params); 158 SerializeArray_(std::move(array), &buf, &data, &validate_params);
157 159
158 Array<int32_t> array2; 160 Array<int32_t> array2;
159 Deserialize_(data, &array2, nullptr); 161 Deserialize_(data, &array2, nullptr);
160 162
161 EXPECT_EQ(4U, array2.size()); 163 EXPECT_EQ(4U, array2.size());
162 for (size_t i = 0; i < array2.size(); ++i) 164 for (size_t i = 0; i < array2.size(); ++i)
163 EXPECT_EQ(static_cast<int32_t>(i), array2[i]); 165 EXPECT_EQ(static_cast<int32_t>(i), array2[i]);
164 } 166 }
165 167
166 TEST_F(ArrayTest, Serialization_EmptyArrayOfPOD) { 168 TEST_F(ArrayTest, Serialization_EmptyArrayOfPOD) {
167 Array<int32_t> array(0); 169 Array<int32_t> array(0);
168 size_t size = GetSerializedSize_(array); 170 size_t size = GetSerializedSize_(array);
169 EXPECT_EQ(8U, size); 171 EXPECT_EQ(8U, size);
170 172
171 FixedBufferForTesting buf(size); 173 FixedBufferForTesting buf(size);
172 Array_Data<int32_t>* data; 174 Array_Data<int32_t>* data;
173 ArrayValidateParams validate_params(0, false, nullptr); 175 ArrayValidateParams validate_params(0, false, nullptr);
174 SerializeArray_(array.Pass(), &buf, &data, &validate_params); 176 SerializeArray_(std::move(array), &buf, &data, &validate_params);
175 177
176 Array<int32_t> array2; 178 Array<int32_t> array2;
177 Deserialize_(data, &array2, nullptr); 179 Deserialize_(data, &array2, nullptr);
178 EXPECT_EQ(0U, array2.size()); 180 EXPECT_EQ(0U, array2.size());
179 } 181 }
180 182
181 TEST_F(ArrayTest, Serialization_ArrayOfArrayOfPOD) { 183 TEST_F(ArrayTest, Serialization_ArrayOfArrayOfPOD) {
182 Array<Array<int32_t>> array(2); 184 Array<Array<int32_t>> array(2);
183 for (size_t j = 0; j < array.size(); ++j) { 185 for (size_t j = 0; j < array.size(); ++j) {
184 Array<int32_t> inner(4); 186 Array<int32_t> inner(4);
185 for (size_t i = 0; i < inner.size(); ++i) 187 for (size_t i = 0; i < inner.size(); ++i)
186 inner[i] = static_cast<int32_t>(i + (j * 10)); 188 inner[i] = static_cast<int32_t>(i + (j * 10));
187 array[j] = inner.Pass(); 189 array[j] = std::move(inner);
188 } 190 }
189 191
190 size_t size = GetSerializedSize_(array); 192 size_t size = GetSerializedSize_(array);
191 EXPECT_EQ(8U + 2 * 8U + 2 * (8U + 4 * 4U), size); 193 EXPECT_EQ(8U + 2 * 8U + 2 * (8U + 4 * 4U), size);
192 194
193 FixedBufferForTesting buf(size); 195 FixedBufferForTesting buf(size);
194 Array_Data<Array_Data<int32_t>*>* data; 196 Array_Data<Array_Data<int32_t>*>* data;
195 ArrayValidateParams validate_params( 197 ArrayValidateParams validate_params(
196 0, false, new ArrayValidateParams(0, false, nullptr)); 198 0, false, new ArrayValidateParams(0, false, nullptr));
197 SerializeArray_(array.Pass(), &buf, &data, &validate_params); 199 SerializeArray_(std::move(array), &buf, &data, &validate_params);
198 200
199 Array<Array<int32_t>> array2; 201 Array<Array<int32_t>> array2;
200 Deserialize_(data, &array2, nullptr); 202 Deserialize_(data, &array2, nullptr);
201 203
202 EXPECT_EQ(2U, array2.size()); 204 EXPECT_EQ(2U, array2.size());
203 for (size_t j = 0; j < array2.size(); ++j) { 205 for (size_t j = 0; j < array2.size(); ++j) {
204 const Array<int32_t>& inner = array2[j]; 206 const Array<int32_t>& inner = array2[j];
205 EXPECT_EQ(4U, inner.size()); 207 EXPECT_EQ(4U, inner.size());
206 for (size_t i = 0; i < inner.size(); ++i) 208 for (size_t i = 0; i < inner.size(); ++i)
207 EXPECT_EQ(static_cast<int32_t>(i + (j * 10)), inner[i]); 209 EXPECT_EQ(static_cast<int32_t>(i + (j * 10)), inner[i]);
208 } 210 }
209 } 211 }
210 212
211 TEST_F(ArrayTest, Serialization_ArrayOfBool) { 213 TEST_F(ArrayTest, Serialization_ArrayOfBool) {
212 Array<bool> array(10); 214 Array<bool> array(10);
213 for (size_t i = 0; i < array.size(); ++i) 215 for (size_t i = 0; i < array.size(); ++i)
214 array[i] = i % 2 ? true : false; 216 array[i] = i % 2 ? true : false;
215 217
216 size_t size = GetSerializedSize_(array); 218 size_t size = GetSerializedSize_(array);
217 EXPECT_EQ(8U + 8U, size); 219 EXPECT_EQ(8U + 8U, size);
218 220
219 FixedBufferForTesting buf(size); 221 FixedBufferForTesting buf(size);
220 Array_Data<bool>* data; 222 Array_Data<bool>* data;
221 ArrayValidateParams validate_params(0, false, nullptr); 223 ArrayValidateParams validate_params(0, false, nullptr);
222 SerializeArray_(array.Pass(), &buf, &data, &validate_params); 224 SerializeArray_(std::move(array), &buf, &data, &validate_params);
223 225
224 Array<bool> array2; 226 Array<bool> array2;
225 Deserialize_(data, &array2, nullptr); 227 Deserialize_(data, &array2, nullptr);
226 228
227 EXPECT_EQ(10U, array2.size()); 229 EXPECT_EQ(10U, array2.size());
228 for (size_t i = 0; i < array2.size(); ++i) 230 for (size_t i = 0; i < array2.size(); ++i)
229 EXPECT_EQ(i % 2 ? true : false, array2[i]); 231 EXPECT_EQ(i % 2 ? true : false, array2[i]);
230 } 232 }
231 233
232 TEST_F(ArrayTest, Serialization_ArrayOfString) { 234 TEST_F(ArrayTest, Serialization_ArrayOfString) {
233 Array<String> array(10); 235 Array<String> array(10);
234 for (size_t i = 0; i < array.size(); ++i) { 236 for (size_t i = 0; i < array.size(); ++i) {
235 char c = 'A' + static_cast<char>(i); 237 char c = 'A' + static_cast<char>(i);
236 array[i] = String(&c, 1); 238 array[i] = String(&c, 1);
237 } 239 }
238 240
239 size_t size = GetSerializedSize_(array); 241 size_t size = GetSerializedSize_(array);
240 EXPECT_EQ(8U + // array header 242 EXPECT_EQ(8U + // array header
241 10 * 8U + // array payload (10 pointers) 243 10 * 8U + // array payload (10 pointers)
242 10 * (8U + // string header 244 10 * (8U + // string header
243 8U), // string length of 1 padded to 8 245 8U), // string length of 1 padded to 8
244 size); 246 size);
245 247
246 FixedBufferForTesting buf(size); 248 FixedBufferForTesting buf(size);
247 Array_Data<String_Data*>* data; 249 Array_Data<String_Data*>* data;
248 ArrayValidateParams validate_params( 250 ArrayValidateParams validate_params(
249 0, false, new ArrayValidateParams(0, false, nullptr)); 251 0, false, new ArrayValidateParams(0, false, nullptr));
250 SerializeArray_(array.Pass(), &buf, &data, &validate_params); 252 SerializeArray_(std::move(array), &buf, &data, &validate_params);
251 253
252 Array<String> array2; 254 Array<String> array2;
253 Deserialize_(data, &array2, nullptr); 255 Deserialize_(data, &array2, nullptr);
254 256
255 EXPECT_EQ(10U, array2.size()); 257 EXPECT_EQ(10U, array2.size());
256 for (size_t i = 0; i < array2.size(); ++i) { 258 for (size_t i = 0; i < array2.size(); ++i) {
257 char c = 'A' + static_cast<char>(i); 259 char c = 'A' + static_cast<char>(i);
258 EXPECT_EQ(String(&c, 1), array2[i]); 260 EXPECT_EQ(String(&c, 1), array2[i]);
259 } 261 }
260 } 262 }
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 402
401 TEST_F(ArrayTest, PushBack_MoveOnly) { 403 TEST_F(ArrayTest, PushBack_MoveOnly) {
402 ASSERT_EQ(0u, MoveOnlyType::num_instances()); 404 ASSERT_EQ(0u, MoveOnlyType::num_instances());
403 mojo::Array<MoveOnlyType> array(2); 405 mojo::Array<MoveOnlyType> array(2);
404 array.reset(); 406 array.reset();
405 std::vector<MoveOnlyType*> value_ptrs; 407 std::vector<MoveOnlyType*> value_ptrs;
406 size_t capacity = array.storage().capacity(); 408 size_t capacity = array.storage().capacity();
407 for (size_t i = 0; i < capacity; i++) { 409 for (size_t i = 0; i < capacity; i++) {
408 MoveOnlyType value; 410 MoveOnlyType value;
409 value_ptrs.push_back(value.ptr()); 411 value_ptrs.push_back(value.ptr());
410 array.push_back(value.Pass()); 412 array.push_back(std::move(value));
411 ASSERT_EQ(i + 1, array.size()); 413 ASSERT_EQ(i + 1, array.size());
412 ASSERT_EQ(i + 1, value_ptrs.size()); 414 ASSERT_EQ(i + 1, value_ptrs.size());
413 EXPECT_EQ(array.size() + 1, MoveOnlyType::num_instances()); 415 EXPECT_EQ(array.size() + 1, MoveOnlyType::num_instances());
414 EXPECT_TRUE(array[i].moved()); 416 EXPECT_TRUE(array[i].moved());
415 EXPECT_EQ(value_ptrs[i], array[i].ptr()); 417 EXPECT_EQ(value_ptrs[i], array[i].ptr());
416 array[i].ResetMoved(); 418 array[i].ResetMoved();
417 EXPECT_TRUE(array); 419 EXPECT_TRUE(array);
418 } 420 }
419 { 421 {
420 MoveOnlyType value; 422 MoveOnlyType value;
421 value_ptrs.push_back(value.ptr()); 423 value_ptrs.push_back(value.ptr());
422 array.push_back(value.Pass()); 424 array.push_back(std::move(value));
423 EXPECT_EQ(array.size() + 1, MoveOnlyType::num_instances()); 425 EXPECT_EQ(array.size() + 1, MoveOnlyType::num_instances());
424 } 426 }
425 ASSERT_EQ(capacity + 1, array.size()); 427 ASSERT_EQ(capacity + 1, array.size());
426 EXPECT_EQ(array.size(), MoveOnlyType::num_instances()); 428 EXPECT_EQ(array.size(), MoveOnlyType::num_instances());
427 429
428 for (size_t i = 0; i < array.size(); i++) { 430 for (size_t i = 0; i < array.size(); i++) {
429 EXPECT_TRUE(array[i].moved()); 431 EXPECT_TRUE(array[i].moved());
430 EXPECT_EQ(value_ptrs[i], array[i].ptr()); 432 EXPECT_EQ(value_ptrs[i], array[i].ptr());
431 } 433 }
432 array.reset(); 434 array.reset();
433 EXPECT_EQ(0u, MoveOnlyType::num_instances()); 435 EXPECT_EQ(0u, MoveOnlyType::num_instances());
434 } 436 }
435 437
436 } // namespace 438 } // namespace
437 } // namespace test 439 } // namespace test
438 } // namespace mojo 440 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698