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 # The first argument of this script should be the location of both | 5 # The first argument of this script should be the location of both |
6 # the generated mojom_files and mojom_types modules and their dependencies. | 6 # the generated mojom_files and mojom_types modules and their dependencies. |
7 | 7 |
8 def _FixPath(): | 8 def _FixPath(): |
9 import sys | 9 import sys |
10 # Importing mojom_files_mojom, mojom_types_mojom and mojom_translator | 10 # Importing mojom_files_mojom, mojom_types_mojom and mojom_translator |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 short_name='AnEnum', | 97 short_name='AnEnum', |
98 source_file_info=mojom_types_mojom.SourceFileInfo( | 98 source_file_info=mojom_types_mojom.SourceFileInfo( |
99 file_name=file_name))) | 99 file_name=file_name))) |
100 graph.resolved_types['enum_key'] = mojom_types_mojom.UserDefinedType( | 100 graph.resolved_types['enum_key'] = mojom_types_mojom.UserDefinedType( |
101 enum_type=mojom_enum) | 101 enum_type=mojom_enum) |
102 | 102 |
103 mojom_const = mojom_types_mojom.DeclaredConstant( | 103 mojom_const = mojom_types_mojom.DeclaredConstant( |
104 decl_data=mojom_types_mojom.DeclarationData(short_name='AConst'), | 104 decl_data=mojom_types_mojom.DeclarationData(short_name='AConst'), |
105 type=mojom_types_mojom.Type( | 105 type=mojom_types_mojom.Type( |
106 simple_type=mojom_types_mojom.SimpleType.INT64), | 106 simple_type=mojom_types_mojom.SimpleType.INT64), |
107 value=mojom_types_mojom.ConstantOccurrence( | 107 value=mojom_types_mojom.Value( |
108 value=mojom_types_mojom.ConstantValue( | 108 literal_value=mojom_types_mojom.LiteralValue( |
109 int64_value=30))) | 109 int64_value=30))) |
110 graph.resolved_constants = {'const_key': mojom_const} | 110 user_defined_value = mojom_types_mojom.UserDefinedValue() |
| 111 user_defined_value.declared_constant = mojom_const |
| 112 graph.resolved_values = {'value_key': user_defined_value} |
111 | 113 |
112 mojom_file.declared_mojom_objects = mojom_files_mojom.KeysByType( | 114 mojom_file.declared_mojom_objects = mojom_files_mojom.KeysByType( |
113 interfaces=['interface_key'], | 115 interfaces=['interface_key'], |
114 structs=['struct_key'], | 116 structs=['struct_key'], |
115 unions=['union_key'], | 117 unions=['union_key'], |
116 top_level_enums=['enum_key'], | 118 top_level_enums=['enum_key'], |
117 top_level_constants=['const_key'] | 119 top_level_constants=['value_key'] |
118 ) | 120 ) |
119 | 121 |
120 mod = mojom_translator.FileTranslator(graph, file_name).Translate() | 122 mod = mojom_translator.FileTranslator(graph, file_name).Translate() |
121 | 123 |
122 self.assertEquals('f.mojom', mod.name) | 124 self.assertEquals('f.mojom', mod.name) |
123 self.assertEquals(mojom_file.file_name, mod.path) | 125 self.assertEquals(mojom_file.file_name, mod.path) |
124 self.assertEquals(mojom_file.module_namespace, mod.namespace) | 126 self.assertEquals(mojom_file.module_namespace, mod.namespace) |
125 | 127 |
126 self.assertEquals('a.mojom', mod.imports[0]['module_name']) | 128 self.assertEquals('a.mojom', mod.imports[0]['module_name']) |
127 self.assertEquals(imported_file.module_namespace, | 129 self.assertEquals(imported_file.module_namespace, |
(...skipping 24 matching lines...) Expand all Loading... |
152 decl_data=mojom_types_mojom.DeclarationData( | 154 decl_data=mojom_types_mojom.DeclarationData( |
153 short_name='field01', | 155 short_name='field01', |
154 declared_ordinal=5), | 156 declared_ordinal=5), |
155 type=mojom_types_mojom.Type( | 157 type=mojom_types_mojom.Type( |
156 simple_type=mojom_types_mojom.SimpleType.BOOL)), | 158 simple_type=mojom_types_mojom.SimpleType.BOOL)), |
157 mojom_types_mojom.StructField( | 159 mojom_types_mojom.StructField( |
158 decl_data=mojom_types_mojom.DeclarationData( | 160 decl_data=mojom_types_mojom.DeclarationData( |
159 short_name='field02'), | 161 short_name='field02'), |
160 type=mojom_types_mojom.Type( | 162 type=mojom_types_mojom.Type( |
161 simple_type=mojom_types_mojom.SimpleType.DOUBLE), | 163 simple_type=mojom_types_mojom.SimpleType.DOUBLE), |
162 default_value=mojom_types_mojom.ConstantOccurrence( | 164 default_value=mojom_types_mojom.DefaultFieldValue( |
163 value=mojom_types_mojom.ConstantValue(double_value=15))), | 165 value=mojom_types_mojom.Value( |
| 166 literal_value=mojom_types_mojom.LiteralValue(double_value=15)))), |
164 ] | 167 ] |
165 mojom_struct.decl_data.source_file_info = mojom_types_mojom.SourceFileInfo( | 168 mojom_struct.decl_data.source_file_info = mojom_types_mojom.SourceFileInfo( |
166 file_name=mojom_file.file_name) | 169 file_name=mojom_file.file_name) |
167 | 170 |
168 struct = module.Struct() | 171 struct = module.Struct() |
169 translator = mojom_translator.FileTranslator(graph, file_name) | 172 translator = mojom_translator.FileTranslator(graph, file_name) |
170 translator.StructFromMojom( | 173 translator.StructFromMojom( |
171 struct, mojom_types_mojom.UserDefinedType(struct_type=mojom_struct)) | 174 struct, mojom_types_mojom.UserDefinedType(struct_type=mojom_struct)) |
172 | 175 |
173 self.assertEquals('FirstStruct', struct.name) | 176 self.assertEquals('FirstStruct', struct.name) |
(...skipping 11 matching lines...) Expand all Loading... |
185 self.assertEquals(15, struct.fields[1].default) | 188 self.assertEquals(15, struct.fields[1].default) |
186 | 189 |
187 def test_constant(self): | 190 def test_constant(self): |
188 graph = mojom_files_mojom.MojomFileGraph() | 191 graph = mojom_files_mojom.MojomFileGraph() |
189 | 192 |
190 mojom_const = mojom_types_mojom.DeclaredConstant() | 193 mojom_const = mojom_types_mojom.DeclaredConstant() |
191 mojom_const.decl_data = mojom_types_mojom.DeclarationData( | 194 mojom_const.decl_data = mojom_types_mojom.DeclarationData( |
192 short_name='foo') | 195 short_name='foo') |
193 mojom_const.type = mojom_types_mojom.Type( | 196 mojom_const.type = mojom_types_mojom.Type( |
194 simple_type=mojom_types_mojom.SimpleType.INT64) | 197 simple_type=mojom_types_mojom.SimpleType.INT64) |
195 mojom_const.value = mojom_types_mojom.ConstantOccurrence() | 198 mojom_const.value = mojom_types_mojom.Value() |
196 mojom_const.value.value = mojom_types_mojom.ConstantValue( | 199 mojom_const.value.literal_value = mojom_types_mojom.LiteralValue( |
197 int64_value=20) | 200 int64_value=20) |
198 | 201 |
199 struct = module.Struct() | 202 struct = module.Struct() |
200 const = mojom_translator.FileTranslator(graph, None).ConstFromMojom( | 203 const = mojom_translator.FileTranslator(graph, None).ConstFromMojom( |
201 mojom_const, struct) | 204 mojom_const, struct) |
202 | 205 |
203 self.assertEquals(mojom_const.decl_data.short_name, const.name) | 206 self.assertEquals(mojom_const.decl_data.short_name, const.name) |
204 self.assertEquals(module.INT64, const.kind) | 207 self.assertEquals(module.INT64, const.kind) |
205 self.assertEquals(20, const.value) | 208 self.assertEquals(20, const.value) |
206 self.assertEquals(struct, const.parent_kind) | 209 self.assertEquals(struct, const.parent_kind) |
207 | 210 |
208 def test_enum(self): | 211 def test_enum(self): |
209 file_name = 'a.mojom' | 212 file_name = 'a.mojom' |
210 mojom_enum = mojom_types_mojom.MojomEnum() | 213 mojom_enum = mojom_types_mojom.MojomEnum() |
211 mojom_enum.decl_data = mojom_types_mojom.DeclarationData( | 214 mojom_enum.decl_data = mojom_types_mojom.DeclarationData( |
212 short_name='AnEnum', | 215 short_name='AnEnum', |
213 source_file_info=mojom_types_mojom.SourceFileInfo(file_name=file_name)) | 216 source_file_info=mojom_types_mojom.SourceFileInfo(file_name=file_name)) |
214 value1 = mojom_types_mojom.EnumValue( | 217 value1 = mojom_types_mojom.EnumValue( |
215 decl_data=mojom_types_mojom.DeclarationData(short_name='val1'), | 218 decl_data=mojom_types_mojom.DeclarationData(short_name='val1'), |
216 value=mojom_types_mojom.ConstantOccurrence( | 219 enum_type_key='AnEnum', |
217 value=mojom_types_mojom.ConstantValue(int32_value=20))) | 220 int_value=20) |
218 value2 = mojom_types_mojom.EnumValue( | 221 value2 = mojom_types_mojom.EnumValue( |
219 decl_data=mojom_types_mojom.DeclarationData(short_name='val2'), | 222 decl_data=mojom_types_mojom.DeclarationData(short_name='val2'), |
220 value=mojom_types_mojom.ConstantOccurrence( | 223 enum_type_key='AnEnum', |
221 value=mojom_types_mojom.ConstantValue(int32_value=70))) | 224 int_value=70) |
222 mojom_enum.values = [value1, value2] | 225 mojom_enum.values = [value1, value2] |
223 | 226 |
224 | 227 |
225 graph = mojom_files_mojom.MojomFileGraph() | 228 graph = mojom_files_mojom.MojomFileGraph() |
226 enum = module.Enum() | 229 enum = module.Enum() |
227 translator = mojom_translator.FileTranslator(graph, file_name) | 230 translator = mojom_translator.FileTranslator(graph, file_name) |
228 translator.EnumFromMojom( | 231 translator.EnumFromMojom( |
229 enum, mojom_types_mojom.UserDefinedType(enum_type=mojom_enum), None) | 232 enum, mojom_types_mojom.UserDefinedType(enum_type=mojom_enum), None) |
230 | 233 |
231 self.assertEquals(translator._module, enum.module) | 234 self.assertEquals(translator._module, enum.module) |
232 self.assertEquals(mojom_enum.decl_data.short_name, enum.name) | 235 self.assertEquals(mojom_enum.decl_data.short_name, enum.name) |
233 self.assertEquals(len(mojom_enum.values), len(enum.fields)) | 236 self.assertEquals(len(mojom_enum.values), len(enum.fields)) |
234 | 237 |
235 self.assertEquals(value1.decl_data.short_name, enum.fields[0].name) | 238 self.assertEquals(value1.decl_data.short_name, enum.fields[0].name) |
236 self.assertEquals(value2.decl_data.short_name, enum.fields[1].name) | 239 self.assertEquals(value2.decl_data.short_name, enum.fields[1].name) |
237 | 240 |
238 self.assertEquals(value1.value.value.int32_value, enum.fields[0].value) | 241 self.assertEquals(value1.int_value, enum.fields[0].value) |
239 self.assertEquals(value2.value.value.int32_value, enum.fields[1].value) | 242 self.assertEquals(value2.int_value, enum.fields[1].value) |
240 | 243 |
241 self.assertEquals(value1.value.value.int32_value, | 244 self.assertEquals(value1.int_value, |
242 enum.fields[0].numeric_value) | 245 enum.fields[0].numeric_value) |
243 self.assertEquals(value2.value.value.int32_value, | 246 self.assertEquals(value2.int_value, |
244 enum.fields[1].numeric_value) | 247 enum.fields[1].numeric_value) |
245 | 248 |
246 def test_unions(self): | 249 def test_unions(self): |
247 file_name = 'a.mojom' | 250 file_name = 'a.mojom' |
248 mojom_union = mojom_types_mojom.MojomUnion() | 251 mojom_union = mojom_types_mojom.MojomUnion() |
249 mojom_union.decl_data = mojom_types_mojom.DeclarationData( | 252 mojom_union.decl_data = mojom_types_mojom.DeclarationData( |
250 short_name='AUnion', | 253 short_name='AUnion', |
251 source_file_info=mojom_types_mojom.SourceFileInfo(file_name=file_name)) | 254 source_file_info=mojom_types_mojom.SourceFileInfo(file_name=file_name)) |
252 | 255 |
253 field1 = mojom_types_mojom.UnionField( | 256 field1 = mojom_types_mojom.UnionField( |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
418 param1.decl_data.short_name, method.response_parameters[0].name) | 421 param1.decl_data.short_name, method.response_parameters[0].name) |
419 | 422 |
420 def test_parameter(self): | 423 def test_parameter(self): |
421 # Parameters are encoded as fields in a struct. | 424 # Parameters are encoded as fields in a struct. |
422 mojom_param = mojom_types_mojom.StructField( | 425 mojom_param = mojom_types_mojom.StructField( |
423 decl_data=mojom_types_mojom.DeclarationData( | 426 decl_data=mojom_types_mojom.DeclarationData( |
424 short_name='param0', | 427 short_name='param0', |
425 declared_ordinal=5), | 428 declared_ordinal=5), |
426 type=mojom_types_mojom.Type( | 429 type=mojom_types_mojom.Type( |
427 simple_type=mojom_types_mojom.SimpleType.UINT64), | 430 simple_type=mojom_types_mojom.SimpleType.UINT64), |
428 default_value=mojom_types_mojom.ConstantOccurrence( | 431 default_value=mojom_types_mojom.Value( |
429 value=mojom_types_mojom.ConstantValue(uint64_value=20))) | 432 literal_value=mojom_types_mojom.LiteralValue(uint64_value=20))) |
430 | 433 |
431 graph = mojom_files_mojom.MojomFileGraph() | 434 graph = mojom_files_mojom.MojomFileGraph() |
432 translator = mojom_translator.FileTranslator(graph, '') | 435 translator = mojom_translator.FileTranslator(graph, '') |
433 param = translator.ParamFromMojom(mojom_param) | 436 param = translator.ParamFromMojom(mojom_param) |
434 | 437 |
435 self.assertEquals(mojom_param.decl_data.short_name, param.name) | 438 self.assertEquals(mojom_param.decl_data.short_name, param.name) |
436 self.assertEquals(module.UINT64, param.kind) | 439 self.assertEquals(module.UINT64, param.kind) |
437 self.assertEquals(mojom_param.decl_data.declared_ordinal, param.ordinal) | 440 self.assertEquals(mojom_param.decl_data.declared_ordinal, param.ordinal) |
438 self.assertEquals( | |
439 mojom_param.default_value.value.uint64_value, param.default) | |
440 | 441 |
441 | 442 |
442 class TestEvalConst(unittest.TestCase): | 443 class TestEvalValue(unittest.TestCase): |
443 | 444 |
444 def test_resolved_simple(self): | 445 def test_literal_value(self): |
445 mojom = mojom_types_mojom.ConstantOccurrence() | 446 mojom = mojom_types_mojom.Value() |
446 mojom.value = mojom_types_mojom.ConstantValue(int64_value=20) | 447 mojom.literal_value = mojom_types_mojom.LiteralValue(int64_value=20) |
447 | 448 |
448 graph = mojom_files_mojom.MojomFileGraph() | 449 graph = mojom_files_mojom.MojomFileGraph() |
449 const = mojom_translator.FileTranslator(graph, None).EvalConst(mojom) | 450 const = mojom_translator.FileTranslator(graph, None).EvalValue(mojom) |
450 | 451 |
451 self.assertEquals(20, const) | 452 self.assertEquals(20, const) |
452 | 453 |
453 def test_resolved_enum(self): | 454 def test_resolved_user_defined_values(self): |
454 # TODO(azani): Handle resolved enums. | 455 # TODO(azani): Write this. |
455 pass | 456 pass |
456 | 457 |
457 def test_builtin_const(self): | 458 def test_builtin_const(self): |
458 mojom = mojom_types_mojom.ConstantOccurrence() | 459 mojom = mojom_types_mojom.Value() |
459 mojom.value = mojom_types_mojom.ConstantValue() | |
460 | 460 |
461 graph = mojom_files_mojom.MojomFileGraph() | 461 graph = mojom_files_mojom.MojomFileGraph() |
462 | 462 |
463 gold = [ | 463 gold = [ |
464 (mojom_types_mojom.BuiltinConstantValue.DOUBLE_INFINITY, | 464 (mojom_types_mojom.BuiltinConstantValue.DOUBLE_INFINITY, |
465 'double.INFINITY'), | 465 'double.INFINITY'), |
466 (mojom_types_mojom.BuiltinConstantValue.DOUBLE_NEGATIVE_INFINITY, | 466 (mojom_types_mojom.BuiltinConstantValue.DOUBLE_NEGATIVE_INFINITY, |
467 'double.NEGATIVE_INFINITY'), | 467 'double.NEGATIVE_INFINITY'), |
468 (mojom_types_mojom.BuiltinConstantValue.DOUBLE_NAN, | 468 (mojom_types_mojom.BuiltinConstantValue.DOUBLE_NAN, |
469 'double.DOUBLE_NAN'), | 469 'double.DOUBLE_NAN'), |
470 (mojom_types_mojom.BuiltinConstantValue.FLOAT_INFINITY, | 470 (mojom_types_mojom.BuiltinConstantValue.FLOAT_INFINITY, |
471 'float.INFINITY'), | 471 'float.INFINITY'), |
472 (mojom_types_mojom.BuiltinConstantValue.FLOAT_NEGATIVE_INFINITY, | 472 (mojom_types_mojom.BuiltinConstantValue.FLOAT_NEGATIVE_INFINITY, |
473 'float.NEGATIVE_INFINITY'), | 473 'float.NEGATIVE_INFINITY'), |
474 (mojom_types_mojom.BuiltinConstantValue.FLOAT_NAN, 'float.NAN'), | 474 (mojom_types_mojom.BuiltinConstantValue.FLOAT_NAN, 'float.NAN'), |
475 ] | 475 ] |
476 | 476 |
477 for mojom_builtin, string in gold: | 477 for mojom_builtin, string in gold: |
478 mojom.value.builtin_value = mojom_builtin | 478 mojom.builtin_value = mojom_builtin |
479 const = mojom_translator.FileTranslator(graph, None).EvalConst(mojom) | 479 const = mojom_translator.FileTranslator(graph, None).EvalValue(mojom) |
480 self.assertIsInstance(const, module.BuiltinValue) | 480 self.assertIsInstance(const, module.BuiltinValue) |
481 self.assertEquals(string, const.value) | 481 self.assertEquals(string, const.value) |
482 | 482 |
483 | 483 |
484 | 484 |
485 | 485 |
486 # TODO(azani): Set the path of modules correctly. | 486 # TODO(azani): Set the path of modules correctly. |
487 | 487 |
488 class TestKindFromMojom(unittest.TestCase): | 488 class TestKindFromMojom(unittest.TestCase): |
489 | 489 |
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 result2 = t.KindFromMojom(mojom_type) | 638 result2 = t.KindFromMojom(mojom_type) |
639 self.assertIs(result, result2) | 639 self.assertIs(result, result2) |
640 | 640 |
641 # Nullable type reference | 641 # Nullable type reference |
642 mojom_type.type_reference.nullable = True | 642 mojom_type.type_reference.nullable = True |
643 nullable_result = t.KindFromMojom(mojom_type) | 643 nullable_result = t.KindFromMojom(mojom_type) |
644 self.assertTrue(module.IsNullableKind(nullable_result)) | 644 self.assertTrue(module.IsNullableKind(nullable_result)) |
645 | 645 |
646 if __name__ == '__main__': | 646 if __name__ == '__main__': |
647 unittest.main() | 647 unittest.main() |
OLD | NEW |