예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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)
예제 #9
0
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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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)
예제 #13
0
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)
예제 #14
0
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)