# Path: dtformats/data_format.py
# class BinaryDataFormat(object):
# class BinaryDataFile(BinaryDataFormat):
#   _FABRIC = None
#   _DEFINITION_FILES_PATH = os.path.dirname(__file__)
#   _HEXDUMP_CHARACTER_MAP = [
#       '.' if byte < 0x20 or byte > 0x7e else chr(byte) for byte in range(256)]
#   def __init__(self, debug=False, output_writer=None):
#   def _DebugPrintData(self, description, data):
#   def _DebugPrintDecimalValue(self, description, value):
#   def _DebugPrintFiletimeValue(self, description, value):
#   def _DebugPrintStructureObject(self, structure_object, debug_info):
#   def _DebugPrintPosixTimeValue(self, description, value):
#   def _DebugPrintText(self, text):
#   def _DebugPrintValue(self, description, value):
#   def _FormatDataInHexadecimal(self, data):
#   def _FormatArrayOfIntegersAsDecimals(self, array_of_integers):
#   def _FormatArrayOfIntegersAsOffsets(self, array_of_integers):
#   def _FormatArrayOfIntegersAsIPv4Address(self, array_of_integers):
#   def _FormatArrayOfIntegersAsIPv6Address(self, array_of_integers):
#   def _FormatFloatingPoint(self, floating_point):
#   def _FormatIntegerAsDecimal(self, integer):
#   def _FormatIntegerAsFiletime(self, integer):
#   def _FormatIntegerAsHexadecimal2(self, integer):
#   def _FormatIntegerAsHexadecimal4(self, integer):
#   def _FormatIntegerAsHexadecimal8(self, integer):
#   def _FormatIntegerAsPosixTime(self, integer):
#   def _FormatIntegerAsPosixTimeInMicroseconds(self, integer):
#   def _FormatIntegerAsOffset(self, integer):
#   def _FormatPackedIPv4Address(self, packed_ip_address):
#   def _FormatPackedIPv6Address(self, packed_ip_address):
#   def _FormatString(self, string):
#   def _FormatStructureObject(self, structure_object, debug_info):
#   def _FormatUUIDAsString(self, uuid):
#   def _FormatValue(self, description, value):
#   def _GetDataTypeMap(self, name):
#   def _ReadData(self, file_object, file_offset, data_size, description):
#   def _ReadStructure(
#       self, file_object, file_offset, data_size, data_type_map, description):
#   def _ReadStructureFromByteStream(
#       self, byte_stream, file_offset, data_type_map, description, context=None):
#   def _ReadStructureFromFileObject(
#       self, file_object, file_offset, data_type_map, description):
#   def ReadDefinitionFile(cls, filename):
#   def __init__(self, debug=False, output_writer=None):
#   def Close(self):
#   def Open(self, path):
#   def ReadFileObject(self, file_object):
# 
# Path: dtformats/errors.py
# class ParseError(Exception):
# 
# Path: tests/test_lib.py
# class BaseTestCase(unittest.TestCase):
# class TestOutputWriter(output_writers.OutputWriter):
#   _TEST_DATA_PATH = os.path.join(os.getcwd(), 'test_data')
#   def _GetTestFilePath(self, path_segments):
#   def _SkipIfPathNotExists(self, path):
#   def __init__(self):
#   def Close(self):
#   def Open(self):
#   def WriteText(self, text):


