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 import unittest | 5 import unittest |
6 import module | 6 import module |
7 | 7 |
8 try: | 8 try: |
9 import mojom_translator | 9 import mojom_translator |
10 from generated import mojom_files_mojom | 10 from generated import mojom_files_mojom |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 graph.resolved_types['interface_key'] = mojom_types_mojom.UserDefinedType( | 79 graph.resolved_types['interface_key'] = mojom_types_mojom.UserDefinedType( |
80 interface_type=mojom_interface) | 80 interface_type=mojom_interface) |
81 | 81 |
82 mojom_struct = mojom_types_mojom.MojomStruct( | 82 mojom_struct = mojom_types_mojom.MojomStruct( |
83 fields=[], | 83 fields=[], |
84 decl_data=mojom_types_mojom.DeclarationData( | 84 decl_data=mojom_types_mojom.DeclarationData( |
85 short_name='AStruct', | 85 short_name='AStruct', |
86 full_identifier='foo.AStruct', | 86 full_identifier='foo.AStruct', |
87 source_file_info=mojom_types_mojom.SourceFileInfo( | 87 source_file_info=mojom_types_mojom.SourceFileInfo( |
88 file_name=file_name))) | 88 file_name=file_name))) |
| 89 add_version_info(mojom_struct, 0) |
89 graph.resolved_types['struct_key'] = mojom_types_mojom.UserDefinedType( | 90 graph.resolved_types['struct_key'] = mojom_types_mojom.UserDefinedType( |
90 struct_type=mojom_struct) | 91 struct_type=mojom_struct) |
91 | 92 |
92 mojom_union = mojom_types_mojom.MojomUnion( | 93 mojom_union = mojom_types_mojom.MojomUnion( |
93 fields=[], | 94 fields=[], |
94 decl_data=mojom_types_mojom.DeclarationData( | 95 decl_data=mojom_types_mojom.DeclarationData( |
95 short_name='AUnion', | 96 short_name='AUnion', |
96 source_file_info=mojom_types_mojom.SourceFileInfo( | 97 source_file_info=mojom_types_mojom.SourceFileInfo( |
97 file_name=file_name))) | 98 file_name=file_name))) |
98 graph.resolved_types['union_key'] = mojom_types_mojom.UserDefinedType( | 99 graph.resolved_types['union_key'] = mojom_types_mojom.UserDefinedType( |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 graph.files = {mojom_file.file_name: mojom_file} | 242 graph.files = {mojom_file.file_name: mojom_file} |
242 | 243 |
243 mojom_struct = mojom_types_mojom.MojomStruct( | 244 mojom_struct = mojom_types_mojom.MojomStruct( |
244 decl_data=mojom_types_mojom.DeclarationData(short_name='FirstStruct')) | 245 decl_data=mojom_types_mojom.DeclarationData(short_name='FirstStruct')) |
245 mojom_struct.fields = [ | 246 mojom_struct.fields = [ |
246 mojom_types_mojom.StructField( | 247 mojom_types_mojom.StructField( |
247 decl_data=mojom_types_mojom.DeclarationData( | 248 decl_data=mojom_types_mojom.DeclarationData( |
248 short_name='field03', | 249 short_name='field03', |
249 declaration_order=2), | 250 declaration_order=2), |
250 type=mojom_types_mojom.Type( | 251 type=mojom_types_mojom.Type( |
251 simple_type=mojom_types_mojom.SimpleType.BOOL)), | 252 simple_type=mojom_types_mojom.SimpleType.BOOL), |
| 253 offset=21, |
| 254 bit=6, |
| 255 min_version=11), |
252 mojom_types_mojom.StructField( | 256 mojom_types_mojom.StructField( |
253 decl_data=mojom_types_mojom.DeclarationData( | 257 decl_data=mojom_types_mojom.DeclarationData( |
254 short_name='field01', | 258 short_name='field01', |
255 declared_ordinal=1, | 259 declared_ordinal=1, |
256 declaration_order=0), | 260 declaration_order=0), |
257 type=mojom_types_mojom.Type( | 261 type=mojom_types_mojom.Type( |
258 simple_type=mojom_types_mojom.SimpleType.BOOL)), | 262 simple_type=mojom_types_mojom.SimpleType.BOOL), |
| 263 offset=17, |
| 264 bit=1, |
| 265 min_version=4), |
259 mojom_types_mojom.StructField( | 266 mojom_types_mojom.StructField( |
260 decl_data=mojom_types_mojom.DeclarationData( | 267 decl_data=mojom_types_mojom.DeclarationData( |
261 short_name='field02', | 268 short_name='field02', |
262 declaration_order=1), | 269 declaration_order=1), |
263 type=mojom_types_mojom.Type( | 270 type=mojom_types_mojom.Type( |
264 simple_type=mojom_types_mojom.SimpleType.DOUBLE), | 271 simple_type=mojom_types_mojom.SimpleType.DOUBLE), |
| 272 offset=0, |
| 273 bit=0, |
| 274 min_version=0, |
265 default_value=mojom_types_mojom.DefaultFieldValue( | 275 default_value=mojom_types_mojom.DefaultFieldValue( |
266 value=mojom_types_mojom.Value( | 276 value=mojom_types_mojom.Value( |
267 literal_value=mojom_types_mojom.LiteralValue(double_value=15)))), | 277 literal_value=mojom_types_mojom.LiteralValue(double_value=15)))), |
268 ] | 278 ] |
| 279 mojom_struct.version_info=[ |
| 280 mojom_types_mojom.StructVersion( |
| 281 version_number=0, num_bytes=67, num_fields=1), |
| 282 mojom_types_mojom.StructVersion( |
| 283 version_number=1, num_bytes=76, num_fields=3), |
| 284 ] |
269 # mojom_fields_declaration_order lists, in declaration order, the indices | 285 # mojom_fields_declaration_order lists, in declaration order, the indices |
270 # of the fields in mojom_types_mojom.StructField. | 286 # of the fields in mojom_types_mojom.StructField. |
271 mojom_fields_declaration_order = [1, 2, 0] | 287 mojom_fields_declaration_order = [1, 2, 0] |
272 mojom_struct.decl_data.source_file_info = mojom_types_mojom.SourceFileInfo( | 288 mojom_struct.decl_data.source_file_info = mojom_types_mojom.SourceFileInfo( |
273 file_name=mojom_file.file_name) | 289 file_name=mojom_file.file_name) |
274 | 290 |
275 struct = module.Struct() | 291 struct = module.Struct() |
276 translator = mojom_translator.FileTranslator(graph, file_name) | 292 translator = mojom_translator.FileTranslator(graph, file_name) |
277 translator.StructFromMojom( | 293 translator.StructFromMojom( |
278 struct, mojom_types_mojom.UserDefinedType(struct_type=mojom_struct)) | 294 struct, mojom_types_mojom.UserDefinedType(struct_type=mojom_struct)) |
279 | 295 |
280 self.assertEquals('FirstStruct', struct.name) | 296 self.assertEquals('FirstStruct', struct.name) |
281 self.assertEquals(translator._module, struct.module) | 297 self.assertEquals(translator._module, struct.module) |
282 | 298 |
283 self.assertEquals(len(mojom_struct.fields), len(struct.fields)) | 299 self.assertEquals(len(mojom_struct.fields), len(struct.fields)) |
284 for index, gold_index in enumerate(mojom_fields_declaration_order): | 300 for index, gold_index in enumerate(mojom_fields_declaration_order): |
285 gold = mojom_struct.fields[gold_index] | 301 gold = mojom_struct.fields[gold_index] |
286 f = struct.fields[index] | 302 f = struct.fields[index] |
287 self.assertEquals(f.name, gold.decl_data.short_name) | 303 self.assertEquals(f.name, gold.decl_data.short_name) |
288 if gold.decl_data.declared_ordinal >= 0: | 304 if gold.decl_data.declared_ordinal >= 0: |
289 self.assertEquals(gold.decl_data.declared_ordinal, f.ordinal) | 305 self.assertEquals(gold.decl_data.declared_ordinal, f.ordinal) |
290 else: | 306 else: |
291 self.assertEquals(None, f.ordinal) | 307 self.assertEquals(None, f.ordinal) |
292 self.assertEquals(gold_index, f.computed_ordinal) | 308 self.assertEquals(gold_index, f.computed_ordinal) |
| 309 self.assertEquals(gold.offset, f.computed_offset) |
| 310 self.assertEquals(gold.bit, f.computed_bit) |
| 311 self.assertEquals(gold.min_version, f.computed_min_version) |
| 312 self.assertEquals(struct.fields_in_ordinal_order[index].name, |
| 313 mojom_struct.fields[index].decl_data.short_name) |
| 314 |
| 315 self.assertEquals(2, len(struct.versions)) |
| 316 for i in xrange(0, 2): |
| 317 self.assertEquals(mojom_struct.version_info[i].version_number, |
| 318 struct.versions[i].version) |
| 319 self.assertEquals(mojom_struct.version_info[i].num_bytes, |
| 320 struct.versions[i].num_bytes) |
| 321 self.assertEquals(mojom_struct.version_info[i].num_fields, |
| 322 struct.versions[i].num_fields) |
293 | 323 |
294 self.assertEquals(module.BOOL, struct.fields[0].kind) | 324 self.assertEquals(module.BOOL, struct.fields[0].kind) |
295 self.assertEquals(module.DOUBLE, struct.fields[1].kind) | 325 self.assertEquals(module.DOUBLE, struct.fields[1].kind) |
296 | 326 |
297 self.assertEquals('15.0', struct.fields[1].default) | 327 self.assertEquals('15.0', struct.fields[1].default) |
298 | 328 |
299 def test_constant(self): | 329 def test_constant(self): |
300 file_name = 'a.mojom' | 330 file_name = 'a.mojom' |
301 graph = mojom_files_mojom.MojomFileGraph() | 331 graph = mojom_files_mojom.MojomFileGraph() |
302 | 332 |
303 mojom_const = mojom_types_mojom.DeclaredConstant() | 333 mojom_const = mojom_types_mojom.DeclaredConstant() |
304 mojom_const.decl_data = mojom_types_mojom.DeclarationData( | 334 mojom_const.decl_data = mojom_types_mojom.DeclarationData( |
305 short_name='foo', container_type_key='struct_key') | 335 short_name='foo', container_type_key='struct_key') |
306 mojom_const.type = mojom_types_mojom.Type( | 336 mojom_const.type = mojom_types_mojom.Type( |
307 simple_type=mojom_types_mojom.SimpleType.INT64) | 337 simple_type=mojom_types_mojom.SimpleType.INT64) |
308 mojom_const.value = mojom_types_mojom.Value() | 338 mojom_const.value = mojom_types_mojom.Value() |
309 mojom_const.value.literal_value = mojom_types_mojom.LiteralValue( | 339 mojom_const.value.literal_value = mojom_types_mojom.LiteralValue( |
310 int64_value=20) | 340 int64_value=20) |
311 | 341 |
312 mojom_struct = mojom_types_mojom.MojomStruct( | 342 mojom_struct = mojom_types_mojom.MojomStruct( |
313 fields=[], | 343 fields=[], |
314 decl_data=mojom_types_mojom.DeclarationData( | 344 decl_data=mojom_types_mojom.DeclarationData( |
315 short_name='AStruct', | 345 short_name='AStruct', |
316 source_file_info =mojom_types_mojom.SourceFileInfo( | 346 source_file_info =mojom_types_mojom.SourceFileInfo( |
317 file_name=file_name))) | 347 file_name=file_name))) |
| 348 add_version_info(mojom_struct, 0) |
318 graph.resolved_types = {'struct_key': mojom_types_mojom.UserDefinedType( | 349 graph.resolved_types = {'struct_key': mojom_types_mojom.UserDefinedType( |
319 struct_type=mojom_struct)} | 350 struct_type=mojom_struct)} |
320 | 351 |
321 const = module.Constant() | 352 const = module.Constant() |
322 translator = mojom_translator.FileTranslator(graph, file_name) | 353 translator = mojom_translator.FileTranslator(graph, file_name) |
323 translator.ConstantFromMojom(const, mojom_const) | 354 translator.ConstantFromMojom(const, mojom_const) |
324 | 355 |
325 self.assertEquals(mojom_const.decl_data.short_name, const.name) | 356 self.assertEquals(mojom_const.decl_data.short_name, const.name) |
326 self.assertEquals(module.INT64, const.kind) | 357 self.assertEquals(module.INT64, const.kind) |
327 self.assertEquals('20', const.value) | 358 self.assertEquals('20', const.value) |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 container_type_key='struct_key') | 408 container_type_key='struct_key') |
378 mojom_enum.values = [] | 409 mojom_enum.values = [] |
379 | 410 |
380 graph = mojom_files_mojom.MojomFileGraph() | 411 graph = mojom_files_mojom.MojomFileGraph() |
381 mojom_struct = mojom_types_mojom.MojomStruct( | 412 mojom_struct = mojom_types_mojom.MojomStruct( |
382 fields=[], | 413 fields=[], |
383 decl_data=mojom_types_mojom.DeclarationData( | 414 decl_data=mojom_types_mojom.DeclarationData( |
384 short_name='AStruct', | 415 short_name='AStruct', |
385 source_file_info =mojom_types_mojom.SourceFileInfo( | 416 source_file_info =mojom_types_mojom.SourceFileInfo( |
386 file_name=file_name))) | 417 file_name=file_name))) |
| 418 add_version_info(mojom_struct, 0) |
387 graph.resolved_types = {'struct_key': mojom_types_mojom.UserDefinedType( | 419 graph.resolved_types = {'struct_key': mojom_types_mojom.UserDefinedType( |
388 struct_type=mojom_struct)} | 420 struct_type=mojom_struct)} |
389 | 421 |
390 enum = module.Enum() | 422 enum = module.Enum() |
391 translator = mojom_translator.FileTranslator(graph, file_name) | 423 translator = mojom_translator.FileTranslator(graph, file_name) |
392 translator.EnumFromMojom( | 424 translator.EnumFromMojom( |
393 enum, mojom_types_mojom.UserDefinedType(enum_type=mojom_enum)) | 425 enum, mojom_types_mojom.UserDefinedType(enum_type=mojom_enum)) |
394 | 426 |
395 self.assertEquals(mojom_enum.decl_data.short_name, enum.name) | 427 self.assertEquals(mojom_enum.decl_data.short_name, enum.name) |
396 self.assertEquals(len(mojom_enum.values), len(enum.fields)) | 428 self.assertEquals(len(mojom_enum.values), len(enum.fields)) |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 module_namespace='otherns', | 547 module_namespace='otherns', |
516 imports=[]), | 548 imports=[]), |
517 } | 549 } |
518 | 550 |
519 mojom_struct = mojom_types_mojom.MojomStruct() | 551 mojom_struct = mojom_types_mojom.MojomStruct() |
520 mojom_struct.decl_data = mojom_types_mojom.DeclarationData( | 552 mojom_struct.decl_data = mojom_types_mojom.DeclarationData( |
521 short_name='AStruct', | 553 short_name='AStruct', |
522 source_file_info=mojom_types_mojom.SourceFileInfo( | 554 source_file_info=mojom_types_mojom.SourceFileInfo( |
523 file_name='root/c.mojom')) | 555 file_name='root/c.mojom')) |
524 mojom_struct.fields = [] | 556 mojom_struct.fields = [] |
| 557 add_version_info(mojom_struct, 0) |
525 | 558 |
526 type_key = 'some_type_key' | 559 type_key = 'some_type_key' |
527 graph.resolved_types = { | 560 graph.resolved_types = { |
528 type_key: mojom_types_mojom.UserDefinedType(struct_type=mojom_struct)} | 561 type_key: mojom_types_mojom.UserDefinedType(struct_type=mojom_struct)} |
529 struct = module.Struct() | 562 struct = module.Struct() |
530 | 563 |
531 # Translate should create the imports. | 564 # Translate should create the imports. |
532 translator = mojom_translator.FileTranslator(graph, 'a.mojom') | 565 translator = mojom_translator.FileTranslator(graph, 'a.mojom') |
533 translator.Translate() | 566 translator.Translate() |
534 | 567 |
(...skipping 24 matching lines...) Expand all Loading... |
559 key='ServiceName', value=mojom_types_mojom.LiteralValue( | 592 key='ServiceName', value=mojom_types_mojom.LiteralValue( |
560 string_value='test::TheInterface'))] | 593 string_value='test::TheInterface'))] |
561 else: | 594 else: |
562 mojom_interface.service_name = None | 595 mojom_interface.service_name = None |
563 mojom_method10 = mojom_types_mojom.MojomMethod( | 596 mojom_method10 = mojom_types_mojom.MojomMethod( |
564 ordinal=10, | 597 ordinal=10, |
565 decl_data=mojom_types_mojom.DeclarationData( | 598 decl_data=mojom_types_mojom.DeclarationData( |
566 short_name='AMethod10', | 599 short_name='AMethod10', |
567 source_file_info=mojom_types_mojom.SourceFileInfo( | 600 source_file_info=mojom_types_mojom.SourceFileInfo( |
568 file_name=file_name)), | 601 file_name=file_name)), |
569 parameters=mojom_types_mojom.MojomStruct(fields=[])) | 602 parameters=mojom_types_mojom.MojomStruct(fields=[], |
| 603 version_info=build_version_info(0), |
| 604 decl_data=build_decl_data('AMethod10_Request'))) |
570 mojom_method0 = mojom_types_mojom.MojomMethod( | 605 mojom_method0 = mojom_types_mojom.MojomMethod( |
571 ordinal=0, | 606 ordinal=0, |
572 decl_data=mojom_types_mojom.DeclarationData( | 607 decl_data=mojom_types_mojom.DeclarationData( |
573 short_name='AMethod0', | 608 short_name='AMethod0', |
574 source_file_info=mojom_types_mojom.SourceFileInfo( | 609 source_file_info=mojom_types_mojom.SourceFileInfo( |
575 file_name=file_name)), | 610 file_name=file_name)), |
576 parameters=mojom_types_mojom.MojomStruct(fields=[])) | 611 parameters=mojom_types_mojom.MojomStruct(fields=[], |
| 612 version_info=build_version_info(0), |
| 613 decl_data=build_decl_data('AMethod0_Request'))) |
577 mojom_method7 = mojom_types_mojom.MojomMethod( | 614 mojom_method7 = mojom_types_mojom.MojomMethod( |
578 ordinal=7, | 615 ordinal=7, |
579 decl_data=mojom_types_mojom.DeclarationData( | 616 decl_data=mojom_types_mojom.DeclarationData( |
580 short_name='AMethod10', | 617 short_name='AMethod7', |
581 source_file_info=mojom_types_mojom.SourceFileInfo( | 618 source_file_info=mojom_types_mojom.SourceFileInfo( |
582 file_name=file_name)), | 619 file_name=file_name)), |
583 parameters=mojom_types_mojom.MojomStruct(fields=[])) | 620 parameters=mojom_types_mojom.MojomStruct(fields=[], |
| 621 version_info=build_version_info(0), |
| 622 decl_data=build_decl_data('AMethod7_Request'))) |
584 mojom_interface.methods = {10: mojom_method10, 0: mojom_method0, | 623 mojom_interface.methods = {10: mojom_method10, 0: mojom_method0, |
585 7: mojom_method7} | 624 7: mojom_method7} |
586 | 625 |
587 interface = module.Interface() | 626 interface = module.Interface() |
588 graph = mojom_files_mojom.MojomFileGraph() | 627 graph = mojom_files_mojom.MojomFileGraph() |
589 translator = mojom_translator.FileTranslator(graph, file_name) | 628 translator = mojom_translator.FileTranslator(graph, file_name) |
590 translator.InterfaceFromMojom(interface, mojom_types_mojom.UserDefinedType( | 629 translator.InterfaceFromMojom(interface, mojom_types_mojom.UserDefinedType( |
591 interface_type=mojom_interface)) | 630 interface_type=mojom_interface)) |
592 | 631 |
593 self.assertEquals(translator._module, interface.module) | 632 self.assertEquals(translator._module, interface.module) |
(...skipping 13 matching lines...) Expand all Loading... |
607 mojom_method = mojom_types_mojom.MojomMethod( | 646 mojom_method = mojom_types_mojom.MojomMethod( |
608 ordinal=10, | 647 ordinal=10, |
609 decl_data=mojom_types_mojom.DeclarationData( | 648 decl_data=mojom_types_mojom.DeclarationData( |
610 short_name='AMethod', | 649 short_name='AMethod', |
611 source_file_info=mojom_types_mojom.SourceFileInfo( | 650 source_file_info=mojom_types_mojom.SourceFileInfo( |
612 file_name=file_name))) | 651 file_name=file_name))) |
613 | 652 |
614 param1 = mojom_types_mojom.StructField( | 653 param1 = mojom_types_mojom.StructField( |
615 decl_data=mojom_types_mojom.DeclarationData(short_name='a_param'), | 654 decl_data=mojom_types_mojom.DeclarationData(short_name='a_param'), |
616 type=mojom_types_mojom.Type( | 655 type=mojom_types_mojom.Type( |
617 simple_type=mojom_types_mojom.SimpleType.UINT32)) | 656 simple_type=mojom_types_mojom.SimpleType.UINT32), |
| 657 offset=21, |
| 658 bit=6, |
| 659 min_version=11) |
618 param2 = mojom_types_mojom.StructField( | 660 param2 = mojom_types_mojom.StructField( |
619 decl_data=mojom_types_mojom.DeclarationData(short_name='b_param'), | 661 decl_data=mojom_types_mojom.DeclarationData(short_name='b_param'), |
620 type=mojom_types_mojom.Type( | 662 type=mojom_types_mojom.Type( |
621 simple_type=mojom_types_mojom.SimpleType.UINT64)) | 663 simple_type=mojom_types_mojom.SimpleType.UINT64), |
| 664 offset=22, |
| 665 bit=7, |
| 666 min_version=12) |
622 mojom_method.parameters = mojom_types_mojom.MojomStruct( | 667 mojom_method.parameters = mojom_types_mojom.MojomStruct( |
623 fields=[param1, param2]) | 668 fields=[param1, param2], |
| 669 version_info=build_version_info(2), |
| 670 decl_data=build_decl_data('Not used')) |
624 | 671 |
625 interface = module.Interface() | 672 interface = module.Interface('MyInterface') |
626 graph = mojom_files_mojom.MojomFileGraph() | 673 graph = mojom_files_mojom.MojomFileGraph() |
627 translator = mojom_translator.FileTranslator(graph, file_name) | 674 translator = mojom_translator.FileTranslator(graph, file_name) |
628 method = translator.MethodFromMojom(mojom_method, interface) | 675 method = translator.MethodFromMojom(mojom_method, interface) |
629 | 676 |
630 self.assertEquals(mojom_method.decl_data.short_name, method.name) | 677 self.assertEquals(mojom_method.decl_data.short_name, method.name) |
631 self.assertEquals(interface, method.interface) | 678 self.assertEquals(interface, method.interface) |
632 self.assertEquals(mojom_method.ordinal, method.ordinal) | 679 self.assertEquals(mojom_method.ordinal, method.ordinal) |
633 self.assertIsNone(method.response_parameters) | 680 self.assertIsNone(method.response_parameters) |
634 self.assertEquals( | 681 self.assertEquals( |
635 len(mojom_method.parameters.fields), len(method.parameters)) | 682 len(mojom_method.parameters.fields), len(method.parameters)) |
636 self.assertEquals(param1.decl_data.short_name, method.parameters[0].name) | 683 self.assertEquals(param1.decl_data.short_name, method.parameters[0].name) |
637 self.assertEquals(param2.decl_data.short_name, method.parameters[1].name) | 684 self.assertEquals(param2.decl_data.short_name, method.parameters[1].name) |
| 685 self.assertEquals('MyInterface_AMethod_Params', method.param_struct.name) |
| 686 self.assertEquals(len(mojom_method.parameters.fields), |
| 687 len(method.param_struct.fields)) |
| 688 for i in xrange(0, len(mojom_method.parameters.fields)): |
| 689 gold = mojom_method.parameters.fields[i] |
| 690 f = method.param_struct.fields_in_ordinal_order[i] |
| 691 self.assertEquals(gold.decl_data.short_name, f.name) |
| 692 self.assertEquals(gold.offset, f.computed_offset) |
| 693 self.assertEquals(gold.bit, f.computed_bit) |
| 694 self.assertEquals(gold.min_version, f.computed_min_version) |
638 | 695 |
639 # Add empty return params. | 696 # Add empty return params. |
640 mojom_method.response_params = mojom_types_mojom.MojomStruct(fields=[]) | 697 mojom_method.response_params = mojom_types_mojom.MojomStruct(fields=[]) |
| 698 add_version_info(mojom_method.response_params, 0) |
| 699 add_decl_data(mojom_method.response_params, 'AMethod_Response') |
641 method = translator.MethodFromMojom(mojom_method, interface) | 700 method = translator.MethodFromMojom(mojom_method, interface) |
642 self.assertEquals([], method.response_parameters) | 701 self.assertEquals([], method.response_parameters) |
643 | 702 |
644 # Add non-empty return params. | 703 # Add non-empty return params. |
645 mojom_method.response_params.fields = [param1] | 704 mojom_method.response_params.fields = [param1] |
646 method = translator.MethodFromMojom(mojom_method, interface) | 705 method = translator.MethodFromMojom(mojom_method, interface) |
647 self.assertEquals( | 706 self.assertEquals( |
648 param1.decl_data.short_name, method.response_parameters[0].name) | 707 param1.decl_data.short_name, method.response_parameters[0].name) |
649 | 708 |
650 def test_parameter(self): | 709 def test_parameter(self): |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
960 mojom_struct = mojom_types_mojom.MojomStruct( | 1019 mojom_struct = mojom_types_mojom.MojomStruct( |
961 decl_data=mojom_types_mojom.DeclarationData(short_name='FirstStruct')) | 1020 decl_data=mojom_types_mojom.DeclarationData(short_name='FirstStruct')) |
962 type_key = 'some opaque string' | 1021 type_key = 'some opaque string' |
963 mojom_struct.fields = [ | 1022 mojom_struct.fields = [ |
964 # Make sure recursive structs are correctly handled. | 1023 # Make sure recursive structs are correctly handled. |
965 mojom_types_mojom.StructField( | 1024 mojom_types_mojom.StructField( |
966 decl_data=mojom_types_mojom.DeclarationData(short_name='field00'), | 1025 decl_data=mojom_types_mojom.DeclarationData(short_name='field00'), |
967 type=mojom_types_mojom.Type( | 1026 type=mojom_types_mojom.Type( |
968 type_reference=mojom_types_mojom.TypeReference(type_key=type_key))) | 1027 type_reference=mojom_types_mojom.TypeReference(type_key=type_key))) |
969 ] | 1028 ] |
| 1029 add_version_info(mojom_struct, 1) |
970 graph.resolved_types = { | 1030 graph.resolved_types = { |
971 type_key: mojom_types_mojom.UserDefinedType(struct_type=mojom_struct)} | 1031 type_key: mojom_types_mojom.UserDefinedType(struct_type=mojom_struct)} |
972 | 1032 |
973 mojom_type = mojom_types_mojom.Type() | 1033 mojom_type = mojom_types_mojom.Type() |
974 mojom_type.type_reference = mojom_types_mojom.TypeReference( | 1034 mojom_type.type_reference = mojom_types_mojom.TypeReference( |
975 type_key=type_key) | 1035 type_key=type_key) |
976 | 1036 |
977 t = mojom_translator.FileTranslator(graph, None) | 1037 t = mojom_translator.FileTranslator(graph, None) |
978 result = t.KindFromMojom(mojom_type) | 1038 result = t.KindFromMojom(mojom_type) |
979 self.assertTrue(module.IsStructKind(result)) | 1039 self.assertTrue(module.IsStructKind(result)) |
980 self.assertEquals(mojom_struct.decl_data.short_name, result.name) | 1040 self.assertEquals(mojom_struct.decl_data.short_name, result.name) |
981 self.assertEquals(result, result.fields[0].kind) | 1041 self.assertEquals(result, result.fields[0].kind) |
982 self.assertEquals(type_key, result.type_key) | 1042 self.assertEquals(type_key, result.type_key) |
983 | 1043 |
984 # Make sure we create only one module object per type. | 1044 # Make sure we create only one module object per type. |
985 result2 = t.KindFromMojom(mojom_type) | 1045 result2 = t.KindFromMojom(mojom_type) |
986 self.assertIs(result, result2) | 1046 self.assertIs(result, result2) |
987 | 1047 |
988 # Nullable type reference | 1048 # Nullable type reference |
989 mojom_type.type_reference.nullable = True | 1049 mojom_type.type_reference.nullable = True |
990 nullable_result = t.KindFromMojom(mojom_type) | 1050 nullable_result = t.KindFromMojom(mojom_type) |
991 self.assertTrue(module.IsNullableKind(nullable_result)) | 1051 self.assertTrue(module.IsNullableKind(nullable_result)) |
992 | 1052 |
993 if __name__ == '__main__': | 1053 if __name__ == '__main__': |
994 unittest.main() | 1054 unittest.main() |
| 1055 |
| 1056 def build_decl_data(short_name): |
| 1057 """Builds and returns a DeclarationData with the given short_name. |
| 1058 |
| 1059 Args: |
| 1060 short_name: {str} short_name to use |
| 1061 |
| 1062 Returns: |
| 1063 {mojom_types_mojom.DeclarationData} With the given short_name |
| 1064 """ |
| 1065 return mojom_types_mojom.DeclarationData(short_name=short_name) |
| 1066 |
| 1067 def add_decl_data(element, short_name): |
| 1068 """Builds a DeclarationData with the given short_name and adds it |
| 1069 as the |decl_data| attribute of |element|. |
| 1070 |
| 1071 Args: |
| 1072 element: {any} The Python object to which a |decl_data| attribute will be |
| 1073 added. |
| 1074 short_name: {str} short_name to use |
| 1075 """ |
| 1076 element.decl_data=build_decl_data(short_name) |
| 1077 |
| 1078 def build_version_info(num_fields): |
| 1079 """Builds and returns a list containing a single StructVersion with |
| 1080 version_number=0, num_bytes=0, and the given value for num_fields. |
| 1081 |
| 1082 Args: |
| 1083 num_fields: {int} The value of num_fields to use. |
| 1084 Returns: |
| 1085 {[mojom_types_mojom.StructVersion]} Containing a single element with |
| 1086 the given value for num_fields. |
| 1087 """ |
| 1088 return [mojom_types_mojom.StructVersion( |
| 1089 version_number=0, num_bytes=0,num_fields=num_fields)] |
| 1090 |
| 1091 def add_version_info(mojom_struct, num_fields): |
| 1092 """Builds a list containing a single StructVersion with |
| 1093 version_number=0, num_bytes=0, and the given value for num_fields. Adds this |
| 1094 as the |version_info| attribute of |mojom_struct|. |
| 1095 |
| 1096 Args: |
| 1097 mojom_struct: {any} The Python object to which a |version_info| attribute |
| 1098 will be added. |
| 1099 num_fields: {int} The value of num_fields to use. |
| 1100 """ |
| 1101 mojom_struct.version_info=build_version_info(num_fields) |
OLD | NEW |