def testAlignTo(self): writer = BitStreamWriter() writer.writeBits(5, 3) writer.alignTo(8) self.assertEqual(8, writer.getBitPosition()) writer.writeBits(0, 1) writer.alignTo(16) self.assertEqual(16, writer.getBitPosition()) writer.writeBits(0xaa, 9) writer.alignTo(32) self.assertEqual(32, writer.getBitPosition()) writer.writeBits(0xaca, 13) writer.alignTo(64) self.assertEqual(64, writer.getBitPosition()) writer.writeBits(0xcafe, 16) reader = BitStreamReader(buffer=writer.getByteArray()) self.assertEqual(5, reader.readBits(3)) reader.alignTo(8) self.assertEqual(8, reader.getBitPosition()) self.assertEqual(0, reader.readBits(1)) reader.alignTo(16) self.assertEqual(16, reader.getBitPosition()) self.assertEqual(0xaa, reader.readBits(9)) reader.alignTo(32) self.assertEqual(32, reader.getBitPosition()) self.assertEqual(0xaca, reader.readBits(13)) reader.alignTo(64) self.assertEqual(64, reader.getBitPosition()) self.assertEqual(0xcafe, reader.readBits(16))
def write(self, writer: BitStreamWriter) -> None: """ Writes array to the bit stream. :param writer: Bit stream where to write. """ size = len(self._rawArray) if self._isAuto: writer.writeVarSize(size) for index in range(size): if self._checkOffsetMethod is not None: writer.alignTo(8) self._checkOffsetMethod(index, writer.getBitPosition()) self._arrayTraits.write(writer, self._rawArray[index])
def testAlignTo(self): writer = BitStreamWriter() writer.alignTo(8) self.assertEqual(0, writer.getBitPosition()) writer.alignTo(2) self.assertEqual(0, writer.getBitPosition()) writer.writeBool(True) writer.alignTo(8) self.assertEqual(8, writer.getBitPosition()) writer.writeBool(True) writer.alignTo(2) self.assertEqual(10, writer.getBitPosition())