| 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 module_namespace='somens') | 66 module_namespace='somens') |
| 67 graph.files = { | 67 graph.files = { |
| 68 file_name: mojom_file, | 68 file_name: mojom_file, |
| 69 imported_file_name: imported_file, | 69 imported_file_name: imported_file, |
| 70 second_level_imported_file_name: second_level_imported_file | 70 second_level_imported_file_name: second_level_imported_file |
| 71 } | 71 } |
| 72 | 72 |
| 73 mojom_interface = mojom_types_mojom.MojomInterface( | 73 mojom_interface = mojom_types_mojom.MojomInterface( |
| 74 methods={}, | 74 methods={}, |
| 75 decl_data=mojom_types_mojom.DeclarationData( | 75 decl_data=mojom_types_mojom.DeclarationData( |
| 76 short_name='AnInterface', |
| 76 source_file_info=mojom_types_mojom.SourceFileInfo( | 77 source_file_info=mojom_types_mojom.SourceFileInfo( |
| 77 file_name=file_name)), | 78 file_name=file_name))) |
| 78 interface_name='AnInterface') | |
| 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))) |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 138 self.assertEquals(imported_file.module_namespace, | 138 self.assertEquals(imported_file.module_namespace, |
| 139 mod.imports[0]['namespace']) | 139 mod.imports[0]['namespace']) |
| 140 self.assertEquals(imported_file.file_name, mod.imports[0]['module'].path) | 140 self.assertEquals(imported_file.file_name, mod.imports[0]['module'].path) |
| 141 | 141 |
| 142 self.assertEquals(2, len(mod.transitive_imports)) | 142 self.assertEquals(2, len(mod.transitive_imports)) |
| 143 transitive_imports_paths = [imp['module'].path | 143 transitive_imports_paths = [imp['module'].path |
| 144 for imp in mod.transitive_imports] | 144 for imp in mod.transitive_imports] |
| 145 self.assertIn(imported_file_name, transitive_imports_paths) | 145 self.assertIn(imported_file_name, transitive_imports_paths) |
| 146 self.assertIn(second_level_imported_file_name, transitive_imports_paths) | 146 self.assertIn(second_level_imported_file_name, transitive_imports_paths) |
| 147 | 147 |
| 148 self.assertEquals(mojom_interface.interface_name, mod.interfaces[0].name) | 148 self.assertEquals('AnInterface', mod.interfaces[0].name) |
| 149 # Interfaces should be assigned their name as their spec. | 149 # Interfaces should be assigned their name as their spec. |
| 150 self.assertEquals('AnInterface', mod.interfaces[0].spec) | 150 self.assertEquals('AnInterface', mod.interfaces[0].spec) |
| 151 self.assertEquals(mojom_struct.decl_data.short_name, mod.structs[0].name) | 151 self.assertEquals(mojom_struct.decl_data.short_name, mod.structs[0].name) |
| 152 # The struct was given a full_identifier so its spec should be that. | 152 # The struct was given a full_identifier so its spec should be that. |
| 153 self.assertEquals(mojom_struct.decl_data.full_identifier, | 153 self.assertEquals(mojom_struct.decl_data.full_identifier, |
| 154 mod.structs[0].spec) | 154 mod.structs[0].spec) |
| 155 self.assertEquals(mojom_union.decl_data.short_name, mod.unions[0].name) | 155 self.assertEquals(mojom_union.decl_data.short_name, mod.unions[0].name) |
| 156 # The union was given a short name but not a full_identifier so its spec | 156 # The union was given a short name but not a full_identifier so its spec |
| 157 # should be the short name. | 157 # should be the short name. |
| 158 self.assertEquals(mojom_union.decl_data.short_name, | 158 self.assertEquals(mojom_union.decl_data.short_name, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 180 self.assertEquals([], mod.imports) | 180 self.assertEquals([], mod.imports) |
| 181 | 181 |
| 182 @unittest.skipUnless(bindings_imported, 'Could not import python bindings.') | 182 @unittest.skipUnless(bindings_imported, 'Could not import python bindings.') |
| 183 class TestUserDefinedFromTypeRef(unittest.TestCase): | 183 class TestUserDefinedFromTypeRef(unittest.TestCase): |
| 184 | 184 |
| 185 def do_interface_test(self, nullable, interface_request): | 185 def do_interface_test(self, nullable, interface_request): |
| 186 # Build a MojomInterface | 186 # Build a MojomInterface |
| 187 file_name = 'a.mojom' | 187 file_name = 'a.mojom' |
| 188 mojom_interface = mojom_types_mojom.MojomInterface( | 188 mojom_interface = mojom_types_mojom.MojomInterface( |
| 189 decl_data=mojom_types_mojom.DeclarationData( | 189 decl_data=mojom_types_mojom.DeclarationData( |
| 190 short_name='AnInterface', |
| 190 source_file_info=mojom_types_mojom.SourceFileInfo( | 191 source_file_info=mojom_types_mojom.SourceFileInfo( |
| 191 file_name=file_name)), | 192 file_name=file_name))) |
| 192 interface_name='AnInterface') | |
| 193 mojom_interface.methods={} | 193 mojom_interface.methods={} |
| 194 | 194 |
| 195 # Register the MojomInterface in a MojomFileGraph | 195 # Register the MojomInterface in a MojomFileGraph |
| 196 graph = mojom_files_mojom.MojomFileGraph() | 196 graph = mojom_files_mojom.MojomFileGraph() |
| 197 type_key = 'some_type_key' | 197 type_key = 'some_type_key' |
| 198 graph.resolved_types = { | 198 graph.resolved_types = { |
| 199 type_key: mojom_types_mojom.UserDefinedType( | 199 type_key: mojom_types_mojom.UserDefinedType( |
| 200 interface_type=mojom_interface)} | 200 interface_type=mojom_interface)} |
| 201 | 201 |
| 202 # Build a reference to the interface. | 202 # Build a reference to the interface. |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 mojom_types_mojom.Type( | 499 mojom_types_mojom.Type( |
| 500 type_reference=mojom_types_mojom.TypeReference( | 500 type_reference=mojom_types_mojom.TypeReference( |
| 501 type_key=type_key))) | 501 type_key=type_key))) |
| 502 | 502 |
| 503 self.assertEquals( | 503 self.assertEquals( |
| 504 translator._transitive_imports['root/c.mojom']['module'], struct.module) | 504 translator._transitive_imports['root/c.mojom']['module'], struct.module) |
| 505 self.assertEquals( | 505 self.assertEquals( |
| 506 translator._transitive_imports['root/c.mojom'], struct.imported_from) | 506 translator._transitive_imports['root/c.mojom'], struct.imported_from) |
| 507 | 507 |
| 508 def test_interface(self): | 508 def test_interface(self): |
| 509 self.do_interface_test(True) |
| 510 self.do_interface_test(False) |
| 511 |
| 512 def do_interface_test(self, specify_service_name): |
| 509 file_name = 'a.mojom' | 513 file_name = 'a.mojom' |
| 510 mojom_interface = mojom_types_mojom.MojomInterface( | 514 mojom_interface = mojom_types_mojom.MojomInterface( |
| 511 decl_data=mojom_types_mojom.DeclarationData( | 515 decl_data=mojom_types_mojom.DeclarationData( |
| 516 short_name='AnInterface', |
| 512 source_file_info=mojom_types_mojom.SourceFileInfo( | 517 source_file_info=mojom_types_mojom.SourceFileInfo( |
| 513 file_name=file_name)), | 518 file_name=file_name))) |
| 514 interface_name='AnInterface') | 519 if specify_service_name: |
| 520 mojom_interface.service_name = 'test::TheInterface' |
| 521 mojom_interface.decl_data.attributes = [mojom_types_mojom.Attribute( |
| 522 key='ServiceName', value=mojom_types_mojom.LiteralValue( |
| 523 string_value='test::TheInterface'))] |
| 524 else: |
| 525 mojom_interface.service_name = None |
| 515 mojom_method10 = mojom_types_mojom.MojomMethod( | 526 mojom_method10 = mojom_types_mojom.MojomMethod( |
| 516 ordinal=10, | 527 ordinal=10, |
| 517 decl_data=mojom_types_mojom.DeclarationData( | 528 decl_data=mojom_types_mojom.DeclarationData( |
| 518 short_name='AMethod10', | 529 short_name='AMethod10', |
| 519 source_file_info=mojom_types_mojom.SourceFileInfo( | 530 source_file_info=mojom_types_mojom.SourceFileInfo( |
| 520 file_name=file_name)), | 531 file_name=file_name)), |
| 521 parameters=mojom_types_mojom.MojomStruct(fields=[])) | 532 parameters=mojom_types_mojom.MojomStruct(fields=[])) |
| 522 mojom_method0 = mojom_types_mojom.MojomMethod( | 533 mojom_method0 = mojom_types_mojom.MojomMethod( |
| 523 ordinal=0, | 534 ordinal=0, |
| 524 decl_data=mojom_types_mojom.DeclarationData( | 535 decl_data=mojom_types_mojom.DeclarationData( |
| (...skipping 11 matching lines...) Expand all Loading... |
| 536 mojom_interface.methods = {10: mojom_method10, 0: mojom_method0, | 547 mojom_interface.methods = {10: mojom_method10, 0: mojom_method0, |
| 537 7: mojom_method7} | 548 7: mojom_method7} |
| 538 | 549 |
| 539 interface = module.Interface() | 550 interface = module.Interface() |
| 540 graph = mojom_files_mojom.MojomFileGraph() | 551 graph = mojom_files_mojom.MojomFileGraph() |
| 541 translator = mojom_translator.FileTranslator(graph, file_name) | 552 translator = mojom_translator.FileTranslator(graph, file_name) |
| 542 translator.InterfaceFromMojom(interface, mojom_types_mojom.UserDefinedType( | 553 translator.InterfaceFromMojom(interface, mojom_types_mojom.UserDefinedType( |
| 543 interface_type=mojom_interface)) | 554 interface_type=mojom_interface)) |
| 544 | 555 |
| 545 self.assertEquals(translator._module, interface.module) | 556 self.assertEquals(translator._module, interface.module) |
| 546 self.assertEquals(mojom_interface.interface_name, interface.name) | 557 self.assertEquals('AnInterface', interface.name) |
| 547 self.assertEquals(0, interface.methods[0].ordinal) | 558 self.assertEquals(0, interface.methods[0].ordinal) |
| 548 self.assertEquals(7, interface.methods[1].ordinal) | 559 self.assertEquals(7, interface.methods[1].ordinal) |
| 549 self.assertEquals(10, interface.methods[2].ordinal) | 560 self.assertEquals(10, interface.methods[2].ordinal) |
| 561 if specify_service_name: |
| 562 self.assertEquals('test::TheInterface', interface.service_name) |
| 563 else: |
| 564 self.assertEquals(None, interface.service_name) |
| 565 |
| 550 # TODO(azani): Add the contained declarations. | 566 # TODO(azani): Add the contained declarations. |
| 551 | 567 |
| 552 def test_method(self): | 568 def test_method(self): |
| 553 file_name = 'a.mojom' | 569 file_name = 'a.mojom' |
| 554 mojom_method = mojom_types_mojom.MojomMethod( | 570 mojom_method = mojom_types_mojom.MojomMethod( |
| 555 ordinal=10, | 571 ordinal=10, |
| 556 decl_data=mojom_types_mojom.DeclarationData( | 572 decl_data=mojom_types_mojom.DeclarationData( |
| 557 short_name='AMethod', | 573 short_name='AMethod', |
| 558 source_file_info=mojom_types_mojom.SourceFileInfo( | 574 source_file_info=mojom_types_mojom.SourceFileInfo( |
| 559 file_name=file_name))) | 575 file_name=file_name))) |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 931 result2 = t.KindFromMojom(mojom_type) | 947 result2 = t.KindFromMojom(mojom_type) |
| 932 self.assertIs(result, result2) | 948 self.assertIs(result, result2) |
| 933 | 949 |
| 934 # Nullable type reference | 950 # Nullable type reference |
| 935 mojom_type.type_reference.nullable = True | 951 mojom_type.type_reference.nullable = True |
| 936 nullable_result = t.KindFromMojom(mojom_type) | 952 nullable_result = t.KindFromMojom(mojom_type) |
| 937 self.assertTrue(module.IsNullableKind(nullable_result)) | 953 self.assertTrue(module.IsNullableKind(nullable_result)) |
| 938 | 954 |
| 939 if __name__ == '__main__': | 955 if __name__ == '__main__': |
| 940 unittest.main() | 956 unittest.main() |
| OLD | NEW |