Exemplo n.º 1
0
    def testGetByteSize(self):
        """Tests the GetByteSize function."""
        data_type_definition = data_types.StructureDefinition(
            u'my_struct_type',
            aliases=[u'MY_STRUCT_TYPE'],
            description=u'my structure type')

        byte_size = data_type_definition.GetByteSize()
        self.assertIsNone(byte_size)

        definitions_file = self._GetTestFilePath([u'structure.yaml'])
        definitions_registry = self._CreateDefinitionRegistryFromFile(
            definitions_file)
        member_definition = definitions_registry.GetDefinitionByName(u'int32')

        structure_member_definition = data_types.StructureMemberDefinition(
            u'my_struct_member',
            member_definition,
            aliases=[u'MY_STRUCT_MEMBER'],
            data_type=u'int32',
            description=u'my structure member')

        data_type_definition.AddMemberDefinition(structure_member_definition)

        byte_size = data_type_definition.GetByteSize()
        self.assertEqual(byte_size, 4)
Exemplo n.º 2
0
    def testGetAttributeNames(self):
        """Tests the GetAttributeNames function."""
        data_type_definition = data_types.StructureDefinition(
            u'my_struct_type',
            aliases=[u'MY_STRUCT_TYPE'],
            description=u'my structure type')

        attribute_names = data_type_definition.GetAttributeNames()
        self.assertEqual(attribute_names, [])

        definitions_file = self._GetTestFilePath([u'structure.yaml'])
        definitions_registry = self._CreateDefinitionRegistryFromFile(
            definitions_file)
        member_definition = definitions_registry.GetDefinitionByName(u'int32')

        structure_member_definition = data_types.StructureMemberDefinition(
            u'my_struct_member',
            member_definition,
            aliases=[u'MY_STRUCT_MEMBER'],
            data_type=u'int32',
            description=u'my structure member')

        data_type_definition.AddMemberDefinition(structure_member_definition)

        attribute_names = data_type_definition.GetAttributeNames()
        self.assertEqual(attribute_names, [u'my_struct_member'])
Exemplo n.º 3
0
    def testGetStructFormatString(self):
        """Tests the GetStructFormatString function."""
        data_type_definition = data_types.StructureDefinition(
            u'my_struct_type',
            aliases=[u'MY_STRUCT_TYPE'],
            description=u'my structure type')

        struct_format_string = data_type_definition.GetStructFormatString()
        self.assertIsNone(struct_format_string)

        definitions_file = self._GetTestFilePath([u'structure.yaml'])
        definitions_registry = self._CreateDefinitionRegistryFromFile(
            definitions_file)
        member_definition = definitions_registry.GetDefinitionByName(u'int32')

        structure_member_definition = data_types.StructureMemberDefinition(
            u'my_struct_member',
            member_definition,
            aliases=[u'MY_STRUCT_MEMBER'],
            data_type=u'int32',
            description=u'my structure member')

        data_type_definition.AddMemberDefinition(structure_member_definition)

        struct_format_string = data_type_definition.GetStructFormatString()
        self.assertEqual(struct_format_string, u'i')

        # Test with member without a struct format string.

        data_type_definition = data_types.StructureDefinition(
            u'my_struct_type',
            aliases=[u'MY_STRUCT_TYPE'],
            description=u'my structure type')

        member_definition = TestDataTypeDefinition(u'test')

        structure_member_definition = data_types.StructureMemberDefinition(
            u'my_struct_member',
            member_definition,
            aliases=[u'MY_STRUCT_MEMBER'],
            data_type=u'test',
            description=u'my structure member')

        data_type_definition.AddMemberDefinition(structure_member_definition)

        struct_format_string = data_type_definition.GetStructFormatString()
        self.assertIsNone(struct_format_string)
