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 <string.h> | 5 #include <string.h> |
| 6 #include <utility> |
6 | 7 |
7 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" | 8 #include "mojo/public/cpp/bindings/lib/fixed_buffer.h" |
8 #include "mojo/public/cpp/system/message_pipe.h" | 9 #include "mojo/public/cpp/system/message_pipe.h" |
9 #include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h" | 10 #include "mojo/public/interfaces/bindings/tests/test_structs.mojom.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
11 | 12 |
12 namespace mojo { | 13 namespace mojo { |
13 namespace test { | 14 namespace test { |
14 namespace { | 15 namespace { |
15 | 16 |
16 RectPtr MakeRect(int32_t factor = 1) { | 17 RectPtr MakeRect(int32_t factor = 1) { |
17 RectPtr rect(Rect::New()); | 18 RectPtr rect(Rect::New()); |
18 rect->x = 1 * factor; | 19 rect->x = 1 * factor; |
19 rect->y = 2 * factor; | 20 rect->y = 2 * factor; |
20 rect->width = 10 * factor; | 21 rect->width = 10 * factor; |
21 rect->height = 20 * factor; | 22 rect->height = 20 * factor; |
22 return rect.Pass(); | 23 return rect; |
23 } | 24 } |
24 | 25 |
25 void CheckRect(const Rect& rect, int32_t factor = 1) { | 26 void CheckRect(const Rect& rect, int32_t factor = 1) { |
26 EXPECT_EQ(1 * factor, rect.x); | 27 EXPECT_EQ(1 * factor, rect.x); |
27 EXPECT_EQ(2 * factor, rect.y); | 28 EXPECT_EQ(2 * factor, rect.y); |
28 EXPECT_EQ(10 * factor, rect.width); | 29 EXPECT_EQ(10 * factor, rect.width); |
29 EXPECT_EQ(20 * factor, rect.height); | 30 EXPECT_EQ(20 * factor, rect.height); |
30 } | 31 } |
31 | 32 |
32 MultiVersionStructPtr MakeMultiVersionStruct() { | 33 MultiVersionStructPtr MakeMultiVersionStruct() { |
33 MultiVersionStructPtr output(MultiVersionStruct::New()); | 34 MultiVersionStructPtr output(MultiVersionStruct::New()); |
34 output->f_int32 = 123; | 35 output->f_int32 = 123; |
35 output->f_rect = MakeRect(5); | 36 output->f_rect = MakeRect(5); |
36 output->f_string = "hello"; | 37 output->f_string = "hello"; |
37 output->f_array = Array<int8_t>(3); | 38 output->f_array = Array<int8_t>(3); |
38 output->f_array[0] = 10; | 39 output->f_array[0] = 10; |
39 output->f_array[1] = 9; | 40 output->f_array[1] = 9; |
40 output->f_array[2] = 8; | 41 output->f_array[2] = 8; |
41 MessagePipe pipe; | 42 MessagePipe pipe; |
42 output->f_message_pipe = pipe.handle0.Pass(); | 43 output->f_message_pipe = std::move(pipe.handle0); |
43 output->f_int16 = 42; | 44 output->f_int16 = 42; |
44 | 45 |
45 return output.Pass(); | 46 return output; |
46 } | 47 } |
47 | 48 |
48 template <typename U, typename T> | 49 template <typename U, typename T> |
49 U SerializeAndDeserialize(T input) { | 50 U SerializeAndDeserialize(T input) { |
50 typedef typename mojo::internal::WrapperTraits<T>::DataType InputDataType; | 51 typedef typename mojo::internal::WrapperTraits<T>::DataType InputDataType; |
51 typedef typename mojo::internal::WrapperTraits<U>::DataType OutputDataType; | 52 typedef typename mojo::internal::WrapperTraits<U>::DataType OutputDataType; |
52 | 53 |
53 size_t size = GetSerializedSize_(input); | 54 size_t size = GetSerializedSize_(input); |
54 mojo::internal::FixedBufferForTesting buf(size + 32); | 55 mojo::internal::FixedBufferForTesting buf(size + 32); |
55 InputDataType data; | 56 InputDataType data; |
56 Serialize_(input.Pass(), &buf, &data); | 57 Serialize_(std::move(input), &buf, &data); |
57 | 58 |
58 std::vector<Handle> handles; | 59 std::vector<Handle> handles; |
59 data->EncodePointersAndHandles(&handles); | 60 data->EncodePointersAndHandles(&handles); |
60 | 61 |
61 // Set the subsequent area to a special value, so that we can find out if we | 62 // Set the subsequent area to a special value, so that we can find out if we |
62 // mistakenly access the area. | 63 // mistakenly access the area. |
63 void* subsequent_area = buf.Allocate(32); | 64 void* subsequent_area = buf.Allocate(32); |
64 memset(subsequent_area, 0xAA, 32); | 65 memset(subsequent_area, 0xAA, 32); |
65 | 66 |
66 OutputDataType output_data = reinterpret_cast<OutputDataType>(data); | 67 OutputDataType output_data = reinterpret_cast<OutputDataType>(data); |
67 output_data->DecodePointersAndHandles(&handles); | 68 output_data->DecodePointersAndHandles(&handles); |
68 | 69 |
69 U output; | 70 U output; |
70 Deserialize_(output_data, &output, nullptr); | 71 Deserialize_(output_data, &output, nullptr); |
71 return output.Pass(); | 72 return std::move(output); |
72 } | 73 } |
73 | 74 |
74 using StructTest = testing::Test; | 75 using StructTest = testing::Test; |
75 | 76 |
76 } // namespace | 77 } // namespace |
77 | 78 |
78 TEST_F(StructTest, Rect) { | 79 TEST_F(StructTest, Rect) { |
79 RectPtr rect; | 80 RectPtr rect; |
80 EXPECT_TRUE(rect.is_null()); | 81 EXPECT_TRUE(rect.is_null()); |
81 EXPECT_TRUE(!rect); | 82 EXPECT_TRUE(!rect); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 | 130 |
130 // Serialization test of a struct with no pointer or handle members. | 131 // Serialization test of a struct with no pointer or handle members. |
131 TEST_F(StructTest, Serialization_Basic) { | 132 TEST_F(StructTest, Serialization_Basic) { |
132 RectPtr rect(MakeRect()); | 133 RectPtr rect(MakeRect()); |
133 | 134 |
134 size_t size = GetSerializedSize_(rect); | 135 size_t size = GetSerializedSize_(rect); |
135 EXPECT_EQ(8U + 16U, size); | 136 EXPECT_EQ(8U + 16U, size); |
136 | 137 |
137 mojo::internal::FixedBufferForTesting buf(size); | 138 mojo::internal::FixedBufferForTesting buf(size); |
138 internal::Rect_Data* data; | 139 internal::Rect_Data* data; |
139 Serialize_(rect.Pass(), &buf, &data); | 140 Serialize_(std::move(rect), &buf, &data); |
140 | 141 |
141 RectPtr rect2; | 142 RectPtr rect2; |
142 Deserialize_(data, &rect2, nullptr); | 143 Deserialize_(data, &rect2, nullptr); |
143 | 144 |
144 CheckRect(*rect2); | 145 CheckRect(*rect2); |
145 } | 146 } |
146 | 147 |
147 // Construction of a struct with struct pointers from null. | 148 // Construction of a struct with struct pointers from null. |
148 TEST_F(StructTest, Construction_StructPointers) { | 149 TEST_F(StructTest, Construction_StructPointers) { |
149 RectPairPtr pair; | 150 RectPairPtr pair; |
(...skipping 12 matching lines...) Expand all Loading... |
162 TEST_F(StructTest, Serialization_StructPointers) { | 163 TEST_F(StructTest, Serialization_StructPointers) { |
163 RectPairPtr pair(RectPair::New()); | 164 RectPairPtr pair(RectPair::New()); |
164 pair->first = MakeRect(); | 165 pair->first = MakeRect(); |
165 pair->second = MakeRect(); | 166 pair->second = MakeRect(); |
166 | 167 |
167 size_t size = GetSerializedSize_(pair); | 168 size_t size = GetSerializedSize_(pair); |
168 EXPECT_EQ(8U + 16U + 2 * (8U + 16U), size); | 169 EXPECT_EQ(8U + 16U + 2 * (8U + 16U), size); |
169 | 170 |
170 mojo::internal::FixedBufferForTesting buf(size); | 171 mojo::internal::FixedBufferForTesting buf(size); |
171 internal::RectPair_Data* data; | 172 internal::RectPair_Data* data; |
172 Serialize_(pair.Pass(), &buf, &data); | 173 Serialize_(std::move(pair), &buf, &data); |
173 | 174 |
174 RectPairPtr pair2; | 175 RectPairPtr pair2; |
175 Deserialize_(data, &pair2, nullptr); | 176 Deserialize_(data, &pair2, nullptr); |
176 | 177 |
177 CheckRect(*pair2->first); | 178 CheckRect(*pair2->first); |
178 CheckRect(*pair2->second); | 179 CheckRect(*pair2->second); |
179 } | 180 } |
180 | 181 |
181 // Serialization test of a struct with an array member. | 182 // Serialization test of a struct with an array member. |
182 TEST_F(StructTest, Serialization_ArrayPointers) { | 183 TEST_F(StructTest, Serialization_ArrayPointers) { |
(...skipping 10 matching lines...) Expand all Loading... |
193 8U + // name header | 194 8U + // name header |
194 8U + // name payload (rounded up) | 195 8U + // name payload (rounded up) |
195 8U + // rects header | 196 8U + // rects header |
196 4 * 8U + // rects payload (four pointers) | 197 4 * 8U + // rects payload (four pointers) |
197 4 * (8U + // rect header | 198 4 * (8U + // rect header |
198 16U), // rect payload (four ints) | 199 16U), // rect payload (four ints) |
199 size); | 200 size); |
200 | 201 |
201 mojo::internal::FixedBufferForTesting buf(size); | 202 mojo::internal::FixedBufferForTesting buf(size); |
202 internal::NamedRegion_Data* data; | 203 internal::NamedRegion_Data* data; |
203 Serialize_(region.Pass(), &buf, &data); | 204 Serialize_(std::move(region), &buf, &data); |
204 | 205 |
205 NamedRegionPtr region2; | 206 NamedRegionPtr region2; |
206 Deserialize_(data, ®ion2, nullptr); | 207 Deserialize_(data, ®ion2, nullptr); |
207 | 208 |
208 EXPECT_EQ(String("region"), region2->name); | 209 EXPECT_EQ(String("region"), region2->name); |
209 | 210 |
210 EXPECT_EQ(4U, region2->rects.size()); | 211 EXPECT_EQ(4U, region2->rects.size()); |
211 for (size_t i = 0; i < region2->rects.size(); ++i) | 212 for (size_t i = 0; i < region2->rects.size(); ++i) |
212 CheckRect(*region2->rects[i], static_cast<int32_t>(i) + 1); | 213 CheckRect(*region2->rects[i], static_cast<int32_t>(i) + 1); |
213 } | 214 } |
214 | 215 |
215 // Serialization test of a struct with null array pointers. | 216 // Serialization test of a struct with null array pointers. |
216 TEST_F(StructTest, Serialization_NullArrayPointers) { | 217 TEST_F(StructTest, Serialization_NullArrayPointers) { |
217 NamedRegionPtr region(NamedRegion::New()); | 218 NamedRegionPtr region(NamedRegion::New()); |
218 EXPECT_TRUE(region->name.is_null()); | 219 EXPECT_TRUE(region->name.is_null()); |
219 EXPECT_TRUE(region->rects.is_null()); | 220 EXPECT_TRUE(region->rects.is_null()); |
220 | 221 |
221 size_t size = GetSerializedSize_(region); | 222 size_t size = GetSerializedSize_(region); |
222 EXPECT_EQ(8U + // header | 223 EXPECT_EQ(8U + // header |
223 8U + // name pointer | 224 8U + // name pointer |
224 8U, // rects pointer | 225 8U, // rects pointer |
225 size); | 226 size); |
226 | 227 |
227 mojo::internal::FixedBufferForTesting buf(size); | 228 mojo::internal::FixedBufferForTesting buf(size); |
228 internal::NamedRegion_Data* data; | 229 internal::NamedRegion_Data* data; |
229 Serialize_(region.Pass(), &buf, &data); | 230 Serialize_(std::move(region), &buf, &data); |
230 | 231 |
231 NamedRegionPtr region2; | 232 NamedRegionPtr region2; |
232 Deserialize_(data, ®ion2, nullptr); | 233 Deserialize_(data, ®ion2, nullptr); |
233 | 234 |
234 EXPECT_TRUE(region2->name.is_null()); | 235 EXPECT_TRUE(region2->name.is_null()); |
235 EXPECT_TRUE(region2->rects.is_null()); | 236 EXPECT_TRUE(region2->rects.is_null()); |
236 } | 237 } |
237 | 238 |
238 // Tests deserializing structs as a newer version. | 239 // Tests deserializing structs as a newer version. |
239 TEST_F(StructTest, Versioning_OldToNew) { | 240 TEST_F(StructTest, Versioning_OldToNew) { |
240 { | 241 { |
241 MultiVersionStructV0Ptr input(MultiVersionStructV0::New()); | 242 MultiVersionStructV0Ptr input(MultiVersionStructV0::New()); |
242 input->f_int32 = 123; | 243 input->f_int32 = 123; |
243 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | 244 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); |
244 expected_output->f_int32 = 123; | 245 expected_output->f_int32 = 123; |
245 | 246 |
246 MultiVersionStructPtr output = | 247 MultiVersionStructPtr output = |
247 SerializeAndDeserialize<MultiVersionStructPtr>(input.Pass()); | 248 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
248 EXPECT_TRUE(output); | 249 EXPECT_TRUE(output); |
249 EXPECT_TRUE(output->Equals(*expected_output)); | 250 EXPECT_TRUE(output->Equals(*expected_output)); |
250 } | 251 } |
251 | 252 |
252 { | 253 { |
253 MultiVersionStructV1Ptr input(MultiVersionStructV1::New()); | 254 MultiVersionStructV1Ptr input(MultiVersionStructV1::New()); |
254 input->f_int32 = 123; | 255 input->f_int32 = 123; |
255 input->f_rect = MakeRect(5); | 256 input->f_rect = MakeRect(5); |
256 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | 257 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); |
257 expected_output->f_int32 = 123; | 258 expected_output->f_int32 = 123; |
258 expected_output->f_rect = MakeRect(5); | 259 expected_output->f_rect = MakeRect(5); |
259 | 260 |
260 MultiVersionStructPtr output = | 261 MultiVersionStructPtr output = |
261 SerializeAndDeserialize<MultiVersionStructPtr>(input.Pass()); | 262 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
262 EXPECT_TRUE(output); | 263 EXPECT_TRUE(output); |
263 EXPECT_TRUE(output->Equals(*expected_output)); | 264 EXPECT_TRUE(output->Equals(*expected_output)); |
264 } | 265 } |
265 | 266 |
266 { | 267 { |
267 MultiVersionStructV3Ptr input(MultiVersionStructV3::New()); | 268 MultiVersionStructV3Ptr input(MultiVersionStructV3::New()); |
268 input->f_int32 = 123; | 269 input->f_int32 = 123; |
269 input->f_rect = MakeRect(5); | 270 input->f_rect = MakeRect(5); |
270 input->f_string = "hello"; | 271 input->f_string = "hello"; |
271 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | 272 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); |
272 expected_output->f_int32 = 123; | 273 expected_output->f_int32 = 123; |
273 expected_output->f_rect = MakeRect(5); | 274 expected_output->f_rect = MakeRect(5); |
274 expected_output->f_string = "hello"; | 275 expected_output->f_string = "hello"; |
275 | 276 |
276 MultiVersionStructPtr output = | 277 MultiVersionStructPtr output = |
277 SerializeAndDeserialize<MultiVersionStructPtr>(input.Pass()); | 278 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
278 EXPECT_TRUE(output); | 279 EXPECT_TRUE(output); |
279 EXPECT_TRUE(output->Equals(*expected_output)); | 280 EXPECT_TRUE(output->Equals(*expected_output)); |
280 } | 281 } |
281 | 282 |
282 { | 283 { |
283 MultiVersionStructV5Ptr input(MultiVersionStructV5::New()); | 284 MultiVersionStructV5Ptr input(MultiVersionStructV5::New()); |
284 input->f_int32 = 123; | 285 input->f_int32 = 123; |
285 input->f_rect = MakeRect(5); | 286 input->f_rect = MakeRect(5); |
286 input->f_string = "hello"; | 287 input->f_string = "hello"; |
287 input->f_array = Array<int8_t>(3); | 288 input->f_array = Array<int8_t>(3); |
288 input->f_array[0] = 10; | 289 input->f_array[0] = 10; |
289 input->f_array[1] = 9; | 290 input->f_array[1] = 9; |
290 input->f_array[2] = 8; | 291 input->f_array[2] = 8; |
291 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | 292 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); |
292 expected_output->f_int32 = 123; | 293 expected_output->f_int32 = 123; |
293 expected_output->f_rect = MakeRect(5); | 294 expected_output->f_rect = MakeRect(5); |
294 expected_output->f_string = "hello"; | 295 expected_output->f_string = "hello"; |
295 expected_output->f_array = Array<int8_t>(3); | 296 expected_output->f_array = Array<int8_t>(3); |
296 expected_output->f_array[0] = 10; | 297 expected_output->f_array[0] = 10; |
297 expected_output->f_array[1] = 9; | 298 expected_output->f_array[1] = 9; |
298 expected_output->f_array[2] = 8; | 299 expected_output->f_array[2] = 8; |
299 | 300 |
300 MultiVersionStructPtr output = | 301 MultiVersionStructPtr output = |
301 SerializeAndDeserialize<MultiVersionStructPtr>(input.Pass()); | 302 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
302 EXPECT_TRUE(output); | 303 EXPECT_TRUE(output); |
303 EXPECT_TRUE(output->Equals(*expected_output)); | 304 EXPECT_TRUE(output->Equals(*expected_output)); |
304 } | 305 } |
305 | 306 |
306 { | 307 { |
307 MultiVersionStructV7Ptr input(MultiVersionStructV7::New()); | 308 MultiVersionStructV7Ptr input(MultiVersionStructV7::New()); |
308 input->f_int32 = 123; | 309 input->f_int32 = 123; |
309 input->f_rect = MakeRect(5); | 310 input->f_rect = MakeRect(5); |
310 input->f_string = "hello"; | 311 input->f_string = "hello"; |
311 input->f_array = Array<int8_t>(3); | 312 input->f_array = Array<int8_t>(3); |
312 input->f_array[0] = 10; | 313 input->f_array[0] = 10; |
313 input->f_array[1] = 9; | 314 input->f_array[1] = 9; |
314 input->f_array[2] = 8; | 315 input->f_array[2] = 8; |
315 MessagePipe pipe; | 316 MessagePipe pipe; |
316 input->f_message_pipe = pipe.handle0.Pass(); | 317 input->f_message_pipe = std::move(pipe.handle0); |
317 | 318 |
318 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); | 319 MultiVersionStructPtr expected_output(MultiVersionStruct::New()); |
319 expected_output->f_int32 = 123; | 320 expected_output->f_int32 = 123; |
320 expected_output->f_rect = MakeRect(5); | 321 expected_output->f_rect = MakeRect(5); |
321 expected_output->f_string = "hello"; | 322 expected_output->f_string = "hello"; |
322 expected_output->f_array = Array<int8_t>(3); | 323 expected_output->f_array = Array<int8_t>(3); |
323 expected_output->f_array[0] = 10; | 324 expected_output->f_array[0] = 10; |
324 expected_output->f_array[1] = 9; | 325 expected_output->f_array[1] = 9; |
325 expected_output->f_array[2] = 8; | 326 expected_output->f_array[2] = 8; |
326 // Save the raw handle value separately so that we can compare later. | 327 // Save the raw handle value separately so that we can compare later. |
327 MojoHandle expected_handle = input->f_message_pipe.get().value(); | 328 MojoHandle expected_handle = input->f_message_pipe.get().value(); |
328 | 329 |
329 MultiVersionStructPtr output = | 330 MultiVersionStructPtr output = |
330 SerializeAndDeserialize<MultiVersionStructPtr>(input.Pass()); | 331 SerializeAndDeserialize<MultiVersionStructPtr>(std::move(input)); |
331 EXPECT_TRUE(output); | 332 EXPECT_TRUE(output); |
332 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); | 333 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); |
333 output->f_message_pipe.reset(); | 334 output->f_message_pipe.reset(); |
334 EXPECT_TRUE(output->Equals(*expected_output)); | 335 EXPECT_TRUE(output->Equals(*expected_output)); |
335 } | 336 } |
336 } | 337 } |
337 | 338 |
338 // Tests deserializing structs as an older version. | 339 // Tests deserializing structs as an older version. |
339 TEST_F(StructTest, Versioning_NewToOld) { | 340 TEST_F(StructTest, Versioning_NewToOld) { |
340 { | 341 { |
341 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 342 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
342 MultiVersionStructV7Ptr expected_output(MultiVersionStructV7::New()); | 343 MultiVersionStructV7Ptr expected_output(MultiVersionStructV7::New()); |
343 expected_output->f_int32 = 123; | 344 expected_output->f_int32 = 123; |
344 expected_output->f_rect = MakeRect(5); | 345 expected_output->f_rect = MakeRect(5); |
345 expected_output->f_string = "hello"; | 346 expected_output->f_string = "hello"; |
346 expected_output->f_array = Array<int8_t>(3); | 347 expected_output->f_array = Array<int8_t>(3); |
347 expected_output->f_array[0] = 10; | 348 expected_output->f_array[0] = 10; |
348 expected_output->f_array[1] = 9; | 349 expected_output->f_array[1] = 9; |
349 expected_output->f_array[2] = 8; | 350 expected_output->f_array[2] = 8; |
350 // Save the raw handle value separately so that we can compare later. | 351 // Save the raw handle value separately so that we can compare later. |
351 MojoHandle expected_handle = input->f_message_pipe.get().value(); | 352 MojoHandle expected_handle = input->f_message_pipe.get().value(); |
352 | 353 |
353 MultiVersionStructV7Ptr output = | 354 MultiVersionStructV7Ptr output = |
354 SerializeAndDeserialize<MultiVersionStructV7Ptr>(input.Pass()); | 355 SerializeAndDeserialize<MultiVersionStructV7Ptr>(std::move(input)); |
355 EXPECT_TRUE(output); | 356 EXPECT_TRUE(output); |
356 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); | 357 EXPECT_EQ(expected_handle, output->f_message_pipe.get().value()); |
357 output->f_message_pipe.reset(); | 358 output->f_message_pipe.reset(); |
358 EXPECT_TRUE(output->Equals(*expected_output)); | 359 EXPECT_TRUE(output->Equals(*expected_output)); |
359 } | 360 } |
360 | 361 |
361 { | 362 { |
362 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 363 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
363 MultiVersionStructV5Ptr expected_output(MultiVersionStructV5::New()); | 364 MultiVersionStructV5Ptr expected_output(MultiVersionStructV5::New()); |
364 expected_output->f_int32 = 123; | 365 expected_output->f_int32 = 123; |
365 expected_output->f_rect = MakeRect(5); | 366 expected_output->f_rect = MakeRect(5); |
366 expected_output->f_string = "hello"; | 367 expected_output->f_string = "hello"; |
367 expected_output->f_array = Array<int8_t>(3); | 368 expected_output->f_array = Array<int8_t>(3); |
368 expected_output->f_array[0] = 10; | 369 expected_output->f_array[0] = 10; |
369 expected_output->f_array[1] = 9; | 370 expected_output->f_array[1] = 9; |
370 expected_output->f_array[2] = 8; | 371 expected_output->f_array[2] = 8; |
371 | 372 |
372 MultiVersionStructV5Ptr output = | 373 MultiVersionStructV5Ptr output = |
373 SerializeAndDeserialize<MultiVersionStructV5Ptr>(input.Pass()); | 374 SerializeAndDeserialize<MultiVersionStructV5Ptr>(std::move(input)); |
374 EXPECT_TRUE(output); | 375 EXPECT_TRUE(output); |
375 EXPECT_TRUE(output->Equals(*expected_output)); | 376 EXPECT_TRUE(output->Equals(*expected_output)); |
376 } | 377 } |
377 | 378 |
378 { | 379 { |
379 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 380 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
380 MultiVersionStructV3Ptr expected_output(MultiVersionStructV3::New()); | 381 MultiVersionStructV3Ptr expected_output(MultiVersionStructV3::New()); |
381 expected_output->f_int32 = 123; | 382 expected_output->f_int32 = 123; |
382 expected_output->f_rect = MakeRect(5); | 383 expected_output->f_rect = MakeRect(5); |
383 expected_output->f_string = "hello"; | 384 expected_output->f_string = "hello"; |
384 | 385 |
385 MultiVersionStructV3Ptr output = | 386 MultiVersionStructV3Ptr output = |
386 SerializeAndDeserialize<MultiVersionStructV3Ptr>(input.Pass()); | 387 SerializeAndDeserialize<MultiVersionStructV3Ptr>(std::move(input)); |
387 EXPECT_TRUE(output); | 388 EXPECT_TRUE(output); |
388 EXPECT_TRUE(output->Equals(*expected_output)); | 389 EXPECT_TRUE(output->Equals(*expected_output)); |
389 } | 390 } |
390 | 391 |
391 { | 392 { |
392 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 393 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
393 MultiVersionStructV1Ptr expected_output(MultiVersionStructV1::New()); | 394 MultiVersionStructV1Ptr expected_output(MultiVersionStructV1::New()); |
394 expected_output->f_int32 = 123; | 395 expected_output->f_int32 = 123; |
395 expected_output->f_rect = MakeRect(5); | 396 expected_output->f_rect = MakeRect(5); |
396 | 397 |
397 MultiVersionStructV1Ptr output = | 398 MultiVersionStructV1Ptr output = |
398 SerializeAndDeserialize<MultiVersionStructV1Ptr>(input.Pass()); | 399 SerializeAndDeserialize<MultiVersionStructV1Ptr>(std::move(input)); |
399 EXPECT_TRUE(output); | 400 EXPECT_TRUE(output); |
400 EXPECT_TRUE(output->Equals(*expected_output)); | 401 EXPECT_TRUE(output->Equals(*expected_output)); |
401 } | 402 } |
402 | 403 |
403 { | 404 { |
404 MultiVersionStructPtr input = MakeMultiVersionStruct(); | 405 MultiVersionStructPtr input = MakeMultiVersionStruct(); |
405 MultiVersionStructV0Ptr expected_output(MultiVersionStructV0::New()); | 406 MultiVersionStructV0Ptr expected_output(MultiVersionStructV0::New()); |
406 expected_output->f_int32 = 123; | 407 expected_output->f_int32 = 123; |
407 | 408 |
408 MultiVersionStructV0Ptr output = | 409 MultiVersionStructV0Ptr output = |
409 SerializeAndDeserialize<MultiVersionStructV0Ptr>(input.Pass()); | 410 SerializeAndDeserialize<MultiVersionStructV0Ptr>(std::move(input)); |
410 EXPECT_TRUE(output); | 411 EXPECT_TRUE(output); |
411 EXPECT_TRUE(output->Equals(*expected_output)); | 412 EXPECT_TRUE(output->Equals(*expected_output)); |
412 } | 413 } |
413 } | 414 } |
414 } // namespace test | 415 } // namespace test |
415 } // namespace mojo | 416 } // namespace mojo |
OLD | NEW |