summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorInada Naoki <songofacandy@gmail.com>2019-12-05 18:29:15 +0900
committerGitHub <noreply@github.com>2019-12-05 18:29:15 +0900
commit641406902efaa8f22f4a7973d04c921a2a35a6be (patch)
tree386d7f59b87ce5b798b4a21ac55a3aabb77ddd68 /test
parent2c6668941f72e3bcb797d096437683eca4e3caf5 (diff)
downloadmsgpack-python-641406902efaa8f22f4a7973d04c921a2a35a6be.tar.gz
Add Timestamp support (#382)
Diffstat (limited to 'test')
-rw-r--r--test/test_timestamp.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/test/test_timestamp.py b/test/test_timestamp.py
new file mode 100644
index 0000000..55c2f6d
--- /dev/null
+++ b/test/test_timestamp.py
@@ -0,0 +1,46 @@
+import msgpack
+from msgpack import Timestamp
+
+
+def test_timestamp():
+ # timestamp32
+ ts = Timestamp(2**32 - 1)
+ assert ts.to_bytes() == b"\xff\xff\xff\xff"
+ packed = msgpack.packb(ts)
+ assert packed == b"\xd6\xff" + ts.to_bytes()
+ unpacked = msgpack.unpackb(packed)
+ assert ts == unpacked
+ assert ts.seconds == 2**32 - 1 and ts.nanoseconds == 0
+
+ # timestamp64
+ ts = Timestamp(2**34 - 1, 999999999)
+ assert ts.to_bytes() == b"\xee\x6b\x27\xff\xff\xff\xff\xff"
+ packed = msgpack.packb(ts)
+ assert packed == b"\xd7\xff" + ts.to_bytes()
+ unpacked = msgpack.unpackb(packed)
+ assert ts == unpacked
+ assert ts.seconds == 2**34 - 1 and ts.nanoseconds == 999999999
+
+ # timestamp96
+ ts = Timestamp(2**63 - 1, 999999999)
+ assert ts.to_bytes() == b"\x3b\x9a\xc9\xff\x7f\xff\xff\xff\xff\xff\xff\xff"
+ packed = msgpack.packb(ts)
+ assert packed == b"\xc7\x0c\xff" + ts.to_bytes()
+ unpacked = msgpack.unpackb(packed)
+ assert ts == unpacked
+ assert ts.seconds == 2**63 - 1 and ts.nanoseconds == 999999999
+
+ # negative fractional
+ ts = Timestamp(-2.3) #s: -3, ns: 700000000
+ assert ts.to_bytes() == b"\x29\xb9\x27\x00\xff\xff\xff\xff\xff\xff\xff\xfd"
+ packed = msgpack.packb(ts)
+ assert packed == b"\xc7\x0c\xff" + ts.to_bytes()
+ unpacked = msgpack.unpackb(packed)
+ assert ts == unpacked
+ assert ts.seconds == -3 and ts.nanoseconds == 700000000
+
+
+def test_timestamp_to():
+ t = Timestamp(42, 14)
+ assert t.to_float_s() == 42.000000014
+ assert t.to_unix_ns() == 42000000014