Beispiel #1
0
    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)
Beispiel #2
0
 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)
Beispiel #3
0
 def testFromBitBuffer(self):
     bitBuffer = BitBuffer(bytes([0x0B, 0xAB, 0xE0]), 19)
     reader = BitStreamReader.fromBitBuffer(bitBuffer)
     self.assertEqual(BitBuffer(bytes([0xAB, 0x07]), 11),
                      reader.readBitBuffer())
Beispiel #4
0
 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)