OLD | NEW |
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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 #include <string.h> | 7 #include <string.h> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" | 10 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" |
11 #include "mojo/public/cpp/system/message_pipe.h" | 11 #include "mojo/public/cpp/system/message_pipe.h" |
12 #include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h" | 12 #include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
14 | 14 |
15 namespace mojo { | 15 namespace mojo { |
16 namespace test { | 16 namespace test { |
17 namespace { | 17 namespace { |
18 | 18 |
19 RectPtr MakeRect(int32_t factor = 1) { | 19 RectPtr MakeRect(int32_t factor = 1) { |
20 RectPtr rect(Rect::New()); | 20 return Rect::New(1 * factor, 2 * factor, 10 * factor, 20 * factor); |
21 rect->x = 1 * factor; | |
22 rect->y = 2 * factor; | |
23 rect->width = 10 * factor; | |
24 rect->height = 20 * factor; | |
25 return rect; | |
26 } | 21 } |
27 | 22 |
28 void CheckRect(const Rect& rect, int32_t factor = 1) { | 23 void CheckRect(const Rect& rect, int32_t factor = 1) { |
29 EXPECT_EQ(1 * factor, rect.x); | 24 EXPECT_EQ(1 * factor, rect.x); |
30 EXPECT_EQ(2 * factor, rect.y); | 25 EXPECT_EQ(2 * factor, rect.y); |
31 EXPECT_EQ(10 * factor, rect.width); | 26 EXPECT_EQ(10 * factor, rect.width); |
32 EXPECT_EQ(20 * factor, rect.height); | 27 EXPECT_EQ(20 * factor, rect.height); |
33 } | 28 } |
34 | 29 |
35 MultiVersionStructPtr MakeMultiVersionStruct() { | 30 MultiVersionStructPtr MakeMultiVersionStruct() { |
36 MultiVersionStructPtr output(MultiVersionStruct::New()); | |
37 output->f_int32 = 123; | |
38 output->f_rect = MakeRect(5); | |
39 output->f_string.emplace("hello"); | |
40 output->f_array.emplace(3); | |
41 (*output->f_array)[0] = 10; | |
42 (*output->f_array)[1] = 9; | |
43 (*output->f_array)[2] = 8; | |
44 MessagePipe pipe; | 31 MessagePipe pipe; |
45 output->f_message_pipe = std::move(pipe.handle0); | 32 return MultiVersionStruct::New(123, MakeRect(5), std::string("hello"), |
46 output->f_int16 = 42; | 33 std::vector<int8_t>{10, 9, 8}, |
47 | 34 std::move(pipe.handle0), false, 42); |
48 return output; | |
49 } | 35 } |
50 | 36 |
51 template <typename U, typename T> | 37 template <typename U, typename T> |
52 U SerializeAndDeserialize(T input) { | 38 U SerializeAndDeserialize(T input) { |
53 using InputMojomType = typename T::Struct::DataView; | 39 using InputMojomType = typename T::Struct::DataView; |
54 using OutputMojomType = typename U::Struct::DataView; | 40 using OutputMojomType = typename U::Struct::DataView; |
55 | 41 |
56 using InputDataType = | 42 using InputDataType = |
57 typename mojo::internal::MojomTypeTraits<InputMojomType>::Data*; | 43 typename mojo::internal::MojomTypeTraits<InputMojomType>::Data*; |
58 using OutputDataType = | 44 using OutputDataType = |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 EXPECT_FALSE(pair.is_null()); | 145 EXPECT_FALSE(pair.is_null()); |
160 EXPECT_TRUE(pair->first.is_null()); | 146 EXPECT_TRUE(pair->first.is_null()); |
161 EXPECT_TRUE(pair->first.is_null()); | 147 EXPECT_TRUE(pair->first.is_null()); |
162 | 148 |
163 pair = nullptr; | 149 pair = nullptr; |
164 EXPECT_TRUE(pair.is_null()); | 150 EXPECT_TRUE(pair.is_null()); |
165 } | 151 } |
166 | 152 |
167 // Serialization test of a struct with struct pointers. | 153 // Serialization test of a struct with struct pointers. |
168 TEST_F(StructTest, Serialization_StructPointers) { | 154 TEST_F(StructTest, Serialization_StructPointers) { |
169 RectPairPtr pair(RectPair::New()); | 155 RectPairPtr pair(RectPair::New(MakeRect(), MakeRect())); |
170 pair->first = MakeRect(); | |
171 pair->second = MakeRect(); | |
172 | 156 |
173 size_t size = | 157 size_t size = |
174 mojo::internal::PrepareToSerialize<RectPairDataView>(pair, nullptr); | 158 mojo::internal::PrepareToSerialize<RectPairDataView>(pair, nullptr); |
175 EXPECT_EQ(8U + 16U + 2 * (8U + 16U), size); | 159 EXPECT_EQ(8U + 16U + 2 * (8U + 16U), size); |
176 | 160 |
177 mojo::internal::FixedBufferForTesting buf(size); | 161 mojo::internal::FixedBufferForTesting buf(size); |
178 internal::RectPair_Data* data; | 162 internal::RectPair_Data* data; |
179 mojo::internal::Serialize<RectPairDataView>(pair, &buf, &data, nullptr); | 163 mojo::internal::Serialize<RectPairDataView>(pair, &buf, &data, nullptr); |
180 | 164 |
181 RectPairPtr pair2; | 165 RectPairPtr pair2; |
182 mojo::internal::Deserialize<RectPairDataView>(data, &pair2, nullptr); | 166 mojo::internal::Deserialize<RectPairDataView>(data, &pair2, nullptr); |
183 | 167 |
184 CheckRect(*pair2->first); | 168 CheckRect(*pair2->first); |
185 CheckRect(*pair2->second); | 169 CheckRect(*pair2->second); |
186 } | 170 } |
187 | 171 |
188 // Serialization test of a struct with an array member. | 172 // Serialization test of a struct with an array member. |
189 TEST_F(StructTest, Serialization_ArrayPointers) { | 173 TEST_F(StructTest, Serialization_ArrayPointers) { |
190 NamedRegionPtr region(NamedRegion::New()); | 174 NamedRegionPtr region(NamedRegion::New(std::string("region"))); |
191 region->name.emplace("region"); | |
192 region->rects.emplace(4); | 175 region->rects.emplace(4); |
193 for (size_t i = 0; i < region->rects->size(); ++i) | 176 for (size_t i = 0; i < region->rects->size(); ++i) |
194 (*region->rects)[i] = MakeRect(static_cast<int32_t>(i) + 1); | 177 (*region->rects)[i] = MakeRect(static_cast<int32_t>(i) + 1); |
195 | 178 |
196 size_t size = | 179 size_t size = |
197 mojo::internal::PrepareToSerialize<NamedRegionDataView>(region, nullptr); | 180 mojo::internal::PrepareToSerialize<NamedRegionDataView>(region, nullptr); |
198 EXPECT_EQ(8U + // header | 181 EXPECT_EQ(8U + // header |
199 8U + // name pointer | 182 8U + // name pointer |
200 8U + // rects pointer | 183 8U + // rects pointer |
201 8U + // name header | 184 8U + // name header |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 NamedRegionPtr region2; | 223 NamedRegionPtr region2; |
241 mojo::internal::Deserialize<NamedRegionDataView>(data, ®ion2, nullptr); | 224 mojo::internal::Deserialize<NamedRegionDataView>(data, ®ion2, nullptr); |
242 | 225 |
243 EXPECT_FALSE(region2->name); | 226 EXPECT_FALSE(region2->name); |
244 EXPECT_FALSE(region2->rects); | 227 EXPECT_FALSE(region2->rects); |
245 } | 228 } |
246 | 229 |
247 // Tests deserializing structs as a newer version. | 230 // Tests deserializing structs as a newer version. |
248 TEST_F(StructTest, Versioning_OldToNew) { | 231 TEST_F(StructTest, Versioning_OldToNew) { |
249 { | 232 { |
250 MultiVersionStructV0Ptr input(MultiVersionStructV0::New()); | 233 MultiVersionStructV0Ptr input(MultiVersionStructV0::New(123)); |
251 input->f_int32 = 123; | 234 MultiVersionStructPtr expected_output(MultiVersionStruct::New(123)); |
252 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | |
253 expected_output->f_int32 = 123; | |
254 | 235 |
255 MultiVersionStructPtr output = | 236 MultiVersionStructPtr output = |
256 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); | 237 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
257 EXPECT_TRUE(output); | 238 EXPECT_TRUE(output); |
258 EXPECT_TRUE(output->Equals(*expected_output)); | 239 EXPECT_TRUE(output->Equals(*expected_output)); |
259 } | 240 } |
260 | 241 |
261 { | 242 { |
262 MultiVersionStructV1Ptr input(MultiVersionStructV1::New()); | 243 MultiVersionStructV1Ptr input(MultiVersionStructV1::New(123, MakeRect(5))); |
263 input->f_int32 = 123; | 244 MultiVersionStructPtr expected_output( |
264 input->f_rect = MakeRect(5); | 245 MultiVersionStruct::New(123, MakeRect(5))); |
265 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | |
266 expected_output->f_int32 = 123; | |
267 expected_output->f_rect = MakeRect(5); | |
268 | 246 |
269 MultiVersionStructPtr output = | 247 MultiVersionStructPtr output = |
270 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); | 248 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
271 EXPECT_TRUE(output); | 249 EXPECT_TRUE(output); |
272 EXPECT_TRUE(output->Equals(*expected_output)); | 250 EXPECT_TRUE(output->Equals(*expected_output)); |
273 } | 251 } |
274 | 252 |
275 { | 253 { |
276 MultiVersionStructV3Ptr input(MultiVersionStructV3::New()); | 254 MultiVersionStructV3Ptr input( |
277 input->f_int32 = 123; | 255 MultiVersionStructV3::New(123, MakeRect(5), std::string("hello"))); |
278 input->f_rect = MakeRect(5); | 256 MultiVersionStructPtr expected_output( |
279 input->f_string.emplace("hello"); | 257 MultiVersionStruct::New(123, MakeRect(5), std::string("hello"))); |
280 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | |
281 expected_output->f_int32 = 123; | |
282 expected_output->f_rect = MakeRect(5); | |
283 expected_output->f_string.emplace("hello"); | |
284 | 258 |
285 MultiVersionStructPtr output = | 259 MultiVersionStructPtr output = |
286 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); | 260 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
287 EXPECT_TRUE(output); | 261 EXPECT_TRUE(output); |
288 EXPECT_TRUE(output->Equals(*expected_output)); | 262 EXPECT_TRUE(output->Equals(*expected_output)); |
289 } | 263 } |
290 | 264 |
291 { | 265 { |
292 MultiVersionStructV5Ptr input(MultiVersionStructV5::New()); | 266 MultiVersionStructV5Ptr input(MultiVersionStructV5::New( |
293 input->f_int32 = 123; | 267 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8})); |
294 input->f_rect = MakeRect(5); | 268 MultiVersionStructPtr expected_output(MultiVersionStruct::New( |
295 input->f_string.emplace("hello"); | 269 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8})); |
296 input->f_array.emplace(3); | |
297 (*input->f_array)[0] = 10; | |
298 (*input->f_array)[1] = 9; | |
299 (*input->f_array)[2] = 8; | |
300 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | |
301 expected_output->f_int32 = 123; | |
302 expected_output->f_rect = MakeRect(5); | |
303 expected_output->f_string.emplace("hello"); | |
304 expected_output->f_array.emplace(3); | |
305 (*expected_output->f_array)[0] = 10; | |
306 (*expected_output->f_array)[1] = 9; | |
307 (*expected_output->f_array)[2] = 8; | |
308 | 270 |
309 MultiVersionStructPtr output = | 271 MultiVersionStructPtr output = |
310 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); | 272 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
311 EXPECT_TRUE(output); | 273 EXPECT_TRUE(output); |
312 EXPECT_TRUE(output->Equals(*expected_output)); | 274 EXPECT_TRUE(output->Equals(*expected_output)); |
313 } | 275 } |
314 | 276 |
315 { | 277 { |
316 MultiVersionStructV7Ptr input(MultiVersionStructV7::New()); | |
317 input->f_int32 = 123; | |
318 input->f_rect = MakeRect(5); | |
319 input->f_string.emplace("hello"); | |
320 input->f_array.emplace(3); | |
321 (*input->f_array)[0] = 10; | |
322 (*input->f_array)[1] = 9; | |
323 (*input->f_array)[2] = 8; | |
324 MessagePipe pipe; | 278 MessagePipe pipe; |
325 input->f_message_pipe = std::move(pipe.handle0); | 279 MultiVersionStructV7Ptr input(MultiVersionStructV7::New( |
| 280 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8}, |
| 281 std::move(pipe.handle0))); |
326 | 282 |
327 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | 283 MultiVersionStructPtr expected_output(MultiVersionStruct::New( |
328 expected_output->f_int32 = 123; | 284 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8})); |
329 expected_output->f_rect = MakeRect(5); | |
330 expected_output->f_string.emplace("hello"); | |
331 expected_output->f_array.emplace(3); | |
332 (*expected_output->f_array)[0] = 10; | |
333 (*expected_output->f_array)[1] = 9; | |
334 (*expected_output->f_array)[2] = 8; | |
335 // Save the raw handle value separately so that we can compare later. | 285 // Save the raw handle value separately so that we can compare later. |
336 MojoHandle expected_handle = input->f_message_pipe.get().value(); | 286 MojoHandle expected_handle = input->f_message_pipe.get().value(); |
337 | 287 |
338 MultiVersionStructPtr output = | 288 MultiVersionStructPtr output = |
339 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); | 289 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
340 EXPECT_TRUE(output); | 290 EXPECT_TRUE(output); |
341 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); | 291 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); |
342 output->f_message_pipe.reset(); | 292 output->f_message_pipe.reset(); |
343 EXPECT_TRUE(output->Equals(*expected_output)); | 293 EXPECT_TRUE(output->Equals(*expected_output)); |
344 } | 294 } |
345 } | 295 } |
346 | 296 |
347 // Tests deserializing structs as an older version. | 297 // Tests deserializing structs as an older version. |
348 TEST_F(StructTest, Versioning_NewToOld) { | 298 TEST_F(StructTest, Versioning_NewToOld) { |
349 { | 299 { |
350 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 300 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
351 MultiVersionStructV7Ptr expected_output(MultiVersionStructV7::New()); | 301 MultiVersionStructV7Ptr expected_output(MultiVersionStructV7::New( |
352 expected_output->f_int32 = 123; | 302 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8})); |
353 expected_output->f_rect = MakeRect(5); | |
354 expected_output->f_string.emplace("hello"); | |
355 expected_output->f_array.emplace(3); | |
356 (*expected_output->f_array)[0] = 10; | |
357 (*expected_output->f_array)[1] = 9; | |
358 (*expected_output->f_array)[2] = 8; | |
359 // Save the raw handle value separately so that we can compare later. | 303 // Save the raw handle value separately so that we can compare later. |
360 MojoHandle expected_handle = input->f_message_pipe.get().value(); | 304 MojoHandle expected_handle = input->f_message_pipe.get().value(); |
361 | 305 |
362 MultiVersionStructV7Ptr output = | 306 MultiVersionStructV7Ptr output = |
363 SerializeAndDeserialize<MultiVersionStructV7Ptr>(std::move(input)); | 307 SerializeAndDeserialize<MultiVersionStructV7Ptr>(std::move(input)); |
364 EXPECT_TRUE(output); | 308 EXPECT_TRUE(output); |
365 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); | 309 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); |
366 output->f_message_pipe.reset(); | 310 output->f_message_pipe.reset(); |
367 EXPECT_TRUE(output->Equals(*expected_output)); | 311 EXPECT_TRUE(output->Equals(*expected_output)); |
368 } | 312 } |
369 | 313 |
370 { | 314 { |
371 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 315 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
372 MultiVersionStructV5Ptr expected_output(MultiVersionStructV5::New()); | 316 MultiVersionStructV5Ptr expected_output(MultiVersionStructV5::New( |
373 expected_output->f_int32 = 123; | 317 123, MakeRect(5), std::string("hello"), std::vector<int8_t>{10, 9, 8})); |
374 expected_output->f_rect = MakeRect(5); | |
375 expected_output->f_string.emplace("hello"); | |
376 expected_output->f_array.emplace(3); | |
377 (*expected_output->f_array)[0] = 10; | |
378 (*expected_output->f_array)[1] = 9; | |
379 (*expected_output->f_array)[2] = 8; | |
380 | 318 |
381 MultiVersionStructV5Ptr output = | 319 MultiVersionStructV5Ptr output = |
382 SerializeAndDeserialize<MultiVersionStructV5Ptr>(std::move(input)); | 320 SerializeAndDeserialize<MultiVersionStructV5Ptr>(std::move(input)); |
383 EXPECT_TRUE(output); | 321 EXPECT_TRUE(output); |
384 EXPECT_TRUE(output->Equals(*expected_output)); | 322 EXPECT_TRUE(output->Equals(*expected_output)); |
385 } | 323 } |
386 | 324 |
387 { | 325 { |
388 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 326 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
389 MultiVersionStructV3Ptr expected_output(MultiVersionStructV3::New()); | 327 MultiVersionStructV3Ptr expected_output( |
390 expected_output->f_int32 = 123; | 328 MultiVersionStructV3::New(123, MakeRect(5), std::string("hello"))); |
391 expected_output->f_rect = MakeRect(5); | |
392 expected_output->f_string.emplace("hello"); | |
393 | 329 |
394 MultiVersionStructV3Ptr output = | 330 MultiVersionStructV3Ptr output = |
395 SerializeAndDeserialize<MultiVersionStructV3Ptr>(std::move(input)); | 331 SerializeAndDeserialize<MultiVersionStructV3Ptr>(std::move(input)); |
396 EXPECT_TRUE(output); | 332 EXPECT_TRUE(output); |
397 EXPECT_TRUE(output->Equals(*expected_output)); | 333 EXPECT_TRUE(output->Equals(*expected_output)); |
398 } | 334 } |
399 | 335 |
400 { | 336 { |
401 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 337 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
402 MultiVersionStructV1Ptr expected_output(MultiVersionStructV1::New()); | 338 MultiVersionStructV1Ptr expected_output( |
403 expected_output->f_int32 = 123; | 339 MultiVersionStructV1::New(123, MakeRect(5))); |
404 expected_output->f_rect = MakeRect(5); | |
405 | 340 |
406 MultiVersionStructV1Ptr output = | 341 MultiVersionStructV1Ptr output = |
407 SerializeAndDeserialize<MultiVersionStructV1Ptr>(std::move(input)); | 342 SerializeAndDeserialize<MultiVersionStructV1Ptr>(std::move(input)); |
408 EXPECT_TRUE(output); | 343 EXPECT_TRUE(output); |
409 EXPECT_TRUE(output->Equals(*expected_output)); | 344 EXPECT_TRUE(output->Equals(*expected_output)); |
410 } | 345 } |
411 | 346 |
412 { | 347 { |
413 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 348 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
414 MultiVersionStructV0Ptr expected_output(MultiVersionStructV0::New()); | 349 MultiVersionStructV0Ptr expected_output(MultiVersionStructV0::New(123)); |
415 expected_output->f_int32 = 123; | |
416 | 350 |
417 MultiVersionStructV0Ptr output = | 351 MultiVersionStructV0Ptr output = |
418 SerializeAndDeserialize<MultiVersionStructV0Ptr>(std::move(input)); | 352 SerializeAndDeserialize<MultiVersionStructV0Ptr>(std::move(input)); |
419 EXPECT_TRUE(output); | 353 EXPECT_TRUE(output); |
420 EXPECT_TRUE(output->Equals(*expected_output)); | 354 EXPECT_TRUE(output->Equals(*expected_output)); |
421 } | 355 } |
422 } | 356 } |
423 | 357 |
424 // Serialization test for native struct. | 358 // Serialization test for native struct. |
425 TEST_F(StructTest, Serialization_NativeStruct) { | 359 TEST_F(StructTest, Serialization_NativeStruct) { |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 RectPtr cloned_rect = rect.Clone(); | 454 RectPtr cloned_rect = rect.Clone(); |
521 auto data = Rect::Serialize(&rect); | 455 auto data = Rect::Serialize(&rect); |
522 | 456 |
523 RectPtr output; | 457 RectPtr output; |
524 ASSERT_TRUE(Rect::Deserialize(std::move(data), &output)); | 458 ASSERT_TRUE(Rect::Deserialize(std::move(data), &output)); |
525 EXPECT_TRUE(output.Equals(cloned_rect)); | 459 EXPECT_TRUE(output.Equals(cloned_rect)); |
526 } | 460 } |
527 | 461 |
528 { | 462 { |
529 // A struct containing other objects. | 463 // A struct containing other objects. |
530 NamedRegionPtr region(NamedRegion::New()); | 464 NamedRegionPtr region(NamedRegion::New(std::string("region"))); |
531 region->name.emplace("region"); | |
532 region->rects.emplace(3); | 465 region->rects.emplace(3); |
533 for (size_t i = 0; i < region->rects->size(); ++i) | 466 for (size_t i = 0; i < region->rects->size(); ++i) |
534 (*region->rects)[i] = MakeRect(static_cast<int32_t>(i) + 1); | 467 (*region->rects)[i] = MakeRect(static_cast<int32_t>(i) + 1); |
535 | 468 |
536 NamedRegionPtr cloned_region = region.Clone(); | 469 NamedRegionPtr cloned_region = region.Clone(); |
537 auto data = NamedRegion::Serialize(®ion); | 470 auto data = NamedRegion::Serialize(®ion); |
538 | 471 |
539 // Make sure that the serialized result gets pointers encoded properly. | 472 // Make sure that the serialized result gets pointers encoded properly. |
540 auto cloned_data = data; | 473 auto cloned_data = data; |
541 NamedRegionPtr output; | 474 NamedRegionPtr output; |
542 ASSERT_TRUE(NamedRegion::Deserialize(std::move(cloned_data), &output)); | 475 ASSERT_TRUE(NamedRegion::Deserialize(std::move(cloned_data), &output)); |
543 EXPECT_TRUE(output.Equals(cloned_region)); | 476 EXPECT_TRUE(output.Equals(cloned_region)); |
544 } | 477 } |
545 | 478 |
546 { | 479 { |
547 // Deserialization failure. | 480 // Deserialization failure. |
548 RectPtr rect = MakeRect(); | 481 RectPtr rect = MakeRect(); |
549 auto data = Rect::Serialize(&rect); | 482 auto data = Rect::Serialize(&rect); |
550 | 483 |
551 NamedRegionPtr output; | 484 NamedRegionPtr output; |
552 EXPECT_FALSE(NamedRegion::Deserialize(std::move(data), &output)); | 485 EXPECT_FALSE(NamedRegion::Deserialize(std::move(data), &output)); |
553 } | 486 } |
554 } | 487 } |
555 | 488 |
556 } // namespace test | 489 } // namespace test |
557 } // namespace mojo | 490 } // namespace mojo |
OLD | NEW |