コード例 #1
0
 def setUpClass(cls):
     cls.api = getZserioApi(__file__, "sql_databases.zs").db_with_relocation
     cls._europeDbFileName = os.path.join(
         getApiDir(os.path.dirname(__file__)),
         "db_with_relocation_test_europe.sqlite")
     cls._americaDbFileName = os.path.join(
         getApiDir(os.path.dirname(__file__)),
         "db_with_relocation_test_america.sqlite")
コード例 #2
0
class PackedAutoArrayStructWithExternTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "array_types.zs").packed_auto_array_struct_with_extern

    def testWriteRead(self):
        packedAutoArray = self._createPackedAutoArray()
        bitBuffer = zserio.serialize(packedAutoArray)

        self.assertEqual(bitBuffer.bitsize, packedAutoArray.bitsizeof())
        self.assertEqual(bitBuffer.bitsize, packedAutoArray.initialize_offsets(0))

        readPackedAutoArray = zserio.deserialize(self.api.PackedAutoArray, bitBuffer)
        self.assertEqual(packedAutoArray, readPackedAutoArray)

    def testWriteReadFile(self):
        packedAutoArray = self._createPackedAutoArray()
        zserio.serialize_to_file(packedAutoArray, self.BLOB_NAME)

        readPackedAutoArray = zserio.deserialize_from_file(self.api.PackedAutoArray, self.BLOB_NAME)
        self.assertEqual(packedAutoArray, readPackedAutoArray)

    def _createPackedAutoArray(self):
        return self.api.PackedAutoArray(
            [self.api.TestStructure(uint32, zserio.BitBuffer(extern), uint8)
             for uint32, extern, uint8 in zip(self.UINT32_FIELD, self.EXTERN_FIELD, self.UINT8_FIELD)]
        )

    UINT32_FIELD = list(range(100000, 200000, 10000))
    EXTERN_FIELD = [b'\xAB\xCD\xEF', b'\x00', b'\x01', b'\x00', b'\x01',
                    b'\x00', b'\x01', b'\x00', b'\x01', b'\x00']
    UINT8_FIELD = list(range(0, 20, 2))

    BLOB_NAME = os.path.join(getApiDir(os.path.dirname(__file__)),
                             "packed_auto_array_struct_with_extern.blob")
コード例 #3
0
ファイル: UnionWithArrayTest.py プロジェクト: ndsev/zserio
class UnionWithArrayTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "union_types.zs").union_with_array

    def testArray8(self):
        testUnion = self.api.TestUnion()
        testUnion.array8 = [self.api.Data8(), self.api.Data8(), self.api.Data8(), self.api.Data8()]
        self.assertEqual(4, len(testUnion.array8))

    def testArray16(self):
        testUnion = self.api.TestUnion(array16_=[1, 2, 3, 4])
        self.assertEqual(4, len(testUnion.array16))

    def testWriteReadFileArray8(self):
        testUnion = self.api.TestUnion(array8_=[
            self.api.Data8(-1), self.api.Data8(-2), self.api.Data8(-3), self.api.Data8(-4)
        ])
        filename = self.BLOB_NAME_BASE + "array8.blob"
        zserio.serialize_to_file(testUnion, filename)

        readTestUnion = zserio.deserialize_from_file(self.api.TestUnion, filename)
        self.assertEqual(testUnion, readTestUnion)

    def testWriteReadFileArray16(self):
        testUnion = self.api.TestUnion(array16_=[-10, -20, -30, -40, -50])
        filename = self.BLOB_NAME_BASE + "array16.blob"
        zserio.serialize_to_file(testUnion, filename)

        readTestUnion = zserio.deserialize_from_file(self.api.TestUnion, filename)
        self.assertEqual(testUnion, readTestUnion)

    BLOB_NAME_BASE = os.path.join(getApiDir(os.path.dirname(__file__)), "union_with_array_")
コード例 #4
0
class BitFieldUInt64LengthTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "builtin_types.zs").bitfield_uint64_length

    def testBitSizeOf(self):
        container = self.api.Container()
        bitFieldLength = 33
        container.length = bitFieldLength
        container.unsigned_bit_field = zserio.limits.UINT32_MAX + 1
        container.signed_bit_field = zserio.limits.INT32_MAX + 1

        expectedBitSizeOfContainer = 64 + 33 + 33
        self.assertEqual(expectedBitSizeOfContainer, container.bitsizeof())

    def testReadWrite(self):
        container = self.api.Container()
        bitFieldLength = 33
        container.length = bitFieldLength
        container.unsigned_bit_field = zserio.limits.UINT32_MAX + 1
        container.signed_bit_field = zserio.limits.INT32_MAX + 1

        zserio.serialize_to_file(container, self.BLOB_NAME)

        readContainer = zserio.deserialize_from_file(self.api.Container, self.BLOB_NAME)
        self.assertEqual(container, readContainer)

    BLOB_NAME = os.path.join(getApiDir(os.path.dirname(__file__)), "bit_field_uint64_length.blob")
コード例 #5
0
 def setUpClass(cls):
     cls.api = getZserioApi(
         __file__,
         "sql_without_rowid_tables.zs").rowid_and_without_rowid_tables
     cls._fileName = os.path.join(
         getApiDir(os.path.dirname(__file__)),
         "rowid_and_without_rowid_tables_test.sqlite")
コード例 #6
0
 def setUpClass(cls):
     cls.api = getZserioApi(__file__,
                            "allow_implicit_arrays.zs",
                            extraArgs=["-allowImplicitArrays"
                                       ]).table_with_implicit_array
     cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "table_with_implicit_array_test.sqlite")
