def test_long(self): data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \ b'\x00\x00\x00\x00\x00\x00\x00\x01' + \ b'\x00\x01\x00\x00\x00\x00\x00\x00' + \ b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF' with binary.Buffer(data, endian=binary.BE) as b: assert b.peek_long() == 0 assert b.read_long() == 0 assert b.peek_long() == 1 assert b.read_long() == 1 assert b.peek_long() == 281474976710656 assert b.read_long() == 281474976710656 assert b.peek_long() == -1 assert b.read_long() == -1 with binary.Buffer(data, endian=binary.LE) as b: assert b.peek_long() == 0 assert b.read_long() == 0 assert b.peek_long() == 72057594037927936 assert b.read_long() == 72057594037927936 assert b.peek_long() == 256 assert b.read_long() == 256 assert b.peek_long() == -1 assert b.read_long() == -1
def test_ulong(self): data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \ b'\x00\x00\x00\x00\x00\x00\x00\x01' + \ b'\x00\x01\x00\x00\x00\x00\x00\x00' + \ b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF' with binary.Buffer(data, endian=binary.BE) as b: assert b.peek_ulong() == 0 assert b.read_ulong() == 0 assert b.peek_ulong() == 1 assert b.read_ulong() == 1 assert b.peek_ulong() == 281474976710656 assert b.read_ulong() == 281474976710656 assert b.peek_ulong() == 18446744073709551615 assert b.read_ulong() == 18446744073709551615 with binary.Buffer(data, endian=binary.LE) as b: assert b.peek_ulong() == 0 assert b.read_ulong() == 0 assert b.peek_ulong() == 72057594037927936 assert b.read_ulong() == 72057594037927936 assert b.peek_ulong() == 256 assert b.read_ulong() == 256 assert b.peek_ulong() == 18446744073709551615 assert b.read_ulong() == 18446744073709551615
def test_bool(self): data = b'\x01\x00' with binary.Buffer(endian=binary.BE) as b: b.write_bool(True) b.write_bool(False) assert bytes(b) == data with binary.Buffer(endian=binary.LE) as b: b.write_bool(True) b.write_bool(False) assert bytes(b) == data
def test_hex(self): data = b'\x00\x01\xFF' hex = '0001ff' with binary.Buffer(data) as b: assert b.peek_hex(3) == hex assert b.read_hex(3) == hex
def test_hex(self): data = b'\x00\x01\xFF\x00' hex = '0001ff' with binary.Buffer() as b: b.write_hex(hex) b.write_hex(hex, length=1) assert bytes(b) == data
def test_ubyte(self): data = b'\x00\x01\xFF' with binary.Buffer(endian=binary.BE) as b: b.write_ubyte(0) b.write_ubyte(1) b.write_ubyte(255) with pytest.raises(struct.error): b.write_ubyte(-1) with pytest.raises(struct.error): b.write_ubyte('a') assert bytes(b) == data with binary.Buffer(endian=binary.LE) as b: b.write_ubyte(0) b.write_ubyte(1) b.write_ubyte(255) assert bytes(b) == data
def test_ubyte(self): data = b'\x00\x01\xFF' with binary.Buffer(data, endian=binary.BE) as b: assert b.peek_ubyte() == 0 assert b.read_ubyte() == 0 assert b.peek_ubyte() == 1 assert b.read_ubyte() == 1 assert b.peek_ubyte() == 255 assert b.read_ubyte() == 255 with binary.Buffer(data, endian=binary.LE) as b: assert b.peek_ubyte() == 0 assert b.read_ubyte() == 0 assert b.peek_ubyte() == 1 assert b.read_ubyte() == 1 assert b.peek_ubyte() == 255 assert b.read_ubyte() == 255
def test_float(self): data = b'\x00\x00\x00\x00' + b'\x3F\x80\x00\x00' + b'\x7F\xC0\x00\x00' with binary.Buffer(endian=binary.BE) as b: b.write_float(0.) b.write_float(1.) b.write_float(float('NaN')) with pytest.raises(struct.error): b.write_float('a') assert bytes(b) == data data = b'\x00\x00\x00\x00' + b'\x00\x00\x80\x3F' + b'\x00\x00\xC0\x7F' with binary.Buffer(endian=binary.LE) as b: b.write_float(0.) b.write_float(1.) b.write_float(float('NaN')) assert bytes(b) == data
def test_bool(self): data = b'\x00\x01\xFF' with binary.Buffer(data, endian=binary.BE) as b: assert b.peek_bool() == False assert b.read_bool() == False assert b.peek_bool() == True assert b.read_bool() == True assert b.peek_bool() == True assert b.read_bool() == True with binary.Buffer(data, endian=binary.LE) as b: assert b.peek_bool() == False assert b.read_bool() == False assert b.peek_bool() == True assert b.read_bool() == True assert b.peek_bool() == True assert b.read_bool() == True
def test_float(self): data = b'\x00\x00\x00\x00' + b'\x3F\x80\x00\x00' + b'\x7F\xC0\x00\x00' with binary.Buffer(data, endian=binary.BE) as b: assert b.peek_float() == 0. assert b.read_float() == 0. assert b.peek_float() == 1. assert b.read_float() == 1. assert math.isnan(b.peek_float()) == True assert math.isnan(b.read_float()) == True data = b'\x00\x00\x00\x00' + b'\x00\x00\x80\x3F' + b'\x00\x00\xC0\x7F' with binary.Buffer(data, endian=binary.LE) as b: assert b.peek_float() == 0. assert b.read_float() == 0. assert b.peek_float() == 1. assert b.read_float() == 1. assert math.isnan(b.peek_float()) == True assert math.isnan(b.read_float()) == True
def test_ushort(self): data = b'\x00\x00' + b'\x00\x01' + b'\x01\x00' + b'\xFF\xFF' with binary.Buffer(endian=binary.BE) as b: b.write_ushort(0) b.write_ushort(1) b.write_ushort(256) b.write_ushort(65535) with pytest.raises(struct.error): b.write_ushort(-1) with pytest.raises(struct.error): b.write_ushort('a') assert bytes(b) == data with binary.Buffer(endian=binary.LE) as b: b.write_ushort(0) b.write_ushort(256) b.write_ushort(1) b.write_ushort(65535) assert bytes(b) == data
def test_double(self): data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \ b'\x3F\xF0\x00\x00\x00\x00\x00\x00' + \ b'\x7F\xF8\x00\x00\x00\x00\x00\x00' with binary.Buffer(endian=binary.BE) as b: b.write_double(0.) b.write_double(1.) b.write_double(float('NaN')) assert bytes(b) == data data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \ b'\x00\x00\x00\x00\x00\x00\xF0\x3F' + \ b'\x00\x00\x00\x00\x00\x00\xF8\x7F' with binary.Buffer(endian=binary.LE) as b: b.write_double(0.) b.write_double(1.) b.write_double(float('NaN')) assert bytes(b) == data
def test_text(self): data = b'\xC3\xA8\x2E\xC3\xA9' + b'\xC3\xA8\x2E\xC3\xA9' + \ b'\xE8\x2E\xE9' + b'\xC3\xA8' text = 'è.é' with binary.Buffer() as b: b.write_text(text) b.write_text(text, encoding='utf-8') b.write_text(text, encoding='iso-8859-1') b.write_text(text, length=2) assert bytes(b) == data
def test_int(self): data = b'\x00\x00\x00\x00' + b'\x00\x00\x00\x01' + \ b'\x00\x01\x00\x00' + b'\xFF\xFF\xFF\xFF' with binary.Buffer(endian=binary.BE) as b: b.write_int(0) b.write_int(1) b.write_int(65536) b.write_int(-1) with pytest.raises(struct.error): b.write_int(2147483648) with pytest.raises(struct.error): b.write_int('a') assert bytes(b) == data with binary.Buffer(endian=binary.LE) as b: b.write_int(0) b.write_int(16777216) b.write_int(256) b.write_int(-1) assert bytes(b) == data
def test_ushort(self): data = b'\x00\x00' + b'\x00\x01' + b'\x01\x00' + b'\xFF\xFF' with binary.Buffer(data, endian=binary.BE) as b: assert b.peek_ushort() == 0 assert b.read_ushort() == 0 assert b.peek_ushort() == 1 assert b.read_ushort() == 1 assert b.peek_ushort() == 256 assert b.read_ushort() == 256 assert b.peek_ushort() == 65535 assert b.read_ushort() == 65535 with binary.Buffer(data, endian=binary.LE) as b: assert b.peek_ushort() == 0 assert b.read_ushort() == 0 assert b.peek_ushort() == 256 assert b.read_ushort() == 256 assert b.peek_ushort() == 1 assert b.read_ushort() == 1 assert b.peek_ushort() == 65535 assert b.read_ushort() == 65535
def test_ulong(self): data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \ b'\x00\x00\x00\x00\x00\x00\x00\x01' + \ b'\x00\x01\x00\x00\x00\x00\x00\x00' + \ b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF' with binary.Buffer(endian=binary.BE) as b: b.write_ulong(0) b.write_ulong(1) b.write_ulong(281474976710656) b.write_ulong(18446744073709551615) with pytest.raises(struct.error): b.write_ulong(-1) with pytest.raises(struct.error): b.write_ulong('a') assert bytes(b) == data with binary.Buffer(endian=binary.LE) as b: b.write_ulong(0) b.write_ulong(72057594037927936) b.write_ulong(256) b.write_ulong(18446744073709551615) assert bytes(b) == data
def test_long(self): data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \ b'\x00\x00\x00\x00\x00\x00\x00\x01' + \ b'\x00\x01\x00\x00\x00\x00\x00\x00' + \ b'\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF' with binary.Buffer(endian=binary.BE) as b: b.write_long(0) b.write_long(1) b.write_long(281474976710656) b.write_long(-1) with pytest.raises(struct.error): b.write_long(9223372036854775808) with pytest.raises(struct.error): b.write_long('a') assert bytes(b) == data with binary.Buffer(endian=binary.LE) as b: b.write_long(0) b.write_long(72057594037927936) b.write_long(256) b.write_long(-1) assert bytes(b) == data
def test_uint(self): data = b'\x00\x00\x00\x00' + b'\x00\x00\x00\x01' + \ b'\x00\x01\x00\x00' + b'\xFF\xFF\xFF\xFF' with binary.Buffer(data, endian=binary.BE) as b: assert b.peek_uint() == 0 assert b.read_uint() == 0 assert b.peek_uint() == 1 assert b.read_uint() == 1 assert b.peek_uint() == 65536 assert b.read_uint() == 65536 assert b.peek_uint() == 4294967295 assert b.read_uint() == 4294967295 with binary.Buffer(data, endian=binary.LE) as b: assert b.peek_uint() == 0 assert b.read_uint() == 0 assert b.peek_uint() == 16777216 assert b.read_uint() == 16777216 assert b.peek_uint() == 256 assert b.read_uint() == 256 assert b.peek_uint() == 4294967295 assert b.read_uint() == 4294967295
def test_double(self): data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \ b'\x3F\xF0\x00\x00\x00\x00\x00\x00' + \ b'\x7F\xF8\x00\x00\x00\x00\x00\x00' with binary.Buffer(data, endian=binary.BE) as b: assert b.peek_double() == 0. assert b.read_double() == 0. assert b.peek_double() == 1. assert b.read_double() == 1. assert math.isnan(b.peek_double()) == True assert math.isnan(b.read_double()) == True data = b'\x00\x00\x00\x00\x00\x00\x00\x00' + \ b'\x00\x00\x00\x00\x00\x00\xF0\x3F' + \ b'\x00\x00\x00\x00\x00\x00\xF8\x7F' with binary.Buffer(data, endian=binary.LE) as b: assert b.peek_double() == 0. assert b.read_double() == 0. assert b.peek_double() == 1. assert b.read_double() == 1. assert math.isnan(b.peek_double()) == True assert math.isnan(b.read_double()) == True
def test_text(self): data = b'\xC3\xA8\x2E\xC3\xA9' + b'\xC3\xA8\x2E\xC3\xA9' + \ b'\xC3\xA8\x2E\xC3\xA9\x00\xC3\xA8\x2E\xC3\xA9' + \ b'\xE8\x2E\xE9' + b'\xC3\xA8\x2E\xC3\xA9' text = 'è.é' with binary.Buffer(data) as b: assert b.peek_text(5) == text assert b.read_text(5) == text assert b.peek_text(5, encoding='utf-8') == text assert b.read_text(5, encoding='utf-8') == text assert b.peek_text(11) == text assert b.read_text(11) == text assert b.peek_text(3, encoding='iso-8859-1') == text assert b.read_text(3, encoding='iso-8859-1') == text with pytest.raises(UnicodeDecodeError): b.peek_text(5, encoding='utf-16be', error='strict') with pytest.raises(UnicodeDecodeError): b.read_text(5, encoding='utf-16be', error='strict')
def test_fill(self, temp_file): with binary.Buffer() as b: b.fill(10) b.fill(5, b'\xFF') b.seek(0) assert b.read() == test_data
def test_peek(self): with binary.Buffer(test_data) as b: assert b.peek(len(test_data)) == test_data assert b.tell() == 0
def test_buffer_as_bytes(self): with binary.Buffer(test_data) as b: assert bytes(b) == test_data
def test_create_buffer(self): with binary.Buffer(test_data) as b: assert b.read() == test_data