Exemple #1
0
    def test_alignto(self):
        writer = BitStreamWriter()
        writer.write_bits(5, 3)
        writer.alignto(8)
        self.assertEqual(8, writer.bitposition)
        writer.write_bits(0, 1)
        writer.alignto(16)
        self.assertEqual(16, writer.bitposition)
        writer.write_bits(0xaa, 9)
        writer.alignto(32)
        self.assertEqual(32, writer.bitposition)
        writer.write_bits(0xaca, 13)
        writer.alignto(64)
        self.assertEqual(64, writer.bitposition)
        writer.write_bits(0xcafe, 16)

        reader = BitStreamReader(buffer=writer.byte_array)
        self.assertEqual(5, reader.read_bits(3))
        reader.alignto(8)
        self.assertEqual(8, reader.bitposition)
        self.assertEqual(0, reader.read_bits(1))
        reader.alignto(16)
        self.assertEqual(16, reader.bitposition)
        self.assertEqual(0xaa, reader.read_bits(9))
        reader.alignto(32)
        self.assertEqual(32, reader.bitposition)
        self.assertEqual(0xaca, reader.read_bits(13))
        reader.alignto(64)
        self.assertEqual(64, reader.bitposition)
        self.assertEqual(0xcafe, reader.read_bits(16))
Exemple #2
0
    def write(self, writer: BitStreamWriter) -> None:
        """
        Writes array to the bit stream.

        :param writer: Bit stream where to write.
        """

        size = len(self._raw_array)
        if self._is_auto:
            writer.write_varsize(size)

        for index in range(size):
            if self._check_offset_method is not None:
                writer.alignto(8)
                self._check_offset_method(index, writer.bitposition)
            self._array_traits.write(writer, self._raw_array[index])
Exemple #3
0
 def test_alignto(self):
     writer = BitStreamWriter()
     writer.alignto(8)
     self.assertEqual(0, writer.bitposition)
     writer.alignto(2)
     self.assertEqual(0, writer.bitposition)
     writer.write_bool(True)
     writer.alignto(8)
     self.assertEqual(8, writer.bitposition)
     writer.write_bool(True)
     writer.alignto(2)
     self.assertEqual(10, writer.bitposition)