Example #1
0
    def _test_initialize_offsets(self, array_traits, array_values,
                                 expected_bitsize, expected_aligned_bitsize):
        array = Array(array_traits, array_values)
        self.assertEqual(0 + expected_bitsize, array.initialize_offsets(0))
        self.assertEqual(7 + expected_bitsize, array.initialize_offsets(7))

        auto_array = Array(array_traits, array_values, is_auto=True)
        self.assertEqual(
            0 + bitsizeof_varuint64(len(array_values)) + expected_bitsize,
            auto_array.initialize_offsets(0))
        self.assertEqual(
            7 + bitsizeof_varuint64(len(array_values)) + expected_bitsize,
            auto_array.initialize_offsets(7))

        aligned_array = Array(array_traits,
                              array_values,
                              set_offset_method=ArrayTest._set_offset_method)
        self.assertEqual(0 + expected_aligned_bitsize,
                         aligned_array.initialize_offsets(0))
        self.assertEqual(1 + 7 + expected_aligned_bitsize,
                         aligned_array.initialize_offsets(1))
        self.assertEqual(3 + 5 + expected_aligned_bitsize,
                         aligned_array.initialize_offsets(3))
        self.assertEqual(5 + 3 + expected_aligned_bitsize,
                         aligned_array.initialize_offsets(5))
        self.assertEqual(7 + 1 + expected_aligned_bitsize,
                         aligned_array.initialize_offsets(7))
Example #2
0
    def bitsizeof(_bitposition: int, value: int) -> int:
        """
        Returns length of Zserio varuint64 type stored in the bit stream in bits.

        :param _bitposition: Not used.
        :param value: Zserio varuint64 type value.
        :returns: Length of given Zserio varuint64 type in bits.
        """

        return bitsizeof_varuint64(value)
Example #3
0
    def write_varuint64(self, value: int) -> None:
        """
        Writes a variable 16-bit unsigned integer value to the underlying storage.

        :param value: Value to write.
        :raises PythonRuntimeException: If the value is out of the range.
        """

        self._write_varnum(value,
                           8,
                           bitsizeof_varuint64(value) // 8,
                           is_signed=False)
Example #4
0
    def _test_write(self, array_traits, array_values, expected_bitsize,
                    expected_aligned_bitsize):
        array = Array(array_traits, array_values)
        writer = BitStreamWriter()
        array.write(writer)
        self.assertEqual(expected_bitsize, writer.bitposition)

        auto_array = Array(array_traits, array_values, is_auto=True)
        writer = BitStreamWriter()
        auto_array.write(writer)
        self.assertEqual(
            bitsizeof_varuint64(len(array_values)) + expected_bitsize,
            writer.bitposition)

        aligned_array = Array(
            array_traits,
            array_values,
            check_offset_method=ArrayTest._check_offset_method)
        writer = BitStreamWriter()
        writer.write_bool(False)
        aligned_array.write(writer)
        self.assertEqual(1 + 7 + expected_aligned_bitsize, writer.bitposition)
Example #5
0
    def test_bitsizeof_varuint64(self):
        self.assertEqual(1 * 8, bitsizeof_varuint64(0))

        self.assertEqual(1 * 8, bitsizeof_varuint64(1 << (0)))
        self.assertEqual(1 * 8, bitsizeof_varuint64((1 << (7)) - 1))

        self.assertEqual(2 * 8, bitsizeof_varuint64(1 << (7)))
        self.assertEqual(2 * 8, bitsizeof_varuint64((1 << (7 + 7)) - 1))

        self.assertEqual(3 * 8, bitsizeof_varuint64(1 << (7 + 7)))
        self.assertEqual(3 * 8, bitsizeof_varuint64((1 << (7 + 7 + 7)) - 1))

        self.assertEqual(4 * 8, bitsizeof_varuint64(1 << (7 + 7 + 7)))
        self.assertEqual(4 * 8,
                         bitsizeof_varuint64((1 << (7 + 7 + 7 + 7)) - 1))

        self.assertEqual(5 * 8, bitsizeof_varuint64(1 << (7 + 7 + 7 + 7)))
        self.assertEqual(5 * 8,
                         bitsizeof_varuint64((1 << (7 + 7 + 7 + 7 + 7)) - 1))

        self.assertEqual(6 * 8, bitsizeof_varuint64(1 << (7 + 7 + 7 + 7 + 7)))
        self.assertEqual(
            6 * 8, bitsizeof_varuint64((1 << (7 + 7 + 7 + 7 + 7 + 7)) - 1))

        self.assertEqual(7 * 8,
                         bitsizeof_varuint64(1 << (7 + 7 + 7 + 7 + 7 + 7)))
        self.assertEqual(
            7 * 8, bitsizeof_varuint64((1 << (7 + 7 + 7 + 7 + 7 + 7 + 7)) - 1))

        self.assertEqual(8 * 8,
                         bitsizeof_varuint64(1 << (7 + 7 + 7 + 7 + 7 + 7 + 7)))
        self.assertEqual(
            8 * 8,
            bitsizeof_varuint64((1 << (7 + 7 + 7 + 7 + 7 + 7 + 7 + 8)) - 1))

        with self.assertRaises(PythonRuntimeException):
            bitsizeof_varuint64(-1)  # below the lower bound

        with self.assertRaises(PythonRuntimeException):
            bitsizeof_varuint64(
                1 << (7 + 7 + 7 + 7 + 7 + 7 + 7 + 8))  # above the upper bound