コード例 #7
0
ファイル: tests.py プロジェクト: Klebert-Engineering/zserio-1
def _runPylintOnAllSources(args, testDirs):
    print("\nRunning pylint on python tests")

    if not "PYLINT_ENABLED" in os.environ or os.environ["PYLINT_ENABLED"] != '1':
        print("Pylint is disabled.\n")
        return 0

    from testutils import getApiDir, getTestSuiteName

    pylintOptions = ["--persistent=n", "--score=n"]
    if args.pylint_rcfile:
        pylintOptions.append("--rcfile=%s" % (args.pylint_rcfile))

    testDisableOption = ("missing-docstring, invalid-name, duplicate-code, too-many-public-methods, "
                         "too-few-public-methods, c-extension-no-member")
    genDisableOption = ("missing-docstring, invalid-name, no-self-use, duplicate-code, line-too-long, "
                        "singleton-comparison, too-many-instance-attributes, too-many-arguments, "
                        "too-many-public-methods, too-few-public-methods, too-many-locals, too-many-branches, "
                        "too-many-statements, unneeded-not, superfluous-parens, len-as-condition, "
                        "import-self, misplaced-comparison-constant, invalid-unary-operand-type, "
                        "c-extension-no-member")
    genPylintOptions = list(pylintOptions)
    genPylintOptions.append("--ignore=api.py")
    apiDisableOption = ("missing-docstring, unused-import, line-too-long")
    apiPylintOptions = list(pylintOptions)
    apiPylintOptions.append("--ignore-patterns=^.*\\.py(?<!^api\\.py)$")

    for testDir in testDirs:
        testSources = [os.path.join(testDir, child) for child in os.listdir(testDir) if child.endswith(".py")]

        apiDir = getApiDir(testDir)
        if os.path.isdir(apiDir):
            apiSources = [os.path.join(apiDir, child) for child in os.listdir(apiDir)
                          if child.endswith(".py") or os.path.isdir(os.path.join(apiDir, child))]

            testSuiteName = getTestSuiteName(testDir)
            print(testSuiteName)

            print("    test files...")
            pylintResult = _runPylint(testSources, pylintOptions, testDisableOption)
            if pylintResult != 0:
                return pylintResult

            sys.path.append(apiDir)

            print("    generated files...") # except api.py files
            pylintResult = _runPylint(apiSources, genPylintOptions, genDisableOption)
            if pylintResult != 0:
                return pylintResult

            print("    generated api.py files...")
            pylintResult = _runPylint(apiSources, apiPylintOptions, apiDisableOption)
            if pylintResult != 0:
                return pylintResult

            sys.path.remove(apiDir)

    print("Pylint done.\n")

    return 0
コード例 #8
0
class PackedAutoArrayStructWithUnpackedFieldTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(
            __file__,
            "array_types.zs").packed_auto_array_struct_with_unpacked_field

    def testBitSizeOf(self):
        packedAutoArray = self._createPackedAutoArray()
        self.assertEqual(self.PACKED_AUTO_ARRAY_BIT_SIZE,
                         packedAutoArray.bitsizeof())

    def testInitializeOffsets(self):
        packedAutoArray = self._createPackedAutoArray()
        bitPosition = 2
        expectedEndBitPosition = bitPosition + self.PACKED_AUTO_ARRAY_BIT_SIZE
        self.assertEqual(expectedEndBitPosition,
                         packedAutoArray.initialize_offsets(bitPosition))

    def testWriteReadFile(self):
        packedAutoArray = self._createPackedAutoArray()
        zserio.serialize_to_file(packedAutoArray, self.BLOB_NAME)

        readPackedAutoArray = zserio.deserialize_from_file(
            self.api.PackedAutoArray, self.BLOB_NAME)
        self.assertEqual(packedAutoArray, readPackedAutoArray)

    def _createPackedAutoArray(self):
        return self.api.PackedAutoArray([
            self.api.TestStructure(uint8, unpacked)
            for uint8, unpacked in zip(self.UINT8_FIELD, self.UNPACKED_FIELD)
        ])

    UINT8_FIELD = list(range(0, 20, 2))
    UNPACKED_FIELD = [5000000, 0, 1, 0, 1, 0, 1, 0, 1, 0]

    UINT8_MAX_BIT_NUMBER = 2
    PACKED_AUTO_ARRAY_BIT_SIZE = (
        8 +  # auto array size: varsize
        1 +  # uint8Field packing descriptor: isPacked (true)
        6 +  # uint8Field is packed: maxBitNumber
        1 +  # unpackedField packing descriptor: isPacked (false)
        8 +  # uint8Field[0]
        32 +  # unpackedField[0] (4 bytes for the first value)
        9 * (UINT8_MAX_BIT_NUMBER + 1) +  # deltas for uint8Field values
        9 * 8  # unpackedField varuint values (1 byte)
    )

    BLOB_NAME = os.path.join(
        getApiDir(os.path.dirname(__file__)),
        "packed_auto_array_struct_with_unpacked_field.blob")
コード例 #9
0
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "explicit_parameters.zs")
        cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                     "explicit_same_as_field_test.sqlite")

        test_api = cls.api.explicit_same_as_field

        class SameAsFieldTableParameterProvider(
                test_api.SameAsFieldTable.IParameterProvider):
            @staticmethod
            def getCount(_row):
                return SAME_AS_FIELD_TABLE_COUNT_EXPLICIT

        cls.SameAsFieldTableParameterProvider = SameAsFieldTableParameterProvider
コード例 #10
0
ファイル: tests.py プロジェクト: ndsev/zserio
def _runMypyOnAllSources(args, testDirs, runtimePath, testutilsPath):
    print("\nRunning mypy on python tests")

    if not "MYPY_ENABLED" in os.environ or os.environ["MYPY_ENABLED"] != '1':
        print("Mypy is disabled.\n")
        return 0

    from testutils import TEST_ARGS, getApiDir, getTestSuiteName
    from mypy import api

    os.environ["MYPYPATH"] = runtimePath + os.pathsep + testutilsPath

    mypyCacheDir = os.path.join(TEST_ARGS["build_dir"], ".mypy_cache")
    mypyArgs = []
    mypyArgs.append(f"--cache-dir={mypyCacheDir}")
    if args.mypy_config_file:
        mypyArgs.append(f"--config-file={args.mypy_config_file}")
    mypyArgs.append("--no-strict-optional"
                    )  # Item "None" of "Optional[Blob]" has no attribute "..."

    for testDir in testDirs:
        apiDir = getApiDir(testDir)
        testSuiteName = getTestSuiteName(testDir)
        print(testSuiteName + " ... ", end='', flush=True)

        mypyArgsForTest = list(mypyArgs)
        _loadMypyExtraArgsFile(testDir, mypyArgsForTest)
        if os.path.exists(apiDir):
            mypyArgsForTest.append(apiDir)
        mypyArgsForTest.append(testDir)

        mypyResult = api.run(mypyArgsForTest)

        if mypyResult[2] != 0:
            print("FAILED!")
            if mypyResult[0]:
                print("Type checking report:")
                print(mypyResult[0])
            if mypyResult[1]:
                print("Error report:")
                print(mypyResult[1])

            return mypyResult[2]

        else:
            print(mypyResult[0], end='')

    print("Mypy done.\n")

    return 0