Exemplo n.º 4
0
    def testInitialize(self):
        """Tests the __init__ function."""
        definitions_file = self._GetTestFilePath([u'structure.yaml'])
        definitions_registry = self._CreateDefinitionRegistryFromFile(
            definitions_file)
        member_definition = definitions_registry.GetDefinitionByName(u'int32')

        data_type_definition = data_types.StructureMemberDefinition(
            u'my_struct_member',
            member_definition,
            aliases=[u'MY_STRUCT_MEMBER'],
            data_type=u'int32',
            description=u'my structure member')
        self.assertIsNotNone(data_type_definition)
Exemplo n.º 5
0
    def testIsComposite(self):
        """Tests the IsComposite function."""
        definitions_file = self._GetTestFilePath([u'structure.yaml'])
        definitions_registry = self._CreateDefinitionRegistryFromFile(
            definitions_file)
        member_definition = definitions_registry.GetDefinitionByName(u'int32')

        data_type_definition = data_types.StructureMemberDefinition(
            u'my_struct_member',
            None,
            aliases=[u'MY_STRUCT_MEMBER'],
            data_type=u'int32',
            description=u'my structure member')

        result = data_type_definition.IsComposite()
        self.assertIsNone(result)

        data_type_definition.member_data_type_definition = member_definition
        result = data_type_definition.IsComposite()
        self.assertFalse(result)
Exemplo n.º 6
0
    def testGetStructFormatString(self):
        """Tests the GetStructFormatString function."""
        definitions_file = self._GetTestFilePath([u'structure.yaml'])
        definitions_registry = self._CreateDefinitionRegistryFromFile(
            definitions_file)
        member_definition = definitions_registry.GetDefinitionByName(u'int32')

        data_type_definition = data_types.StructureMemberDefinition(
            u'my_struct_member',
            None,
            aliases=[u'MY_STRUCT_MEMBER'],
            data_type=u'int32',
            description=u'my structure member')

        struct_format_string = data_type_definition.GetStructFormatString()
        self.assertIsNone(struct_format_string)

        data_type_definition.member_data_type_definition = member_definition
        struct_format_string = data_type_definition.GetStructFormatString()
        self.assertEqual(struct_format_string, u'i')
Exemplo n.º 7
0
    def _ReadStructureDataTypeDefinitionMember(self, definitions_registry,
                                               definition_values,
                                               definition_name):
        """Reads a structure data type definition member.

    Args:
      definitions_registry (DataTypeDefinitionsRegistry): data type definitions
          registry.
      definition_values (dict[str, object]): definition values.
      definition_name (str): name of the definition.

    Returns:
      DataTypeDefinition: structure member data type definition.

    Raises:
      DefinitionReaderError: if the definitions values are missing or if
          the format is incorrect.
    """
        name = definition_values.get(u'name', None)
        if not name:
            error_message = u'invalid structure member missing name'
            raise errors.DefinitionReaderError(definition_name, error_message)

        if not definition_values:
            error_message = (
                u'invalid structure member: {0:s} missing definition values'
            ).format(name)
            raise errors.DefinitionReaderError(definition_name, error_message)

        data_type = definition_values.get(u'data_type', None)
        type_indicator = definition_values.get(u'type', None)

        if type_indicator is not None and data_type is not None:
            error_message = (
                u'invalid structure member: {0:s} both type: {1:s} and data '
                u'type: {2:s} are set').format(name, type_indicator, data_type)
            raise errors.DefinitionReaderError(definition_name, error_message)

        if type_indicator is not None:
            definition_object = self.ReadDefinitionFromDict(
                definitions_registry, definition_values)

        else:
            data_type_definition = definitions_registry.GetDefinitionByName(
                data_type)
            if not data_type_definition:
                error_message = (
                    u'invalid structure member: {0:s} undefined data type: '
                    u'{1:s}').format(name, data_type)
                raise errors.DefinitionReaderError(definition_name,
                                                   error_message)

            aliases = definition_values.get(u'aliases', None)
            description = definition_values.get(u'description', None)

            definition_object = data_types.StructureMemberDefinition(
                name,
                data_type_definition,
                aliases=aliases,
                data_type=data_type,
                description=description)

        return definition_object