import io
import unittest
from dtfabric import errors as dtfabric_errors
from dtfabric.runtime import data_maps as dtfabric_data_maps
from dtfabric.runtime import fabric as dtfabric_fabric
from dtformats import data_format
from dtformats import errors
from tests import test_lib
    file_object = io.BytesIO(
        b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00')

    with self.assertRaises(errors.ParseError):
      test_format._ReadData(file_object, 0, test_format.POINT3D_SIZE, 'point3d')

    # Test with file-like object that raises an IOError.
    file_object = ErrorBytesIO(
        b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00')

    with self.assertRaises(errors.ParseError):
      test_format._ReadData(file_object, 0, test_format.POINT3D_SIZE, 'point3d')

  # TODO: add tests for _ReadDefinitionFile

  def testReadStructure(self):
    """Tests the _ReadStructure function."""
    output_writer = test_lib.TestOutputWriter()
    test_format = TestBinaryDataFormat(
        debug=True, output_writer=output_writer)

    file_object = io.BytesIO(
        b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00')

    test_format._ReadStructure(
        file_object, 0, test_format.POINT3D_SIZE, test_format.POINT3D,
        'point3d')

  def testReadStructureFromByteStream(self):
    """Tests the _ReadStructureFromByteStream function."""

# Path: dtformats/data_format.py
# class BinaryDataFormat(object):
# class BinaryDataFile(BinaryDataFormat):
#   _FABRIC = None
#   _DEFINITION_FILES_PATH = os.path.dirname(__file__)
#   _HEXDUMP_CHARACTER_MAP = [
#       '.' if byte < 0x20 or byte > 0x7e else chr(byte) for byte in range(256)]
#   def __init__(self, debug=False, output_writer=None):
#   def _DebugPrintData(self, description, data):
#   def _DebugPrintDecimalValue(self, description, value):
#   def _DebugPrintFiletimeValue(self, description, value):
#   def _DebugPrintStructureObject(self, structure_object, debug_info):
#   def _DebugPrintPosixTimeValue(self, description, value):
#   def _DebugPrintText(self, text):
#   def _DebugPrintValue(self, description, value):
#   def _FormatDataInHexadecimal(self, data):
#   def _FormatArrayOfIntegersAsDecimals(self, array_of_integers):
#   def _FormatArrayOfIntegersAsOffsets(self, array_of_integers):
#   def _FormatArrayOfIntegersAsIPv4Address(self, array_of_integers):
#   def _FormatArrayOfIntegersAsIPv6Address(self, array_of_integers):
#   def _FormatFloatingPoint(self, floating_point):
#   def _FormatIntegerAsDecimal(self, integer):
#   def _FormatIntegerAsFiletime(self, integer):
#   def _FormatIntegerAsHexadecimal2(self, integer):
#   def _FormatIntegerAsHexadecimal4(self, integer):
#   def _FormatIntegerAsHexadecimal8(self, integer):
#   def _FormatIntegerAsPosixTime(self, integer):
#   def _FormatIntegerAsPosixTimeInMicroseconds(self, integer):
#   def _FormatIntegerAsOffset(self, integer):
#   def _FormatPackedIPv4Address(self, packed_ip_address):
#   def _FormatPackedIPv6Address(self, packed_ip_address):
#   def _FormatString(self, string):
#   def _FormatStructureObject(self, structure_object, debug_info):
#   def _FormatUUIDAsString(self, uuid):
#   def _FormatValue(self, description, value):
#   def _GetDataTypeMap(self, name):
#   def _ReadData(self, file_object, file_offset, data_size, description):
#   def _ReadStructure(
#       self, file_object, file_offset, data_size, data_type_map, description):
#   def _ReadStructureFromByteStream(
#       self, byte_stream, file_offset, data_type_map, description, context=None):
#   def _ReadStructureFromFileObject(
#       self, file_object, file_offset, data_type_map, description):
#   def ReadDefinitionFile(cls, filename):
#   def __init__(self, debug=False, output_writer=None):
#   def Close(self):
#   def Open(self, path):
#   def ReadFileObject(self, file_object):
# 
# Path: dtformats/errors.py
# class ParseError(Exception):
# 
# Path: tests/test_lib.py
# class BaseTestCase(unittest.TestCase):
# class TestOutputWriter(output_writers.OutputWriter):
#   _TEST_DATA_PATH = os.path.join(os.getcwd(), 'test_data')
#   def _GetTestFilePath(self, path_segments):
#   def _SkipIfPathNotExists(self, path):
#   def __init__(self):
#   def Close(self):
#   def Open(self):
#   def WriteText(self, text):


# Path: tests/data_format.py
import io
import unittest
from dtfabric import errors as dtfabric_errors
from dtfabric.runtime import data_maps as dtfabric_data_maps
from dtfabric.runtime import fabric as dtfabric_fabric
from dtformats import data_format
from dtformats import errors
from tests import test_lib

    file_object = io.BytesIO(
        b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00')

    with self.assertRaises(errors.ParseError):
      test_format._ReadData(file_object, 0, test_format.POINT3D_SIZE, 'point3d')

    # Test with file-like object that raises an IOError.
    file_object = ErrorBytesIO(
        b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00')

    with self.assertRaises(errors.ParseError):
      test_format._ReadData(file_object, 0, test_format.POINT3D_SIZE, 'point3d')

  # TODO: add tests for _ReadDefinitionFile

  def testReadStructure(self):
    """Tests the _ReadStructure function."""
    output_writer = test_lib.TestOutputWriter()
    test_format = TestBinaryDataFormat(
        debug=True, output_writer=output_writer)

    file_object = io.BytesIO(
        b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00')

    test_format._ReadStructure(
        file_object, 0, test_format.POINT3D_SIZE, test_format.POINT3D,
        'point3d')

  def testReadStructureFromByteStream(self):
    """Tests the _ReadStructureFromByteStream function."""

    output_writer = test_lib.TestOutputWriter()