コード例 #11
0
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "explicit_parameters.zs")
        cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)), "explicit_bitmask_param_test.sqlite")

        test_api = cls.api.explicit_bitmask_param
        class BitmaskParamTableParameterProvider(test_api.BitmaskParamTable.IParameterProvider):
            @staticmethod
            def count1(_row):
                return test_api.TestBitmask.Values.TEN

            @staticmethod
            def count2(_row):
                return test_api.TestBitmask.Values.ELEVEN

        cls.BitmaskParamTableParameterProvider = BitmaskParamTableParameterProvider
コード例 #12
0
ファイル: ChoiceWithArrayTest.py プロジェクト: ndsev/zserio
class ChoiceWithArrayTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "choice_types.zs").choice_with_array

    def testArray8(self):
        testChoice = self.api.TestChoice(8)
        testChoice.array8 = [
            self.api.Data8(),
            self.api.Data8(),
            self.api.Data8(),
            self.api.Data8()
        ]
        self.assertEqual(4, len(testChoice.array8))

    def testArray16(self):
        testChoice = self.api.TestChoice(16)
        testChoice.array16 = [1, 2, 3, 4]
        self.assertEqual(4, len(testChoice.array16))

    def testWriteReadFileArray8(self):
        testChoice = self.api.TestChoice(8)
        testChoice.array8 = [
            self.api.Data8(1),
            self.api.Data8(2),
            self.api.Data8(3),
            self.api.Data8(4)
        ]
        filename = self.BLOB_NAME_BASE + "array8.blob"
        zserio.serialize_to_file(testChoice, filename)

        readTestChoice = zserio.deserialize_from_file(self.api.TestChoice,
                                                      filename, 8)
        self.assertEqual(testChoice, readTestChoice)

    def testWriteReadFileArray16(self):
        testChoice = self.api.TestChoice(16)
        testChoice.array16 = [10, 20, 30, 40, 50]
        filename = self.BLOB_NAME_BASE + "array16.blob"
        zserio.serialize_to_file(testChoice, filename)

        readTestChoice = zserio.deserialize_from_file(self.api.TestChoice,
                                                      filename, 16)
        self.assertEqual(testChoice, readTestChoice)

    BLOB_NAME_BASE = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "choice_with_array_")
コード例 #13
0
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "explicit_parameters.zs")
        cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)), "explicit_blob_param_test.sqlite")

        test_api = cls.api.explicit_blob_param
        class BlobParamTableParameterProvider(test_api.BlobParamTable.IParameterProvider):
            def __init__(self):
                self.header = test_api.Header.fromFields(BLOB_PARAM_TABLE_HEADER_COUNT)
                self.blob = test_api.Header.fromFields(BLOB_PARAM_TABLE_BLOB_COUNT)

            def getHeader(self, _row):
                return self.header

            def getBlob(self, _row):
                return self.blob

        cls.BlobParamTableParameterProvider = BlobParamTableParameterProvider
コード例 #14
0
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "explicit_parameters.zs")
        cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                     "explicit_enum_param_test.sqlite")

        test_api = cls.api.explicit_enum_param

        class EnumParamTableParameterProvider(
                test_api.EnumParamTable.IParameterProvider):
            @staticmethod
            def getCount1(_row):
                return test_api.TestEnum.TEN

            @staticmethod
            def getCount2(_row):
                return test_api.TestEnum.ELEVEN

        cls.EnumParamTableParameterProvider = EnumParamTableParameterProvider
コード例 #15
0
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "explicit_parameters.zs")
        cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                     "explicit_simple_param_test.sqlite")

        test_api = cls.api.explicit_simple_param

        class SimpleParamTableParameterProvider(
                test_api.SimpleParamTable.IParameterProvider):
            @staticmethod
            def count1(_row):
                return SIMPLE_PARAM_TABLE_COUNT1

            @staticmethod
            def count2(_row):
                return SIMPLE_PARAM_TABLE_COUNT2

        cls.SimpleParamTableParameterProvider = SimpleParamTableParameterProvider
コード例 #16
0
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "explicit_parameters.zs")
        cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                     "multiple_with_same_name_test.sqlite")

        test_api = cls.api.multiple_with_same_name

        class MultipleWithSameNameTableParameterProvider(
                test_api.MultipleWithSameNameTable.IParameterProvider):
            def __init__(self):
                self._param1 = PARAM1
                self._param2 = PARAM2

            def param1(self, _row):
                return self._param1

            def param2(self, _row):
                return self._param2

        cls.MultipleWithSameNameTableParameterProvider = MultipleWithSameNameTableParameterProvider
コード例 #17
0
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "explicit_parameters.zs")
        cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                     "multiple_explicit_params_test.sqlite")

        test_api = cls.api.multiple_explicit_params

        class MultipleParamsTableParameterProvider(
                test_api.MultipleParamsTable.IParameterProvider):
            @staticmethod
            def getCount(_row):
                return MULTIPLE_PARAMS_TABLE_COUNT

            @staticmethod
            def getCount1(_row):
                return MULTIPLE_PARAMS_TABLE_COUNT1

            @staticmethod
            def getCount2(_row):
                return MULTIPLE_PARAMS_TABLE_COUNT2

        cls.MultipleParamsTableParameterProvider = MultipleParamsTableParameterProvider
