Exemple #1
0
    def testIsComposite(self):
        """Tests the IsComposite function."""
        data_type_definition = data_types.SequenceDefinition(
            u'byte_stream', None, description=u'byte stream')

        result = data_type_definition.IsComposite()
        self.assertTrue(result)
Exemple #2
0
    def testGetAttributeNames(self):
        """Tests the GetAttributeNames function."""
        element_definition = data_types.IntegerDefinition(u'byte')
        data_type_definition = data_types.SequenceDefinition(
            u'byte_stream', element_definition, description=u'byte stream')

        attribute_names = data_type_definition.GetAttributeNames()
        self.assertEqual(attribute_names, [u'elements'])
Exemple #3
0
    def _ReadSequenceDataTypeDefinition(self, definitions_registry,
                                        definition_values, definition_name):
        """Reads a sequence data type definition.

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

    Returns:
      SequenceDefinition: sequence data type definition.

    Raises:
      DefinitionReaderError: if the definitions values are missing or if
          the format is incorrect.
    """
        attributes = definition_values.get(u'attributes')
        if attributes:
            error_message = u'attributes not supported by sequence data type'
            raise errors.DefinitionReaderError(definition_name, error_message)

        element_data_type = definition_values.get(u'element_data_type', None)
        if not element_data_type:
            error_message = u'missing element data type'
            raise errors.DefinitionReaderError(definition_name, error_message)

        number_of_elements = definition_values.get(u'number_of_elements', None)
        if not number_of_elements:
            error_message = u'missing number of elements'
            raise errors.DefinitionReaderError(definition_name, error_message)

        element_data_type_definition = definitions_registry.GetDefinitionByName(
            element_data_type)
        if not element_data_type_definition:
            error_message = u'undefined element data type: {0:s}.'.format(
                element_data_type)
            raise errors.DefinitionReaderError(definition_name, error_message)

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

        definition_object = data_types.SequenceDefinition(
            definition_name,
            element_data_type_definition,
            aliases=aliases,
            data_type=element_data_type,
            description=description,
            urls=urls)

        try:
            definition_object.number_of_elements = int(number_of_elements)
        except ValueError:
            definition_object.number_of_elements_expression = number_of_elements

        return definition_object
Exemple #4
0
    def testGetStructByteOrderString(self):
        """Tests the GetStructByteOrderString function."""
        data_type_definition = data_types.SequenceDefinition(
            u'byte_stream', None, description=u'byte stream')

        byte_order_string = data_type_definition.GetStructByteOrderString()
        self.assertIsNone(byte_order_string)

        element_definition = data_types.IntegerDefinition(u'uint16le')
        element_definition.byte_order = definitions.BYTE_ORDER_LITTLE_ENDIAN
        data_type_definition.element_data_type_definition = element_definition

        byte_order_string = data_type_definition.GetStructByteOrderString()
        self.assertEqual(byte_order_string, u'<')
Exemple #5
0
    def testGetStructFormatString(self):
        """Tests the GetStructFormatString function."""
        data_type_definition = data_types.SequenceDefinition(
            u'byte_stream', None, description=u'byte stream')

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

        element_definition = data_types.IntegerDefinition(u'byte')
        element_definition.format = definitions.FORMAT_UNSIGNED
        element_definition.size = 1
        data_type_definition.element_data_type_definition = element_definition

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

        data_type_definition.number_of_elements = 32
        struct_format_string = data_type_definition.GetStructFormatString()
        self.assertEqual(struct_format_string, u'32B')
Exemple #6
0
    def testGetByteSize(self):
        """Tests the GetByteSize function."""
        data_type_definition = data_types.SequenceDefinition(
            u'byte_stream', None, description=u'byte stream')

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

        element_definition = data_types.IntegerDefinition(u'byte')
        element_definition.format = definitions.FORMAT_UNSIGNED
        element_definition.size = 1
        data_type_definition.element_data_type_definition = element_definition

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

        data_type_definition.number_of_elements = 32
        byte_size = data_type_definition.GetByteSize()
        self.assertEqual(byte_size, 32)
Exemple #7
0
 def testInitialize(self):
     """Tests the __init__ function."""
     element_definition = data_types.IntegerDefinition(u'byte')
     data_type_definition = data_types.SequenceDefinition(
         u'byte_stream', element_definition, description=u'byte stream')
     self.assertIsNotNone(data_type_definition)