예제 #1
0
    def test_enum(self):
        file_name = 'a.mojom'
        mojom_enum = mojom_types_mojom.MojomEnum()
        mojom_enum.decl_data = mojom_types_mojom.DeclarationData(
            short_name='AnEnum',
            source_file_info=mojom_types_mojom.SourceFileInfo(
                file_name=file_name))
        value1 = mojom_types_mojom.EnumValue(
            decl_data=mojom_types_mojom.DeclarationData(short_name='val1'),
            initializer_value=mojom_types_mojom.Value(
                literal_value=mojom_types_mojom.LiteralValue(uint64_value=20)),
            int_value=20)
        value2 = mojom_types_mojom.EnumValue(
            decl_data=mojom_types_mojom.DeclarationData(short_name='val2'),
            int_value=70)
        mojom_enum.values = [value1, value2]

        graph = mojom_files_mojom.MojomFileGraph()
        enum = module.Enum()
        translator = mojom_translator.FileTranslator(graph, file_name)
        translator.EnumFromMojom(
            enum, mojom_types_mojom.UserDefinedType(enum_type=mojom_enum))

        self.assertEquals(translator._module, enum.module)
        self.assertEquals(mojom_enum.decl_data.short_name, enum.name)
        self.assertEquals(len(mojom_enum.values), len(enum.fields))

        self.assertEquals(value1.decl_data.short_name, enum.fields[0].name)
        self.assertEquals(value2.decl_data.short_name, enum.fields[1].name)

        self.assertEquals('20', enum.fields[0].value)
        self.assertIsNone(enum.fields[1].value)

        self.assertEquals(value1.int_value, enum.fields[0].numeric_value)
        self.assertEquals(value2.int_value, enum.fields[1].numeric_value)
예제 #2
0
    def test_enum_value(self):
        file_name = 'a.mojom'
        mojom_enum = mojom_types_mojom.MojomEnum()
        mojom_enum.decl_data = mojom_types_mojom.DeclarationData(
            short_name='AnEnum',
            source_file_info=mojom_types_mojom.SourceFileInfo(
                file_name=file_name))
        value1 = mojom_types_mojom.EnumValue(
            decl_data=mojom_types_mojom.DeclarationData(
                short_name='val1',
                source_file_info=mojom_types_mojom.SourceFileInfo(
                    file_name=file_name)),
            enum_type_key='enum_key',
            initializer_value=mojom_types_mojom.Value(
                literal_value=mojom_types_mojom.LiteralValue(uint64_value=20)),
            int_value=20)
        value2 = mojom_types_mojom.EnumValue(
            decl_data=mojom_types_mojom.DeclarationData(short_name='val2'),
            enum_type_key='enum_key',
            int_value=70)
        mojom_enum.values = [value1, value2]

        graph = mojom_files_mojom.MojomFileGraph()
        graph.resolved_types = {
            'enum_key': mojom_types_mojom.UserDefinedType(enum_type=mojom_enum)
        }
        graph.resolved_values = {
            'enum_value1':
            mojom_types_mojom.UserDefinedValue(enum_value=value1),
            'enum_value2':
            mojom_types_mojom.UserDefinedValue(enum_value=value2),
        }

        mojom = mojom_types_mojom.Value(
            user_value_reference=mojom_types_mojom.UserValueReference(
                identifier='SOMEID', value_key='enum_value1'))

        translator = mojom_translator.FileTranslator(graph, file_name)
        enum_value = translator.ValueFromMojom(mojom)
        enum = translator.UserDefinedFromTypeKey('enum_key')

        self.assertIs(enum, enum_value.enum)
        self.assertIs(value1.decl_data.short_name, enum_value.name)