コード例 #18
0
class GrandChildParamTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(__file__,
                               "parameterized_types.zs").grand_child_param

    def testWrite(self):
        grandChildParam = self._createGrandChildParam()
        writer = zserio.BitStreamWriter()
        grandChildParam.write(writer)
        reader = zserio.BitStreamReader(writer.byte_array, writer.bitposition)
        self._checkGrandChildParamInStream(reader, grandChildParam)

        reader.bitposition = 0
        readGrandChildParam = self.api.GrandChildParam.from_reader(reader)
        self.assertEqual(grandChildParam, readGrandChildParam)

    def testWriteFile(self):
        grandChildParam = self._createGrandChildParam()
        zserio.serialize_to_file(grandChildParam, self.BLOB_NAME)

        readGrandChildParam = zserio.deserialize_from_file(
            self.api.GrandChildParam, self.BLOB_NAME)
        self.assertEqual(grandChildParam, readGrandChildParam)

    def _createItemChoiceHolder(self):
        item = self.api.Item(self.ITEM_CHOICE_HOLDER_HAS_ITEM, self.ITEM_PARAM,
                             self.ITEM_EXTRA_PARAM)
        itemChoice = self.api.ItemChoice(self.ITEM_CHOICE_HOLDER_HAS_ITEM)
        itemChoice.item = item

        return self.api.ItemChoiceHolder(itemChoice.has_item, itemChoice)

    def _createGrandChildParam(self):
        itemChoiceHolder = self._createItemChoiceHolder()
        itemChoiceHolderArray = [self._createItemChoiceHolder()]
        dummyArray = [0]

        return self.api.GrandChildParam(itemChoiceHolder,
                                        itemChoiceHolderArray, dummyArray)

    def _checkItemChoiceHolderInStream(self, reader, itemChoiceHolder):
        self.assertEqual(itemChoiceHolder.has_item, reader.read_bool())

        item = itemChoiceHolder.item_choice.item
        self.assertEqual(item.param, reader.read_bits(16))
        self.assertEqual(item.extra_param, reader.read_bits(32))

    def _checkGrandChildParamInStream(self, reader, grandChildParam):
        itemChoiceHolder = grandChildParam.item_choice_holder
        self._checkItemChoiceHolderInStream(reader, itemChoiceHolder)

        itemChoiceHolderArray = grandChildParam.item_choice_holder_array
        self.assertEqual(len(itemChoiceHolderArray), reader.read_varsize())
        self._checkItemChoiceHolderInStream(reader, itemChoiceHolderArray[0])

        isDummyArrayUsed = grandChildParam.is_dummy_array_used()
        self.assertEqual(isDummyArrayUsed, reader.read_bool())
        if isDummyArrayUsed:
            dummyArray = grandChildParam.dummy_array
            self.assertEqual(len(dummyArray), reader.read_varsize())
            self.assertEqual(dummyArray[0], reader.read_bits(32))

    BLOB_NAME = os.path.join(getApiDir(os.path.dirname(__file__)),
                             "grand_child_param.blob")

    ITEM_CHOICE_HOLDER_HAS_ITEM = True
    ITEM_PARAM = 0xAABB
    ITEM_EXTRA_PARAM = 0x11223344
コード例 #19
0
 def setUpClass(cls):
     cls.api = getZserioApi(__file__, "sql_tables.zs")
     cls._fileName = os.path.join(
         getApiDir(os.path.dirname(__file__)),
         "dynamic_bit_field_enum_field_table_test.sqlite")
コード例 #20
0
 def setUpClass(cls):
     cls.api = getZserioApi(__file__,
                            "sql_virtual_columns.zs").hidden_virtual_columns
     cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "hidden_virtual_columns_test.sqlite")
コード例 #21
0
 def setUpClass(cls):
     cls.api = getZserioApi(__file__, "sql_tables.zs")
     cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "subtyped_bool_field_table_test.sqlite")
