def test_float(): random.seed(0) for _ in range(10000): n = random.uniform(-1e10, 1e10) data = bytearray([0xC1, 0, 0, 0, 0, 0, 0, 0, 0]) struct_pack_into(">d", data, 1, n) assert_packable(n, data)
def test_float_nan(): n = float("nan") data = bytearray([0xC1, 0, 0, 0, 0, 0, 0, 0, 0]) struct_pack_into(">d", data, 1, n) b, unpacked = pack_and_unpack(n) assert b == data assert isnan(unpacked)
def test_large_dict(): n = 0x10000 keys = ["%04X" % i for i in range(n)] b = OrderedDict.fromkeys(keys) data = bytearray([0xDA, 0, 0, 0, 0]) + b"".join(b"\x84" + key.encode("utf-8") + b"\xC0" for key in keys) struct_pack_into(">I", data, 1, n) assert_packable(b, data)
def test_large_list(): n = 0x10000 b = [0] * n data = bytearray([0xD6, 0, 0, 0, 0]) + b"\x00" * n struct_pack_into(">I", data, 1, n) assert_packable(b, data)
def test_medium_list(): n = 0x100 b = [0] * n data = bytearray([0xD5, 0, 0]) + b"\x00" * n struct_pack_into(">H", data, 1, n) assert_packable(b, data)
def test_large_byte_array(): n = 0x10000 b = bytearray(n) data = bytearray([0xCE, 0, 0, 0, 0]) + b struct_pack_into(">I", data, 1, n) assert_packable(b, data)
def test_medium_byte_array(): n = 0x100 b = bytearray(n) data = bytearray([0xCD, 0, 0]) + b struct_pack_into(">H", data, 1, n) assert_packable(b, data)
def test_large_string(): n = 0x10000 s = "A" * n data = bytearray([0xD2, 0, 0, 0, 0]) + s.encode("utf-8") struct_pack_into(">I", data, 1, n) assert_packable(s, data)
def test_medium_string(): n = 0x100 s = "A" * n data = bytearray([0xD1, 0, 0]) + s.encode("utf-8") struct_pack_into(">H", data, 1, n) assert_packable(s, data)
def test_float_negative_infinity(): n = float("-inf") data = bytearray([0xC1, 0, 0, 0, 0, 0, 0, 0, 0]) struct_pack_into(">d", data, 1, n) assert_packable(n, data)
def test_float_positive_zero(): n = float("+0.0") data = bytearray([0xC1, 0, 0, 0, 0, 0, 0, 0, 0]) struct_pack_into(">d", data, 1, n) assert_packable(n, data)
def test_64bit_positive_integer(): for i in range(0x80000000, 0x8000000000000000, 1000000000000001): data = bytearray([0xCB, 0, 0, 0, 0, 0, 0, 0, 0]) struct_pack_into(">q", data, 1, i) assert_packable(i, data)
def test_32bit_negative_integer(): for i in range(-0x80000000, -0x8000, 100001): data = bytearray([0xCA, 0, 0, 0, 0]) struct_pack_into(">i", data, 1, i) assert_packable(i, data)
def test_16bit_positive_integer(): for i in range(0x80, 0x8000): data = bytearray([0xC9, 0, 0]) struct_pack_into(">h", data, 1, i) assert_packable(i, data)