msgpack-python/test/test_format.py

89 lines
2.2 KiB
Python
Raw Normal View History

2009-06-29 08:23:27 +09:00
#!/usr/bin/env python
2009-06-08 04:33:58 +09:00
2012-07-04 14:58:36 +09:00
from msgpack import unpackb
2009-06-08 04:33:58 +09:00
2019-12-05 18:51:45 +09:00
def check(src, should, use_list=0, raw=True):
assert unpackb(src, use_list=use_list, raw=raw, strict_map_key=False) == should
2009-06-08 04:33:58 +09:00
2019-12-05 18:51:45 +09:00
2009-06-29 08:23:27 +09:00
def testSimpleValue():
2020-02-06 22:11:04 +09:00
check(b"\x93\xc0\xc2\xc3", (None, False, True))
2019-12-05 18:51:45 +09:00
2009-06-08 04:33:58 +09:00
2009-06-29 08:23:27 +09:00
def testFixnum():
2020-02-06 22:11:04 +09:00
check(b"\x92\x93\x00\x40\x7f\x93\xe0\xf0\xff", ((0, 64, 127), (-32, -16, -1)))
2019-12-05 18:51:45 +09:00
2009-06-08 04:33:58 +09:00
2009-06-29 08:23:27 +09:00
def testFixArray():
2020-02-06 22:11:04 +09:00
check(b"\x92\x90\x91\x91\xc0", ((), ((None,),)))
2019-12-05 18:51:45 +09:00
2009-06-08 04:33:58 +09:00
2009-06-29 08:23:27 +09:00
def testFixRaw():
2020-02-06 22:11:04 +09:00
check(b"\x94\xa0\xa1a\xa2bc\xa3def", (b"", b"a", b"bc", b"def"))
2019-12-05 18:51:45 +09:00
2009-06-08 04:33:58 +09:00
2009-06-29 08:23:27 +09:00
def testFixMap():
check(b"\x82\xc2\x81\xc0\xc0\xc3\x81\xc0\x80", {False: {None: None}, True: {None: {}}})
2019-12-05 18:51:45 +09:00
2009-06-08 04:33:58 +09:00
2009-06-29 08:23:27 +09:00
def testUnsignedInt():
check(
2019-12-05 18:51:45 +09:00
b"\x99\xcc\x00\xcc\x80\xcc\xff\xcd\x00\x00\xcd\x80\x00"
b"\xcd\xff\xff\xce\x00\x00\x00\x00\xce\x80\x00\x00\x00"
b"\xce\xff\xff\xff\xff",
2020-02-06 22:11:04 +09:00
(0, 128, 255, 0, 32768, 65535, 0, 2147483648, 4294967295),
2019-12-05 18:51:45 +09:00
)
2009-06-08 04:33:58 +09:00
2009-06-29 08:23:27 +09:00
def testSignedInt():
2019-12-05 18:51:45 +09:00
check(
b"\x99\xd0\x00\xd0\x80\xd0\xff\xd1\x00\x00\xd1\x80\x00"
b"\xd1\xff\xff\xd2\x00\x00\x00\x00\xd2\x80\x00\x00\x00"
b"\xd2\xff\xff\xff\xff",
2020-02-06 22:11:04 +09:00
(0, -128, -1, 0, -32768, -1, 0, -2147483648, -1),
2019-12-05 18:51:45 +09:00
)
2009-06-08 04:33:58 +09:00
2009-06-29 08:23:27 +09:00
def testRaw():
2019-12-05 18:51:45 +09:00
check(
b"\x96\xda\x00\x00\xda\x00\x01a\xda\x00\x02ab\xdb\x00\x00"
2012-06-19 13:55:14 +09:00
b"\x00\x00\xdb\x00\x00\x00\x01a\xdb\x00\x00\x00\x02ab",
2019-12-05 18:51:45 +09:00
(b"", b"a", b"ab", b"", b"a", b"ab"),
)
check(
b"\x96\xda\x00\x00\xda\x00\x01a\xda\x00\x02ab\xdb\x00\x00"
b"\x00\x00\xdb\x00\x00\x00\x01a\xdb\x00\x00\x00\x02ab",
("", "a", "ab", "", "a", "ab"),
raw=False,
)
2019-12-05 18:51:45 +09:00
2009-06-08 04:33:58 +09:00
2009-06-29 08:23:27 +09:00
def testArray():
2019-12-05 18:51:45 +09:00
check(
b"\x96\xdc\x00\x00\xdc\x00\x01\xc0\xdc\x00\x02\xc2\xc3\xdd\x00"
2012-06-19 13:55:14 +09:00
b"\x00\x00\x00\xdd\x00\x00\x00\x01\xc0\xdd\x00\x00\x00\x02"
b"\xc2\xc3",
2019-12-05 18:51:45 +09:00
((), (None,), (False, True), (), (None,), (False, True)),
)
2009-06-29 08:23:27 +09:00
def testMap():
check(
2012-06-19 13:55:14 +09:00
b"\x96"
2019-12-05 18:51:45 +09:00
b"\xde\x00\x00"
b"\xde\x00\x01\xc0\xc2"
b"\xde\x00\x02\xc0\xc2\xc3\xc2"
b"\xdf\x00\x00\x00\x00"
b"\xdf\x00\x00\x00\x01\xc0\xc2"
b"\xdf\x00\x00\x00\x02\xc0\xc2\xc3\xc2",
(
{},
{None: False},
{True: False, None: False},
{},
{None: False},
{True: False, None: False},
),
)