コード例 #22
0
class VariableArrayStructCastInt8Test(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(
            __file__, "array_types.zs").variable_array_struct_cast_int8

    def testBitSizeOf(self):
        numElements = 33
        compoundArray = [
            self.api.TestStructure(i, "Name" + str(i))
            for i in range(numElements)
        ]
        variableArray = self.api.VariableArray(numElements, compoundArray)
        bitPosition = 2
        numOneNumberIndexes = 10
        expectedBitSize = (1 + numElements * (4 + 7) - numOneNumberIndexes) * 8
        self.assertEqual(expectedBitSize, variableArray.bitsizeof(bitPosition))

    def testInitializeOffsets(self):
        numElements = 33
        compoundArray = [
            self.api.TestStructure(i, "Name" + str(i))
            for i in range(numElements)
        ]
        variableArray = self.api.VariableArray(numElements, compoundArray)
        bitPosition = 2
        numOneNumberIndexes = 10
        expectedEndBitPosition = bitPosition + (1 + numElements * (4 + 7) -
                                                numOneNumberIndexes) * 8
        self.assertEqual(expectedEndBitPosition,
                         variableArray.initialize_offsets(bitPosition))

    def testRead(self):
        numElements = 59
        writer = zserio.BitStreamWriter()
        VariableArrayStructCastInt8Test._writeVariableArrayToStream(
            writer, numElements)
        reader = zserio.BitStreamReader(writer.byte_array, writer.bitposition)
        variableArray = self.api.VariableArray.from_reader(reader)

        self.assertEqual(numElements, variableArray.num_elements)
        compoundArray = variableArray.compound_array
        self.assertEqual(numElements, len(compoundArray))
        for i in range(numElements):
            testStructure = compoundArray[i]
            self.assertEqual(i, testStructure.id)
            self.assertTrue(testStructure.name == "Name" + str(i))

    def testWriteRead(self):
        numElements = 33
        compoundArray = [
            self.api.TestStructure(i, "Name" + str(i))
            for i in range(numElements)
        ]
        variableArray = self.api.VariableArray(numElements, compoundArray)
        bitBuffer = zserio.serialize(variableArray)

        self.assertEqual(variableArray.bitsizeof(), bitBuffer.bitsize)
        self.assertEqual(variableArray.initialize_offsets(0),
                         bitBuffer.bitsize)

        readVariableArray = zserio.deserialize(self.api.VariableArray,
                                               bitBuffer)
        self.assertEqual(numElements, readVariableArray.num_elements)
        readCompoundArray = readVariableArray.compound_array
        self.assertEqual(numElements, len(readCompoundArray))
        for i in range(numElements):
            readTestStructure = readCompoundArray[i]
            self.assertEqual(i, readTestStructure.id)
            self.assertTrue(readTestStructure.name == "Name" + str(i))

    def testWriteReadFile(self):
        numElements = 33
        compoundArray = [
            self.api.TestStructure(i, "Name" + str(i))
            for i in range(numElements)
        ]
        variableArray = self.api.VariableArray(numElements, compoundArray)
        zserio.serialize_to_file(variableArray, self.BLOB_NAME)

        readVariableArray = zserio.deserialize_from_file(
            self.api.VariableArray, self.BLOB_NAME)
        self.assertEqual(numElements, readVariableArray.num_elements)
        readCompoundArray = readVariableArray.compound_array
        self.assertEqual(numElements, len(readCompoundArray))
        for i in range(numElements):
            readTestStructure = readCompoundArray[i]
            self.assertEqual(i, readTestStructure.id)
            self.assertTrue(readTestStructure.name == "Name" + str(i))

    def testWriteWrongArray(self):
        numElements = 33
        compoundArray = [
            self.api.TestStructure(i, "Name" + str(i))
            for i in range(numElements)
        ]
        variableArray = self.api.VariableArray(numElements + 1, compoundArray)
        writer = zserio.BitStreamWriter()
        with self.assertRaises(zserio.PythonRuntimeException):
            variableArray.write(writer)

    @staticmethod
    def _writeVariableArrayToStream(writer, numElements):
        writer.write_bits(numElements, 8)
        for i in range(numElements):
            writer.write_bits(i, 32)
            writer.write_string("Name" + str(i))

    BLOB_NAME = os.path.join(getApiDir(os.path.dirname(__file__)),
                             "variable_array_struct_cast_int8.blob")
コード例 #23
0
class PackedArrayElementParamTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(
            __file__, "parameterized_types.zs").packed_array_element_param

    def testBitSizeOfLength1(self):
        self._checkBitSizeOf(self.NUM_BLOCKS1)

    def testBitSizeOfLength2(self):
        self._checkBitSizeOf(self.NUM_BLOCKS2)

    def testBitSizeOfLength3(self):
        self._checkBitSizeOf(self.NUM_BLOCKS3)

    def testWriteReadLength1(self):
        self._checkWriteRead(self.NUM_BLOCKS1)

    def testWriteReadLength2(self):
        self._checkWriteRead(self.NUM_BLOCKS2)

    def testWriteReadLength3(self):
        self._checkWriteRead(self.NUM_BLOCKS3)

    def testWriteReadFileLength1(self):
        self._checkWriteReadFile(self.NUM_BLOCKS1)

    def testWriteReadFileLength2(self):
        self._checkWriteReadFile(self.NUM_BLOCKS2)

    def testWriteReadFileLength3(self):
        self._checkWriteReadFile(self.NUM_BLOCKS3)

    def _checkBitSizeOf(self, numBlocks):
        database = self._createDatabase(numBlocks)
        unpackedBitsizeOf = PackedArrayElementParamTest._calcUnpackedDatabaseBitSize(
            numBlocks)
        packedBitsizeOf = database.bitsizeof()
        minCompressionRatio = 0.12
        self.assertTrue(
            unpackedBitsizeOf * minCompressionRatio > packedBitsizeOf,
            "Unpacked array has " + str(unpackedBitsizeOf) +
            " bits, packed array has " + str(packedBitsizeOf) + " bits, " +
            "compression ratio is " +
            str(packedBitsizeOf / unpackedBitsizeOf * 100) + "%!")

    def _checkWriteRead(self, numBlocks):
        database = self._createDatabase(numBlocks)
        writer = zserio.BitStreamWriter()
        database.write(writer)
        self.assertEqual(database.bitsizeof(), writer.bitposition)
        self.assertEqual(database.initialize_offsets(0), writer.bitposition)

        reader = zserio.BitStreamReader(writer.byte_array, writer.bitposition)
        readDatabase = self.api.Database.from_reader(reader)
        self.assertEqual(database, readDatabase)

    def _checkWriteReadFile(self, numBlocks):
        database = self._createDatabase(numBlocks)
        filename = self.BLOB_NAME_BASE + str(numBlocks) + ".blob"
        zserio.serialize_to_file(database, filename)

        readDatabase = zserio.deserialize_from_file(self.api.Database,
                                                    filename)
        self.assertEqual(database, readDatabase)

    def _createDatabase(self, numBlocks):
        blockHeaderList = []
        blockList = []
        for i in range(numBlocks):
            numItems = i + 1
            blockHeader = self.api.BlockHeader(numItems, 0)
            blockHeaderList.append(blockHeader)
            itemList = []
            for j in range(numItems):
                itemList.append(j * 2)

            blockList.append(self.api.Block(blockHeader, numItems, itemList))

        return self.api.Database(numBlocks, blockHeaderList, blockList)

    @staticmethod
    def _calcUnpackedDatabaseBitSize(numBlocks):
        bitSize = 16  # numBlocks
        bitSize += numBlocks * (16 + 32)  # headers
        for i in range(numBlocks):
            numItems = i + 1
            bitSize += 64 + numItems * 64  # blocks[i]

        return bitSize

    BLOB_NAME_BASE = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "packed_array_element_param_")
    NUM_BLOCKS1 = 50
    NUM_BLOCKS2 = 100
    NUM_BLOCKS3 = 1000
コード例 #24
0
 def setUpClass(cls):
     cls.api = getZserioApi(__file__, "sql_tables.zs")
     cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "blob_param_table_test.sqlite")
コード例 #25
0
 def setUpClass(cls):
     cls.api = getZserioApi(__file__,
                            "sql_virtual_tables.zs").fts5_virtual_table
     cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "fts5_virtual_table_test.sqlite")
