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" |
(...skipping 18 matching lines...) Expand all Loading... |
29 EXPECT_EQ(1 * factor, rect.x); | 29 EXPECT_EQ(1 * factor, rect.x); |
30 EXPECT_EQ(2 * factor, rect.y); | 30 EXPECT_EQ(2 * factor, rect.y); |
31 EXPECT_EQ(10 * factor, rect.width); | 31 EXPECT_EQ(10 * factor, rect.width); |
32 EXPECT_EQ(20 * factor, rect.height); | 32 EXPECT_EQ(20 * factor, rect.height); |
33 } | 33 } |
34 | 34 |
35 MultiVersionStructPtr MakeMultiVersionStruct() { | 35 MultiVersionStructPtr MakeMultiVersionStruct() { |
36 MultiVersionStructPtr output(MultiVersionStruct::New()); | 36 MultiVersionStructPtr output(MultiVersionStruct::New()); |
37 output->f_int32 = 123; | 37 output->f_int32 = 123; |
38 output->f_rect = MakeRect(5); | 38 output->f_rect = MakeRect(5); |
39 output->f_string = "hello"; | 39 output->f_string.emplace("hello"); |
40 output->f_array = Array<int8_t>(3); | 40 output->f_array.emplace(3); |
41 output->f_array[0] = 10; | 41 (*output->f_array)[0] = 10; |
42 output->f_array[1] = 9; | 42 (*output->f_array)[1] = 9; |
43 output->f_array[2] = 8; | 43 (*output->f_array)[2] = 8; |
44 MessagePipe pipe; | 44 MessagePipe pipe; |
45 output->f_message_pipe = std::move(pipe.handle0); | 45 output->f_message_pipe = std::move(pipe.handle0); |
46 output->f_int16 = 42; | 46 output->f_int16 = 42; |
47 | 47 |
48 return output; | 48 return output; |
49 } | 49 } |
50 | 50 |
51 template <typename U, typename T> | 51 template <typename U, typename T> |
52 U SerializeAndDeserialize(T input) { | 52 U SerializeAndDeserialize(T input) { |
53 using InputDataType = typename mojo::internal::MojomTypeTraits<T>::Data*; | 53 using InputDataType = typename mojo::internal::MojomTypeTraits<T>::Data*; |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 } | 100 } |
101 | 101 |
102 TEST_F(StructTest, Clone) { | 102 TEST_F(StructTest, Clone) { |
103 NamedRegionPtr region; | 103 NamedRegionPtr region; |
104 | 104 |
105 NamedRegionPtr clone_region = region.Clone(); | 105 NamedRegionPtr clone_region = region.Clone(); |
106 EXPECT_TRUE(clone_region.is_null()); | 106 EXPECT_TRUE(clone_region.is_null()); |
107 | 107 |
108 region = NamedRegion::New(); | 108 region = NamedRegion::New(); |
109 clone_region = region.Clone(); | 109 clone_region = region.Clone(); |
110 EXPECT_TRUE(clone_region->name.is_null()); | 110 EXPECT_FALSE(clone_region->name); |
111 EXPECT_TRUE(clone_region->rects.is_null()); | 111 EXPECT_FALSE(clone_region->rects); |
112 | 112 |
113 region->name = "hello world"; | 113 region->name.emplace("hello world"); |
114 clone_region = region.Clone(); | 114 clone_region = region.Clone(); |
115 EXPECT_EQ(region->name, clone_region->name); | 115 EXPECT_EQ(region->name, clone_region->name); |
116 | 116 |
117 region->rects = Array<RectPtr>(2); | 117 region->rects.emplace(2); |
118 region->rects[1] = MakeRect(); | 118 (*region->rects)[1] = MakeRect(); |
119 clone_region = region.Clone(); | 119 clone_region = region.Clone(); |
120 EXPECT_EQ(2u, clone_region->rects.size()); | 120 EXPECT_EQ(2u, clone_region->rects->size()); |
121 EXPECT_TRUE(clone_region->rects[0].is_null()); | 121 EXPECT_TRUE((*clone_region->rects)[0].is_null()); |
122 CheckRect(*clone_region->rects[1]); | 122 CheckRect(*(*clone_region->rects)[1]); |
123 | 123 |
124 // NoDefaultFieldValues contains handles, so Clone() is not available, but | 124 // NoDefaultFieldValues contains handles, so Clone() is not available, but |
125 // NoDefaultFieldValuesPtr should still compile. | 125 // NoDefaultFieldValuesPtr should still compile. |
126 NoDefaultFieldValuesPtr no_default_field_values(NoDefaultFieldValues::New()); | 126 NoDefaultFieldValuesPtr no_default_field_values(NoDefaultFieldValues::New()); |
127 EXPECT_FALSE(no_default_field_values->f13.is_valid()); | 127 EXPECT_FALSE(no_default_field_values->f13.is_valid()); |
128 } | 128 } |
129 | 129 |
130 // Serialization test of a struct with no pointer or handle members. | 130 // Serialization test of a struct with no pointer or handle members. |
131 TEST_F(StructTest, Serialization_Basic) { | 131 TEST_F(StructTest, Serialization_Basic) { |
132 RectPtr rect(MakeRect()); | 132 RectPtr rect(MakeRect()); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 RectPairPtr pair2; | 174 RectPairPtr pair2; |
175 mojo::internal::Deserialize<RectPairPtr>(data, &pair2, nullptr); | 175 mojo::internal::Deserialize<RectPairPtr>(data, &pair2, nullptr); |
176 | 176 |
177 CheckRect(*pair2->first); | 177 CheckRect(*pair2->first); |
178 CheckRect(*pair2->second); | 178 CheckRect(*pair2->second); |
179 } | 179 } |
180 | 180 |
181 // Serialization test of a struct with an array member. | 181 // Serialization test of a struct with an array member. |
182 TEST_F(StructTest, Serialization_ArrayPointers) { | 182 TEST_F(StructTest, Serialization_ArrayPointers) { |
183 NamedRegionPtr region(NamedRegion::New()); | 183 NamedRegionPtr region(NamedRegion::New()); |
184 region->name = "region"; | 184 region->name.emplace("region"); |
185 region->rects = Array<RectPtr>::New(4); | 185 region->rects.emplace(4); |
186 for (size_t i = 0; i < region->rects.size(); ++i) | 186 for (size_t i = 0; i < region->rects->size(); ++i) |
187 region->rects[i] = MakeRect(static_cast<int32_t>(i) + 1); | 187 (*region->rects)[i] = MakeRect(static_cast<int32_t>(i) + 1); |
188 | 188 |
189 size_t size = | 189 size_t size = |
190 mojo::internal::PrepareToSerialize<NamedRegionPtr>(region, nullptr); | 190 mojo::internal::PrepareToSerialize<NamedRegionPtr>(region, nullptr); |
191 EXPECT_EQ(8U + // header | 191 EXPECT_EQ(8U + // header |
192 8U + // name pointer | 192 8U + // name pointer |
193 8U + // rects pointer | 193 8U + // rects pointer |
194 8U + // name header | 194 8U + // name header |
195 8U + // name payload (rounded up) | 195 8U + // name payload (rounded up) |
196 8U + // rects header | 196 8U + // rects header |
197 4 * 8U + // rects payload (four pointers) | 197 4 * 8U + // rects payload (four pointers) |
198 4 * (8U + // rect header | 198 4 * (8U + // rect header |
199 16U), // rect payload (four ints) | 199 16U), // rect payload (four ints) |
200 size); | 200 size); |
201 | 201 |
202 mojo::internal::FixedBufferForTesting buf(size); | 202 mojo::internal::FixedBufferForTesting buf(size); |
203 internal::NamedRegion_Data* data; | 203 internal::NamedRegion_Data* data; |
204 mojo::internal::Serialize<NamedRegionPtr>(region, &buf, &data, nullptr); | 204 mojo::internal::Serialize<NamedRegionPtr>(region, &buf, &data, nullptr); |
205 | 205 |
206 NamedRegionPtr region2; | 206 NamedRegionPtr region2; |
207 mojo::internal::Deserialize<NamedRegionPtr>(data, ®ion2, nullptr); | 207 mojo::internal::Deserialize<NamedRegionPtr>(data, ®ion2, nullptr); |
208 | 208 |
209 EXPECT_EQ(String("region"), region2->name); | 209 EXPECT_EQ("region", *region2->name); |
210 | 210 |
211 EXPECT_EQ(4U, region2->rects.size()); | 211 EXPECT_EQ(4U, region2->rects->size()); |
212 for (size_t i = 0; i < region2->rects.size(); ++i) | 212 for (size_t i = 0; i < region2->rects->size(); ++i) |
213 CheckRect(*region2->rects[i], static_cast<int32_t>(i) + 1); | 213 CheckRect(*(*region2->rects)[i], static_cast<int32_t>(i) + 1); |
214 } | 214 } |
215 | 215 |
216 // Serialization test of a struct with null array pointers. | 216 // Serialization test of a struct with null array pointers. |
217 TEST_F(StructTest, Serialization_NullArrayPointers) { | 217 TEST_F(StructTest, Serialization_NullArrayPointers) { |
218 NamedRegionPtr region(NamedRegion::New()); | 218 NamedRegionPtr region(NamedRegion::New()); |
219 EXPECT_TRUE(region->name.is_null()); | 219 EXPECT_FALSE(region->name); |
220 EXPECT_TRUE(region->rects.is_null()); | 220 EXPECT_FALSE(region->rects); |
221 | 221 |
222 size_t size = | 222 size_t size = |
223 mojo::internal::PrepareToSerialize<NamedRegionPtr>(region, nullptr); | 223 mojo::internal::PrepareToSerialize<NamedRegionPtr>(region, nullptr); |
224 EXPECT_EQ(8U + // header | 224 EXPECT_EQ(8U + // header |
225 8U + // name pointer | 225 8U + // name pointer |
226 8U, // rects pointer | 226 8U, // rects pointer |
227 size); | 227 size); |
228 | 228 |
229 mojo::internal::FixedBufferForTesting buf(size); | 229 mojo::internal::FixedBufferForTesting buf(size); |
230 internal::NamedRegion_Data* data; | 230 internal::NamedRegion_Data* data; |
231 mojo::internal::Serialize<NamedRegionPtr>(region, &buf, &data, nullptr); | 231 mojo::internal::Serialize<NamedRegionPtr>(region, &buf, &data, nullptr); |
232 | 232 |
233 NamedRegionPtr region2; | 233 NamedRegionPtr region2; |
234 mojo::internal::Deserialize<NamedRegionPtr>(data, ®ion2, nullptr); | 234 mojo::internal::Deserialize<NamedRegionPtr>(data, ®ion2, nullptr); |
235 | 235 |
236 EXPECT_TRUE(region2->name.is_null()); | 236 EXPECT_FALSE(region2->name); |
237 EXPECT_TRUE(region2->rects.is_null()); | 237 EXPECT_FALSE(region2->rects); |
238 } | 238 } |
239 | 239 |
240 // Tests deserializing structs as a newer version. | 240 // Tests deserializing structs as a newer version. |
241 TEST_F(StructTest, Versioning_OldToNew) { | 241 TEST_F(StructTest, Versioning_OldToNew) { |
242 { | 242 { |
243 MultiVersionStructV0Ptr input(MultiVersionStructV0::New()); | 243 MultiVersionStructV0Ptr input(MultiVersionStructV0::New()); |
244 input->f_int32 = 123; | 244 input->f_int32 = 123; |
245 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | 245 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); |
246 expected_output->f_int32 = 123; | 246 expected_output->f_int32 = 123; |
247 | 247 |
(...skipping 14 matching lines...) Expand all Loading... |
262 MultiVersionStructPtr output = | 262 MultiVersionStructPtr output = |
263 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); | 263 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
264 EXPECT_TRUE(output); | 264 EXPECT_TRUE(output); |
265 EXPECT_TRUE(output->Equals(*expected_output)); | 265 EXPECT_TRUE(output->Equals(*expected_output)); |
266 } | 266 } |
267 | 267 |
268 { | 268 { |
269 MultiVersionStructV3Ptr input(MultiVersionStructV3::New()); | 269 MultiVersionStructV3Ptr input(MultiVersionStructV3::New()); |
270 input->f_int32 = 123; | 270 input->f_int32 = 123; |
271 input->f_rect = MakeRect(5); | 271 input->f_rect = MakeRect(5); |
272 input->f_string = "hello"; | 272 input->f_string.emplace("hello"); |
273 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | 273 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); |
274 expected_output->f_int32 = 123; | 274 expected_output->f_int32 = 123; |
275 expected_output->f_rect = MakeRect(5); | 275 expected_output->f_rect = MakeRect(5); |
276 expected_output->f_string = "hello"; | 276 expected_output->f_string.emplace("hello"); |
277 | 277 |
278 MultiVersionStructPtr output = | 278 MultiVersionStructPtr output = |
279 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); | 279 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
280 EXPECT_TRUE(output); | 280 EXPECT_TRUE(output); |
281 EXPECT_TRUE(output->Equals(*expected_output)); | 281 EXPECT_TRUE(output->Equals(*expected_output)); |
282 } | 282 } |
283 | 283 |
284 { | 284 { |
285 MultiVersionStructV5Ptr input(MultiVersionStructV5::New()); | 285 MultiVersionStructV5Ptr input(MultiVersionStructV5::New()); |
286 input->f_int32 = 123; | 286 input->f_int32 = 123; |
287 input->f_rect = MakeRect(5); | 287 input->f_rect = MakeRect(5); |
288 input->f_string = "hello"; | 288 input->f_string.emplace("hello"); |
289 input->f_array = Array<int8_t>(3); | 289 input->f_array.emplace(3); |
290 input->f_array[0] = 10; | 290 (*input->f_array)[0] = 10; |
291 input->f_array[1] = 9; | 291 (*input->f_array)[1] = 9; |
292 input->f_array[2] = 8; | 292 (*input->f_array)[2] = 8; |
293 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | 293 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); |
294 expected_output->f_int32 = 123; | 294 expected_output->f_int32 = 123; |
295 expected_output->f_rect = MakeRect(5); | 295 expected_output->f_rect = MakeRect(5); |
296 expected_output->f_string = "hello"; | 296 expected_output->f_string.emplace("hello"); |
297 expected_output->f_array = Array<int8_t>(3); | 297 expected_output->f_array.emplace(3); |
298 expected_output->f_array[0] = 10; | 298 (*expected_output->f_array)[0] = 10; |
299 expected_output->f_array[1] = 9; | 299 (*expected_output->f_array)[1] = 9; |
300 expected_output->f_array[2] = 8; | 300 (*expected_output->f_array)[2] = 8; |
301 | 301 |
302 MultiVersionStructPtr output = | 302 MultiVersionStructPtr output = |
303 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); | 303 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
304 EXPECT_TRUE(output); | 304 EXPECT_TRUE(output); |
305 EXPECT_TRUE(output->Equals(*expected_output)); | 305 EXPECT_TRUE(output->Equals(*expected_output)); |
306 } | 306 } |
307 | 307 |
308 { | 308 { |
309 MultiVersionStructV7Ptr input(MultiVersionStructV7::New()); | 309 MultiVersionStructV7Ptr input(MultiVersionStructV7::New()); |
310 input->f_int32 = 123; | 310 input->f_int32 = 123; |
311 input->f_rect = MakeRect(5); | 311 input->f_rect = MakeRect(5); |
312 input->f_string = "hello"; | 312 input->f_string.emplace("hello"); |
313 input->f_array = Array<int8_t>(3); | 313 input->f_array.emplace(3); |
314 input->f_array[0] = 10; | 314 (*input->f_array)[0] = 10; |
315 input->f_array[1] = 9; | 315 (*input->f_array)[1] = 9; |
316 input->f_array[2] = 8; | 316 (*input->f_array)[2] = 8; |
317 MessagePipe pipe; | 317 MessagePipe pipe; |
318 input->f_message_pipe = std::move(pipe.handle0); | 318 input->f_message_pipe = std::move(pipe.handle0); |
319 | 319 |
320 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | 320 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); |
321 expected_output->f_int32 = 123; | 321 expected_output->f_int32 = 123; |
322 expected_output->f_rect = MakeRect(5); | 322 expected_output->f_rect = MakeRect(5); |
323 expected_output->f_string = "hello"; | 323 expected_output->f_string.emplace("hello"); |
324 expected_output->f_array = Array<int8_t>(3); | 324 expected_output->f_array.emplace(3); |
325 expected_output->f_array[0] = 10; | 325 (*expected_output->f_array)[0] = 10; |
326 expected_output->f_array[1] = 9; | 326 (*expected_output->f_array)[1] = 9; |
327 expected_output->f_array[2] = 8; | 327 (*expected_output->f_array)[2] = 8; |
328 // Save the raw handle value separately so that we can compare later. | 328 // Save the raw handle value separately so that we can compare later. |
329 MojoHandle expected_handle = input->f_message_pipe.get().value(); | 329 MojoHandle expected_handle = input->f_message_pipe.get().value(); |
330 | 330 |
331 MultiVersionStructPtr output = | 331 MultiVersionStructPtr output = |
332 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); | 332 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
333 EXPECT_TRUE(output); | 333 EXPECT_TRUE(output); |
334 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); | 334 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); |
335 output->f_message_pipe.reset(); | 335 output->f_message_pipe.reset(); |
336 EXPECT_TRUE(output->Equals(*expected_output)); | 336 EXPECT_TRUE(output->Equals(*expected_output)); |
337 } | 337 } |
338 } | 338 } |
339 | 339 |
340 // Tests deserializing structs as an older version. | 340 // Tests deserializing structs as an older version. |
341 TEST_F(StructTest, Versioning_NewToOld) { | 341 TEST_F(StructTest, Versioning_NewToOld) { |
342 { | 342 { |
343 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 343 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
344 MultiVersionStructV7Ptr expected_output(MultiVersionStructV7::New()); | 344 MultiVersionStructV7Ptr expected_output(MultiVersionStructV7::New()); |
345 expected_output->f_int32 = 123; | 345 expected_output->f_int32 = 123; |
346 expected_output->f_rect = MakeRect(5); | 346 expected_output->f_rect = MakeRect(5); |
347 expected_output->f_string = "hello"; | 347 expected_output->f_string.emplace("hello"); |
348 expected_output->f_array = Array<int8_t>(3); | 348 expected_output->f_array.emplace(3); |
349 expected_output->f_array[0] = 10; | 349 (*expected_output->f_array)[0] = 10; |
350 expected_output->f_array[1] = 9; | 350 (*expected_output->f_array)[1] = 9; |
351 expected_output->f_array[2] = 8; | 351 (*expected_output->f_array)[2] = 8; |
352 // Save the raw handle value separately so that we can compare later. | 352 // Save the raw handle value separately so that we can compare later. |
353 MojoHandle expected_handle = input->f_message_pipe.get().value(); | 353 MojoHandle expected_handle = input->f_message_pipe.get().value(); |
354 | 354 |
355 MultiVersionStructV7Ptr output = | 355 MultiVersionStructV7Ptr output = |
356 SerializeAndDeserialize<MultiVersionStructV7Ptr>(std::move(input)); | 356 SerializeAndDeserialize<MultiVersionStructV7Ptr>(std::move(input)); |
357 EXPECT_TRUE(output); | 357 EXPECT_TRUE(output); |
358 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); | 358 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); |
359 output->f_message_pipe.reset(); | 359 output->f_message_pipe.reset(); |
360 EXPECT_TRUE(output->Equals(*expected_output)); | 360 EXPECT_TRUE(output->Equals(*expected_output)); |
361 } | 361 } |
362 | 362 |
363 { | 363 { |
364 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 364 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
365 MultiVersionStructV5Ptr expected_output(MultiVersionStructV5::New()); | 365 MultiVersionStructV5Ptr expected_output(MultiVersionStructV5::New()); |
366 expected_output->f_int32 = 123; | 366 expected_output->f_int32 = 123; |
367 expected_output->f_rect = MakeRect(5); | 367 expected_output->f_rect = MakeRect(5); |
368 expected_output->f_string = "hello"; | 368 expected_output->f_string.emplace("hello"); |
369 expected_output->f_array = Array<int8_t>(3); | 369 expected_output->f_array.emplace(3); |
370 expected_output->f_array[0] = 10; | 370 (*expected_output->f_array)[0] = 10; |
371 expected_output->f_array[1] = 9; | 371 (*expected_output->f_array)[1] = 9; |
372 expected_output->f_array[2] = 8; | 372 (*expected_output->f_array)[2] = 8; |
373 | 373 |
374 MultiVersionStructV5Ptr output = | 374 MultiVersionStructV5Ptr output = |
375 SerializeAndDeserialize<MultiVersionStructV5Ptr>(std::move(input)); | 375 SerializeAndDeserialize<MultiVersionStructV5Ptr>(std::move(input)); |
376 EXPECT_TRUE(output); | 376 EXPECT_TRUE(output); |
377 EXPECT_TRUE(output->Equals(*expected_output)); | 377 EXPECT_TRUE(output->Equals(*expected_output)); |
378 } | 378 } |
379 | 379 |
380 { | 380 { |
381 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 381 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
382 MultiVersionStructV3Ptr expected_output(MultiVersionStructV3::New()); | 382 MultiVersionStructV3Ptr expected_output(MultiVersionStructV3::New()); |
383 expected_output->f_int32 = 123; | 383 expected_output->f_int32 = 123; |
384 expected_output->f_rect = MakeRect(5); | 384 expected_output->f_rect = MakeRect(5); |
385 expected_output->f_string = "hello"; | 385 expected_output->f_string.emplace("hello"); |
386 | 386 |
387 MultiVersionStructV3Ptr output = | 387 MultiVersionStructV3Ptr output = |
388 SerializeAndDeserialize<MultiVersionStructV3Ptr>(std::move(input)); | 388 SerializeAndDeserialize<MultiVersionStructV3Ptr>(std::move(input)); |
389 EXPECT_TRUE(output); | 389 EXPECT_TRUE(output); |
390 EXPECT_TRUE(output->Equals(*expected_output)); | 390 EXPECT_TRUE(output->Equals(*expected_output)); |
391 } | 391 } |
392 | 392 |
393 { | 393 { |
394 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 394 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
395 MultiVersionStructV1Ptr expected_output(MultiVersionStructV1::New()); | 395 MultiVersionStructV1Ptr expected_output(MultiVersionStructV1::New()); |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 mojo::Array<uint8_t> data = Rect::Serialize(&rect); | 513 mojo::Array<uint8_t> data = Rect::Serialize(&rect); |
514 | 514 |
515 RectPtr output; | 515 RectPtr output; |
516 ASSERT_TRUE(Rect::Deserialize(std::move(data), &output)); | 516 ASSERT_TRUE(Rect::Deserialize(std::move(data), &output)); |
517 EXPECT_TRUE(output.Equals(cloned_rect)); | 517 EXPECT_TRUE(output.Equals(cloned_rect)); |
518 } | 518 } |
519 | 519 |
520 { | 520 { |
521 // A struct containing other objects. | 521 // A struct containing other objects. |
522 NamedRegionPtr region(NamedRegion::New()); | 522 NamedRegionPtr region(NamedRegion::New()); |
523 region->name = "region"; | 523 region->name.emplace("region"); |
524 region->rects = Array<RectPtr>::New(4); | 524 region->rects.emplace(3); |
525 for (size_t i = 0; i < region->rects.size(); ++i) | 525 for (size_t i = 0; i < region->rects->size(); ++i) |
526 region->rects[i] = MakeRect(static_cast<int32_t>(i) + 1); | 526 (*region->rects)[i] = MakeRect(static_cast<int32_t>(i) + 1); |
527 | 527 |
528 NamedRegionPtr cloned_region = region.Clone(); | 528 NamedRegionPtr cloned_region = region.Clone(); |
529 mojo::Array<uint8_t> data = NamedRegion::Serialize(®ion); | 529 mojo::Array<uint8_t> data = NamedRegion::Serialize(®ion); |
530 | 530 |
531 // Make sure that the serialized result gets pointers encoded properly. | 531 // Make sure that the serialized result gets pointers encoded properly. |
532 mojo::Array<uint8_t> cloned_data = data.Clone(); | 532 mojo::Array<uint8_t> cloned_data = data.Clone(); |
533 NamedRegionPtr output; | 533 NamedRegionPtr output; |
534 ASSERT_TRUE(NamedRegion::Deserialize(std::move(cloned_data), &output)); | 534 ASSERT_TRUE(NamedRegion::Deserialize(std::move(cloned_data), &output)); |
535 EXPECT_TRUE(output.Equals(cloned_region)); | 535 EXPECT_TRUE(output.Equals(cloned_region)); |
536 } | 536 } |
537 | 537 |
538 { | 538 { |
539 // Deserialization failure. | 539 // Deserialization failure. |
540 RectPtr rect = MakeRect(); | 540 RectPtr rect = MakeRect(); |
541 mojo::Array<uint8_t> data = Rect::Serialize(&rect); | 541 mojo::Array<uint8_t> data = Rect::Serialize(&rect); |
542 | 542 |
543 NamedRegionPtr output; | 543 NamedRegionPtr output; |
544 EXPECT_FALSE(NamedRegion::Deserialize(std::move(data), &output)); | 544 EXPECT_FALSE(NamedRegion::Deserialize(std::move(data), &output)); |
545 } | 545 } |
546 } | 546 } |
547 | 547 |
548 } // namespace test | 548 } // namespace test |
549 } // namespace mojo | 549 } // namespace mojo |
OLD | NEW |