Add some test for timestamp (#403)

This commit is contained in:
Inada Naoki 2020-02-06 22:11:04 +09:00 committed by GitHub
parent ff1f5f89d9
commit 9d79351e99
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 40 additions and 35 deletions

View file

@ -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

View file

@ -77,13 +77,7 @@ else:
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

View file

@ -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: {}}}
)
@ -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),
)
@ -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),
)

View file

@ -49,7 +49,7 @@ def testPack():
False,
(),
((),),
((), None,),
((), None),
{None: 0},
(1 << 23),
]
@ -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)

View file

@ -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):

View file

@ -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