コード例 #26
0
class AutoArrayStructRecursionTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(__file__,
                               "array_types.zs").auto_array_struct_recursion

    def testBitSizeOfLength1(self):
        self._checkBitSizeOf(self.AUTO_ARRAY_LENGTH1)

    def testBitSizeOfLength2(self):
        self._checkBitSizeOf(self.AUTO_ARRAY_LENGTH2)

    def testInitializeOffsetsLength1(self):
        self._checkInitializeOffsets(self.AUTO_ARRAY_LENGTH1)

    def testInitializeOffsetsLength2(self):
        self._checkInitializeOffsets(self.AUTO_ARRAY_LENGTH2)

    def testReadLength1(self):
        self._checkRead(self.AUTO_ARRAY_LENGTH1)

    def testReadLength2(self):
        self._checkRead(self.AUTO_ARRAY_LENGTH2)

    def testWriteReadLength1(self):
        self._checkWriteRead(self.AUTO_ARRAY_LENGTH1)

    def testWriteReadLength2(self):
        self._checkWriteRead(self.AUTO_ARRAY_LENGTH2)

    def testWriteReadFileLength1(self):
        self._checkWriteReadFile(self.AUTO_ARRAY_LENGTH1)

    def testWriteReadFileLength2(self):
        self._checkWriteReadFile(self.AUTO_ARRAY_LENGTH2)

    def _checkBitSizeOf(self, numElements):
        autoArrayRecursion = self._createAutoArrayRecursion(numElements)
        bitPosition = 2
        autoArrayRecursionBitSize = 8 + 8 + numElements * (8 + 8)
        self.assertEqual(autoArrayRecursionBitSize,
                         autoArrayRecursion.bitsizeof(bitPosition))

    def _checkInitializeOffsets(self, numElements):
        autoArrayRecursion = self._createAutoArrayRecursion(numElements)
        bitPosition = 2
        expectedEndBitPosition = bitPosition + 8 + 8 + numElements * (8 + 8)
        self.assertEqual(expectedEndBitPosition,
                         autoArrayRecursion.initialize_offsets(bitPosition))

    def _checkRead(self, numElements):
        writer = zserio.BitStreamWriter()
        AutoArrayStructRecursionTest._writeAutoArrayRecursionToStream(
            writer, numElements)

        reader = zserio.BitStreamReader(writer.byte_array, writer.bitposition)
        autoArrayRecursion = self.api.AutoArrayRecursion.from_reader(reader)
        self._checkAutoArrayRecursion(autoArrayRecursion, numElements)

    def _checkWriteRead(self, numElements):
        autoArrayRecursion = self._createAutoArrayRecursion(numElements)
        bitBuffer = zserio.serialize(autoArrayRecursion)

        self.assertEqual(autoArrayRecursion.bitsizeof(), bitBuffer.bitsize)
        self.assertEqual(autoArrayRecursion.initialize_offsets(0),
                         bitBuffer.bitsize)

        readAutoArrayRecursion = zserio.deserialize(
            self.api.AutoArrayRecursion, bitBuffer)
        self._checkAutoArrayRecursion(readAutoArrayRecursion, numElements)

    def _checkWriteReadFile(self, numElements):
        autoArrayRecursion = self._createAutoArrayRecursion(numElements)

        filename = self.BLOB_NAME_BASE + str(numElements) + ".blob"
        zserio.serialize_to_file(autoArrayRecursion, filename)

        readAutoArrayRecursion = zserio.deserialize_from_file(
            self.api.AutoArrayRecursion, filename)
        self._checkAutoArrayRecursion(readAutoArrayRecursion, numElements)

    def _createAutoArrayRecursion(self, numElements):
        autoArray = []
        for i in range(1, numElements + 1):
            element = self.api.AutoArrayRecursion(i, [])
            autoArray.append(element)

        return self.api.AutoArrayRecursion(0, autoArray)

    def _checkAutoArrayRecursion(self, autoArrayRecursion, numElements):
        self.assertEqual(0, autoArrayRecursion.id)
        autoArray = autoArrayRecursion.auto_array_recursion
        self.assertEqual(numElements, len(autoArray))
        for i in range(1, numElements + 1):
            element = autoArray[i - 1]
            self.assertEqual(i, element.id)
            self.assertEqual(0, len(element.auto_array_recursion))

    @staticmethod
    def _writeAutoArrayRecursionToStream(writer, numElements):
        writer.write_bits(0, 8)
        writer.write_varsize(numElements)
        for i in range(1, numElements + 1):
            writer.write_bits(i, 8)
            writer.write_varsize(0)

    BLOB_NAME_BASE = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "auto_array_struct_recursion_")
    AUTO_ARRAY_LENGTH1 = 5
    AUTO_ARRAY_LENGTH2 = 10
コード例 #27
0
class FixedArrayUInt8Test(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "array_types.zs").fixed_array_uint8

    def testBitSizeOf(self):
        uint8Array = list(range(self.FIXED_ARRAY_LENGTH))
        fixedArray = self.api.FixedArray(uint8Array)
        bitPosition = 2
        fixedArrayBitSize = self.FIXED_ARRAY_LENGTH * 8
        self.assertEqual(fixedArrayBitSize, fixedArray.bitsizeof(bitPosition))

    def testInitializeOffsets(self):
        uint8Array = list(range(self.FIXED_ARRAY_LENGTH))
        fixedArray = self.api.FixedArray(uint8Array)
        bitPosition = 2
        expectedEndBitPosition = bitPosition + self.FIXED_ARRAY_LENGTH * 8
        self.assertEqual(expectedEndBitPosition,
                         fixedArray.initialize_offsets(bitPosition))

    def testRead(self):
        writer = zserio.BitStreamWriter()
        self._writeFixedArrayToStream(writer)
        reader = zserio.BitStreamReader(writer.byte_array, writer.bitposition)
        fixedArray = self.api.FixedArray.from_reader(reader)

        uint8Array = fixedArray.uint8_array
        self.assertEqual(self.FIXED_ARRAY_LENGTH, len(uint8Array))
        for i in range(self.FIXED_ARRAY_LENGTH):
            self.assertEqual(i, uint8Array[i])

    def testWrite(self):
        uint8Array = list(range(self.FIXED_ARRAY_LENGTH))
        fixedArray = self.api.FixedArray(uint8Array)
        bitBuffer = zserio.serialize(fixedArray)

        self.assertEqual(fixedArray.bitsizeof(), bitBuffer.bitsize)
        self.assertEqual(fixedArray.initialize_offsets(0), bitBuffer.bitsize)

        readFixedArray = zserio.deserialize(self.api.FixedArray, bitBuffer)
        readUint8Array = readFixedArray.uint8_array
        self.assertEqual(self.FIXED_ARRAY_LENGTH, len(readUint8Array))
        for i in range(self.FIXED_ARRAY_LENGTH):
            self.assertEqual(i, readUint8Array[i])

    def testWriteReadFile(self):
        uint8Array = list(range(self.FIXED_ARRAY_LENGTH))
        fixedArray = self.api.FixedArray(uint8Array)
        zserio.serialize_to_file(fixedArray, self.BLOB_NAME)

        readFixedArray = zserio.deserialize_from_file(self.api.FixedArray,
                                                      self.BLOB_NAME)
        readUint8Array = readFixedArray.uint8_array
        self.assertEqual(self.FIXED_ARRAY_LENGTH, len(readUint8Array))
        for i in range(self.FIXED_ARRAY_LENGTH):
            self.assertEqual(i, readUint8Array[i])

    def testWriteWrongArray(self):
        uint8Array = list(range(self.FIXED_ARRAY_LENGTH + 1))
        fixedArray = self.api.FixedArray(uint8_array_=uint8Array)
        writer = zserio.BitStreamWriter()
        with self.assertRaises(zserio.PythonRuntimeException):
            fixedArray.write(writer)

    def _writeFixedArrayToStream(self, writer):
        for i in range(self.FIXED_ARRAY_LENGTH):
            writer.write_bits(i, 8)

    BLOB_NAME = os.path.join(getApiDir(os.path.dirname(__file__)),
                             "fixed_array_uint8.blob")
    FIXED_ARRAY_LENGTH = 5
