Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator_unittest.py

Issue 1427893002: Handle contained declarations for interfaces and structs. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 import mojom_files_mojom 10 import mojom_files_mojom
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 decl_data=mojom_types_mojom.DeclarationData(short_name='val2'), 231 decl_data=mojom_types_mojom.DeclarationData(short_name='val2'),
232 enum_type_key='AnEnum', 232 enum_type_key='AnEnum',
233 int_value=70) 233 int_value=70)
234 mojom_enum.values = [value1, value2] 234 mojom_enum.values = [value1, value2]
235 235
236 236
237 graph = mojom_files_mojom.MojomFileGraph() 237 graph = mojom_files_mojom.MojomFileGraph()
238 enum = module.Enum() 238 enum = module.Enum()
239 translator = mojom_translator.FileTranslator(graph, file_name) 239 translator = mojom_translator.FileTranslator(graph, file_name)
240 translator.EnumFromMojom( 240 translator.EnumFromMojom(
241 enum, mojom_types_mojom.UserDefinedType(enum_type=mojom_enum), None) 241 enum, mojom_types_mojom.UserDefinedType(enum_type=mojom_enum))
242 242
243 self.assertEquals(translator._module, enum.module) 243 self.assertEquals(translator._module, enum.module)
244 self.assertEquals(mojom_enum.decl_data.short_name, enum.name) 244 self.assertEquals(mojom_enum.decl_data.short_name, enum.name)
245 self.assertEquals(len(mojom_enum.values), len(enum.fields)) 245 self.assertEquals(len(mojom_enum.values), len(enum.fields))
246 246
247 self.assertEquals(value1.decl_data.short_name, enum.fields[0].name) 247 self.assertEquals(value1.decl_data.short_name, enum.fields[0].name)
248 self.assertEquals(value2.decl_data.short_name, enum.fields[1].name) 248 self.assertEquals(value2.decl_data.short_name, enum.fields[1].name)
249 249
250 self.assertEquals(value1.int_value, enum.fields[0].value) 250 self.assertEquals(value1.int_value, enum.fields[0].value)
251 self.assertEquals(value2.int_value, enum.fields[1].value) 251 self.assertEquals(value2.int_value, enum.fields[1].value)
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 literal_value=mojom_types_mojom.LiteralValue(uint64_value=20))) 441 literal_value=mojom_types_mojom.LiteralValue(uint64_value=20)))
442 442
443 graph = mojom_files_mojom.MojomFileGraph() 443 graph = mojom_files_mojom.MojomFileGraph()
444 translator = mojom_translator.FileTranslator(graph, '') 444 translator = mojom_translator.FileTranslator(graph, '')
445 param = translator.ParamFromMojom(mojom_param) 445 param = translator.ParamFromMojom(mojom_param)
446 446
447 self.assertEquals(mojom_param.decl_data.short_name, param.name) 447 self.assertEquals(mojom_param.decl_data.short_name, param.name)
448 self.assertEquals(module.UINT64, param.kind) 448 self.assertEquals(module.UINT64, param.kind)
449 self.assertEquals(mojom_param.decl_data.declared_ordinal, param.ordinal) 449 self.assertEquals(mojom_param.decl_data.declared_ordinal, param.ordinal)
450 450
451 def test_contained_declarations(self):
452 graph = mojom_files_mojom.MojomFileGraph()
453 file_name = 'root/f.mojom'
454
455 mojom_enum = mojom_types_mojom.MojomEnum(
456 values=[],
457 decl_data=mojom_types_mojom.DeclarationData(
458 short_name='AnEnum',
459 source_file_info=mojom_types_mojom.SourceFileInfo(
460 file_name=file_name)))
461 graph.resolved_types = {
462 'enum_key': mojom_types_mojom.UserDefinedType(enum_type=mojom_enum)}
463
464 mojom_const = mojom_types_mojom.DeclaredConstant(
465 decl_data=mojom_types_mojom.DeclarationData(short_name='AConst'),
466 type=mojom_types_mojom.Type(
467 simple_type=mojom_types_mojom.SimpleType.INT64),
468 value=mojom_types_mojom.Value(
469 literal_value=mojom_types_mojom.LiteralValue(
470 int64_value=30)))
471 user_defined_value = mojom_types_mojom.UserDefinedValue()
472 user_defined_value.declared_constant = mojom_const
473 graph.resolved_values = {'value_key': user_defined_value}
474
475 contained_declarations = mojom_types_mojom.ContainedDeclarations(
476 enums=['enum_key'], constants=['value_key'])
477
478 translator = mojom_translator.FileTranslator(graph, file_name)
479 struct = module.Struct(name='parent')
480 translator.PopulateContainedDeclarationsFromMojom(
481 struct, contained_declarations)
482
483 self.assertEquals(
484 'parent.' + mojom_enum.decl_data.short_name, struct.enums[0].name)
485 self.assertEquals(struct, struct.enums[0].parent_kind)
486 self.assertEquals(
487 mojom_const.decl_data.short_name, struct.constants[0].name)
488 self.assertEquals(struct, struct.constants[0].parent_kind)
489
451 490
452 @unittest.skipUnless(bindings_imported, 'Could not import python bindings.') 491 @unittest.skipUnless(bindings_imported, 'Could not import python bindings.')
453 class TestEvalValue(unittest.TestCase): 492 class TestEvalValue(unittest.TestCase):
454 493
455 def test_literal_value(self): 494 def test_literal_value(self):
456 mojom = mojom_types_mojom.Value() 495 mojom = mojom_types_mojom.Value()
457 mojom.literal_value = mojom_types_mojom.LiteralValue(int64_value=20) 496 mojom.literal_value = mojom_types_mojom.LiteralValue(int64_value=20)
458 497
459 graph = mojom_files_mojom.MojomFileGraph() 498 graph = mojom_files_mojom.MojomFileGraph()
460 const = mojom_translator.FileTranslator(graph, None).EvalValue(mojom) 499 const = mojom_translator.FileTranslator(graph, None).EvalValue(mojom)
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
645 result2 = t.KindFromMojom(mojom_type) 684 result2 = t.KindFromMojom(mojom_type)
646 self.assertIs(result, result2) 685 self.assertIs(result, result2)
647 686
648 # Nullable type reference 687 # Nullable type reference
649 mojom_type.type_reference.nullable = True 688 mojom_type.type_reference.nullable = True
650 nullable_result = t.KindFromMojom(mojom_type) 689 nullable_result = t.KindFromMojom(mojom_type)
651 self.assertTrue(module.IsNullableKind(nullable_result)) 690 self.assertTrue(module.IsNullableKind(nullable_result))
652 691
653 if __name__ == '__main__': 692 if __name__ == '__main__':
654 unittest.main() 693 unittest.main()
OLDNEW
« no previous file with comments | « mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698