def testReadUnalignedData(self): # number expected to read at offset testValue = 123 for offset in range(65): buffer = bytearray((8 + offset + 7) // 8) # write test value at offset to data buffer buffer[offset // 8] = testValue >> (offset % 8) if offset % 8 != 0: # don't write behind the buffer buffer[offset // 8 + 1] = 0xff & testValue << (8 - offset % 8) bitBuffer = BitBuffer(buffer, 8 + offset) reader = BitStreamReader.fromBitBuffer(bitBuffer) # read offset bits self.assertEqual(0, reader.readBits(offset)) # read magic number self.assertEqual(testValue, reader.readBits(8), msg=("Offset: " + str(offset))) # check eof with self.assertRaises(PythonRuntimeException): reader.readBits(1)
def testFromBitBuffer(self): bitBuffer = BitBuffer(bytes([0xAE, 0xEA, 0x80]), 17) reader = BitStreamReader.fromBitBuffer(bitBuffer) self.assertEqual(bitBuffer.getBitSize(), reader.getBufferBitSize()) self.assertEqual(0xAEE, reader.readBits(12)) self.assertEqual(0x0A, reader.readBits(4)) self.assertEqual(0x01, reader.readBits(1)) with self.assertRaises(PythonRuntimeException): reader.readBits(1)
def testFromBitBuffer(self): bitBuffer = BitBuffer(bytes([0x0B, 0xAB, 0xE0]), 19) reader = BitStreamReader.fromBitBuffer(bitBuffer) self.assertEqual(BitBuffer(bytes([0xAB, 0x07]), 11), reader.readBitBuffer())
def testFromBitBufferOverflow(self): bitBuffer = BitBuffer(bytes([0xFF, 0xFF, 0xF0]), 19) reader = BitStreamReader.fromBitBuffer(bitBuffer) self.assertEqual(bitBuffer.getBitSize(), reader.getBufferBitSize()) with self.assertRaises(PythonRuntimeException): reader.readBits(20)