コード例 #28
0
class PackedAutoArrayStructRecursionTest(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(
            __file__, "array_types.zs").packed_auto_array_struct_recursion

    def testBitSizeOfLength1(self):
        self._checkBitSizeOf(self.AUTO_ARRAY_LENGTH1)

    def testBitSizeOfLength2(self):
        self._checkBitSizeOf(self.AUTO_ARRAY_LENGTH2)

    def testBitSizeOfLength3(self):
        self._checkBitSizeOf(self.AUTO_ARRAY_LENGTH3)

    def testInitializeOffsetsLength1(self):
        self._checkInitializeOffsets(self.AUTO_ARRAY_LENGTH1)

    def testInitializeOffsetsLength2(self):
        self._checkInitializeOffsets(self.AUTO_ARRAY_LENGTH2)

    def testInitializeOffsetsLength3(self):
        self._checkInitializeOffsets(self.AUTO_ARRAY_LENGTH3)

    def testReadLength1(self):
        self._checkRead(self.AUTO_ARRAY_LENGTH1)

    def testReadLength2(self):
        self._checkRead(self.AUTO_ARRAY_LENGTH2)

    def testReadLength3(self):
        self._checkRead(self.AUTO_ARRAY_LENGTH3)

    def testWriteReadLength1(self):
        self._checkWriteRead(self.AUTO_ARRAY_LENGTH1)

    def testWriteReadLength2(self):
        self._checkWriteRead(self.AUTO_ARRAY_LENGTH2)

    def testWriteReadLength3(self):
        self._checkWriteRead(self.AUTO_ARRAY_LENGTH3)

    def testWriteReadFileLength1(self):
        self._checkWriteReadFile(self.AUTO_ARRAY_LENGTH1)

    def testWriteReadFileLength2(self):
        self._checkWriteReadFile(self.AUTO_ARRAY_LENGTH2)

    def testWriteReadFileLength3(self):
        self._checkWriteReadFile(self.AUTO_ARRAY_LENGTH3)

    def _checkBitSizeOf(self, numElements):
        packedAutoArrayRecursion = self._createPackedAutoArrayRecursion(
            numElements)
        bitPosition = 2
        autoArrayRecursionBitSize = (
            PackedAutoArrayStructRecursionTest.
            _calcPackedAutoArrayRecursionBitSize(numElements))
        self.assertEqual(autoArrayRecursionBitSize,
                         packedAutoArrayRecursion.bitsizeof(bitPosition))

    def _checkInitializeOffsets(self, numElements):
        packedAutoArrayRecursion = self._createPackedAutoArrayRecursion(
            numElements)
        bitPosition = 2
        expectedEndBitPosition = bitPosition + (
            PackedAutoArrayStructRecursionTest.
            _calcPackedAutoArrayRecursionBitSize(numElements))
        self.assertEqual(
            expectedEndBitPosition,
            packedAutoArrayRecursion.initialize_offsets(bitPosition))

    def _checkRead(self, numElements):
        writer = zserio.BitStreamWriter()
        self._writePackedAutoArrayRecursionToStream(writer, numElements)

        reader = zserio.BitStreamReader(writer.byte_array, writer.bitposition)
        packedAutoArrayRecursion = self.api.PackedAutoArrayRecursion.from_reader(
            reader)
        self._checkPackedAutoArrayRecursion(packedAutoArrayRecursion,
                                            numElements)

    def _checkWriteRead(self, numElements):
        packedAutoArrayRecursion = self._createPackedAutoArrayRecursion(
            numElements)
        bitBuffer = zserio.serialize(packedAutoArrayRecursion)

        self.assertEqual(packedAutoArrayRecursion.bitsizeof(),
                         bitBuffer.bitsize)
        self.assertEqual(packedAutoArrayRecursion.initialize_offsets(0),
                         bitBuffer.bitsize)

        readPackedAutoArrayRecursion = zserio.deserialize(
            self.api.PackedAutoArrayRecursion, bitBuffer)
        self._checkPackedAutoArrayRecursion(readPackedAutoArrayRecursion,
                                            numElements)

    def _checkWriteReadFile(self, numElements):
        packedAutoArrayRecursion = self._createPackedAutoArrayRecursion(
            numElements)
        filename = self.BLOB_NAME_BASE + str(numElements) + ".blob"
        zserio.serialize_to_file(packedAutoArrayRecursion, filename)

        readPackedAutoArrayRecursion = zserio.deserialize_from_file(
            self.api.PackedAutoArrayRecursion, filename)
        self._checkPackedAutoArrayRecursion(readPackedAutoArrayRecursion,
                                            numElements)

    def _createPackedAutoArrayRecursion(self, numElements):
        autoArray = []
        for i in range(1, numElements + 1):
            element = self.api.PackedAutoArrayRecursion(i, [])
            autoArray.append(element)

        return self.api.PackedAutoArrayRecursion(0, autoArray)

    def _checkPackedAutoArrayRecursion(self, packedAutoArrayRecursion,
                                       numElements):
        self.assertEqual(0, packedAutoArrayRecursion.id)
        autoArray = packedAutoArrayRecursion.packed_auto_array_recursion
        self.assertEqual(numElements, len(autoArray))
        for i in range(1, numElements + 1):
            element = autoArray[i - 1]
            self.assertEqual(i, element.id)
            self.assertEqual(0, len(element.packed_auto_array_recursion))

    @staticmethod
    def _writePackedAutoArrayRecursionToStream(writer, numElements):
        writer.write_bits(0, 8)
        writer.write_varsize(numElements)
        writer.write_bool(True)
        maxBitNumber = 1
        writer.write_bits(maxBitNumber, 6)
        writer.write_bits(1, 8)
        writer.write_varsize(0)
        for _ in range(numElements - 1):
            writer.write_signed_bits(1, maxBitNumber + 1)
            writer.write_varsize(0)

    @staticmethod
    def _calcPackedAutoArrayRecursionBitSize(numElements):
        bitSize = 8  # id
        bitSize += 8  # varsize (length of auto array)
        bitSize += 1  # packing descriptor: is_packed
        if numElements > 1:
            bitSize += 6  # packing descriptor: max_bit_number
        bitSize += 8 + 8  # first element
        bitSize += (numElements - 1) * (8 + 2)  # all deltas

        return bitSize

    BLOB_NAME_BASE = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "packed_auto_array_struct_recursion_")

    AUTO_ARRAY_LENGTH1 = 1
    AUTO_ARRAY_LENGTH2 = 5
    AUTO_ARRAY_LENGTH3 = 10
