def test_bitreader_le(self): data = 0b10010100111010100100001111101_11_00000000_0101010101010010010111100000101001010101100000001110010111110100_111_000_100 size, remainder = divmod(data.bit_length(), 8) self.assertEqual(remainder, 0) data = memoryview(data.to_bytes(size, 'little')) sr = StructReader(data) self.assertEqual(sr.read_integer(3), 0b100) self.assertEqual(sr.read_integer(3), 0b000) self.assertEqual(sr.read_integer(3), 0b111) self.assertEqual( sr.u64(), 0b0101010101010010010111100000101001010101100000001110010111110100) self.assertFalse(any(sr.read_flags(8, reverse=True))) self.assertEqual(sr.read_bit(), 1) self.assertRaises(ValueError, lambda: sr.read_struct('')) self.assertEqual(sr.read_bit(), 1) self.assertEqual(sr.read_integer(29), 0b10010100111010100100001111101) self.assertTrue(sr.eof)
def test_bitreader_be(self): data = 0b01010_10011101_0100100001_1111_0111101010000101010101010010010111100000101001010101100000001110010111110100111000_101 size, remainder = divmod(data.bit_length(), 8) self.assertEqual(remainder, 7) data = memoryview(data.to_bytes(size + 1, 'big')) sr = StructReader(data) with sr.be: self.assertEqual(sr.read_bit(), 0) self.assertEqual(sr.read_bit(), 1) self.assertEqual(sr.read_bit(), 0) self.assertEqual(sr.read_bit(), 1) self.assertEqual(sr.read_bit(), 0) self.assertEqual(sr.read_byte(), 0b10011101) self.assertEqual(sr.read_integer(10), 0b100100001) self.assertTrue(all(sr.read_flags(4))) self.assertEqual( sr.read_integer(82), 0b0111101010000101010101010010010111100000101001010101100000001110010111110100111000 ) self.assertRaises(EOF, sr.u16)