Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/black.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ jobs:
- name: Black Code Formatter
run: |
pip install black
black --diff --check msgpack/ test/
black --diff --check msgpack/ test/ setup.py
8 changes: 1 addition & 7 deletions msgpack/fallback.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,13 +77,7 @@ def getvalue(self):
newlist_hint = lambda size: []


from .exceptions import (
BufferFull,
OutOfData,
ExtraData,
FormatError,
StackError,
)
from .exceptions import BufferFull, OutOfData, ExtraData, FormatError, StackError

from .ext import ExtType, Timestamp

Expand Down
19 changes: 7 additions & 12 deletions test/test_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,29 +9,24 @@ def check(src, should, use_list=0, raw=True):


def testSimpleValue():
check(b"\x93\xc0\xc2\xc3", (None, False, True,))
check(b"\x93\xc0\xc2\xc3", (None, False, True))


def testFixnum():
check(b"\x92\x93\x00\x40\x7f\x93\xe0\xf0\xff", ((0, 64, 127,), (-32, -16, -1,),))
check(b"\x92\x93\x00\x40\x7f\x93\xe0\xf0\xff", ((0, 64, 127), (-32, -16, -1)))


def testFixArray():
check(
b"\x92\x90\x91\x91\xc0", ((), ((None,),),),
)
check(b"\x92\x90\x91\x91\xc0", ((), ((None,),)))


def testFixRaw():
check(
b"\x94\xa0\xa1a\xa2bc\xa3def", (b"", b"a", b"bc", b"def",),
)
check(b"\x94\xa0\xa1a\xa2bc\xa3def", (b"", b"a", b"bc", b"def"))


def testFixMap():
check(
b"\x82\xc2\x81\xc0\xc0\xc3\x81\xc0\x80",
{False: {None: None}, True: {None: {}}},
b"\x82\xc2\x81\xc0\xc0\xc3\x81\xc0\x80", {False: {None: None}, True: {None: {}}}
)


Expand All @@ -40,7 +35,7 @@ def testUnsignedInt():
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",
(0, 128, 255, 0, 32768, 65535, 0, 2147483648, 4294967295,),
(0, 128, 255, 0, 32768, 65535, 0, 2147483648, 4294967295),
)


Expand All @@ -49,7 +44,7 @@ def testSignedInt():
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",
(0, -128, -1, 0, -32768, -1, 0, -2147483648, -1,),
(0, -128, -1, 0, -32768, -1, 0, -2147483648, -1),
)


Expand Down
14 changes: 3 additions & 11 deletions test/test_pack.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ def testPack():
False,
(),
((),),
((), None,),
((), None),
{None: 0},
(1 << 23),
]
Expand All @@ -69,21 +69,13 @@ def testPackUnicode():


def testPackBytes():
test_data = [
b"",
b"abcd",
(b"defgh",),
]
test_data = [b"", b"abcd", (b"defgh",)]
for td in test_data:
check(td)


def testPackByteArrays():
test_data = [
bytearray(b""),
bytearray(b"abcd"),
(bytearray(b"defgh"),),
]
test_data = [bytearray(b""), bytearray(b"abcd"), (bytearray(b"defgh"),)]
for td in test_data:
check(td)

Expand Down
5 changes: 1 addition & 4 deletions test/test_stricttype.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,7 @@ def test_tuple():

def default(o):
if isinstance(o, tuple):
return {
"__type__": "tuple",
"value": list(o),
}
return {"__type__": "tuple", "value": list(o)}
raise TypeError("Unsupported type %s" % (type(o),))

def convert(o):
Expand Down
27 changes: 27 additions & 0 deletions test/test_timestamp.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,33 @@ def test_timestamp():
assert ts == unpacked


def test_unpack_timestamp():
# timestamp 32
assert msgpack.unpackb(b"\xd6\xff\x00\x00\x00\x00") == Timestamp(0)

# timestamp 64
assert msgpack.unpackb(b"\xd7\xff" + b"\x00" * 8) == Timestamp(0)
with pytest.raises(ValueError):
msgpack.unpackb(b"\xd7\xff" + b"\xff" * 8)

# timestamp 96
assert msgpack.unpackb(b"\xc7\x0c\xff" + b"\x00" * 12) == Timestamp(0)
with pytest.raises(ValueError):
msgpack.unpackb(b"\xc7\x0c\xff" + b"\xff" * 12) == Timestamp(0)

# Undefined
with pytest.raises(ValueError):
msgpack.unpackb(b"\xd4\xff\x00") # fixext 1
with pytest.raises(ValueError):
msgpack.unpackb(b"\xd5\xff\x00\x00") # fixext 2
with pytest.raises(ValueError):
msgpack.unpackb(b"\xc7\x00\xff") # ext8 (len=0)
with pytest.raises(ValueError):
msgpack.unpackb(b"\xc7\x03\xff\0\0\0") # ext8 (len=3)
with pytest.raises(ValueError):
msgpack.unpackb(b"\xc7\x05\xff\0\0\0\0\0") # ext8 (len=5)


def test_timestamp_from():
t = Timestamp(42, 14000)
assert Timestamp.from_unix(42.000014) == t
Expand Down