コード例 #29
0
ファイル: AutoArrayUInt8Test.py プロジェクト: ndsev/zserio
class AutoArrayUInt8Test(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.api = getZserioApi(__file__, "array_types.zs").auto_array_uint8

    def testBitSizeOfLength1(self):
        self._checkBitSizeOf(self.AUTO_ARRAY_LENGTH1)

    def testBitSizeOfLength2(self):
        self._checkBitSizeOf(self.AUTO_ARRAY_LENGTH2)

    def testInitializeOffsetsLength1(self):
        self._checkInitializeOffsets(self.AUTO_ARRAY_LENGTH1)

    def testInitializeOffsetsLength2(self):
        self._checkInitializeOffsets(self.AUTO_ARRAY_LENGTH2)

    def testReadLength1(self):
        self._checkRead(self.AUTO_ARRAY_LENGTH1)

    def testReadLength2(self):
        self._checkRead(self.AUTO_ARRAY_LENGTH2)

    def testWriteReadLength1(self):
        self._checkWriteRead(self.AUTO_ARRAY_LENGTH1)

    def testWriteReadLength2(self):
        self._checkWriteRead(self.AUTO_ARRAY_LENGTH2)

    def testWriteReadFileLength1(self):
        self._checkWriteReadFile(self.AUTO_ARRAY_LENGTH1)

    def testWriteReadFileLength2(self):
        self._checkWriteReadFile(self.AUTO_ARRAY_LENGTH2)

    def _checkBitSizeOf(self, numElements):
        uint8Array = list(range(numElements))
        autoArray = self.api.AutoArray(uint8Array)
        bitPosition = 2
        autoArrayBitSize = 8 + numElements * 8
        self.assertEqual(autoArrayBitSize, autoArray.bitsizeof(bitPosition))

    def _checkInitializeOffsets(self, numElements):
        uint8Array = list(range(numElements))
        autoArray = self.api.AutoArray(uint8_array_=uint8Array)
        bitPosition = 2
        expectedEndBitPosition = bitPosition + 8 + numElements * 8
        self.assertEqual(expectedEndBitPosition,
                         autoArray.initialize_offsets(bitPosition))

    def _checkRead(self, numElements):
        writer = zserio.BitStreamWriter()
        AutoArrayUInt8Test._writeAutoArrayToStream(writer, numElements)
        reader = zserio.BitStreamReader(writer.byte_array, writer.bitposition)
        autoArray = self.api.AutoArray.from_reader(reader)

        uint8Array = autoArray.uint8_array
        self.assertEqual(numElements, len(uint8Array))
        for i in range(numElements):
            self.assertEqual(i, uint8Array[i])

    def _checkWriteRead(self, numElements):
        uint8Array = list(range(numElements))
        autoArray = self.api.AutoArray(uint8Array)
        bitBuffer = zserio.serialize(autoArray)
        readAutoArray = zserio.deserialize(self.api.AutoArray, bitBuffer)
        readUint8Array = readAutoArray.uint8_array
        self.assertEqual(numElements, len(readUint8Array))
        for i in range(numElements):
            self.assertEqual(i, readUint8Array[i])

    def _checkWriteReadFile(self, numElements):
        uint8Array = list(range(numElements))
        autoArray = self.api.AutoArray(uint8Array)

        filename = self.BLOB_NAME_BASE + str(numElements) + ".blob"
        zserio.serialize_to_file(autoArray, filename)

        readAutoArray = zserio.deserialize_from_file(self.api.AutoArray,
                                                     filename)
        readUint8Array = readAutoArray.uint8_array
        self.assertEqual(numElements, len(readUint8Array))
        for i in range(numElements):
            self.assertEqual(i, readUint8Array[i])

    @staticmethod
    def _writeAutoArrayToStream(writer, numElements):
        writer.write_varsize(numElements)
        for i in range(numElements):
            writer.write_bits(i, 8)

    BLOB_NAME_BASE = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "auto_array_uint8_")
    AUTO_ARRAY_LENGTH1 = 5
    AUTO_ARRAY_LENGTH2 = 10
コード例 #30
0
ファイル: ColumnParamTableTest.py プロジェクト: ndsev/zserio
 def setUpClass(cls):
     cls.api = getZserioApi(__file__, "sql_tables.zs", expectedWarnings=1)
     cls._fileName = os.path.join(getApiDir(os.path.dirname(__file__)),
                                  "column_param_table_test.sqlite")