summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNaoki INADA <inada-n@eagle>2009-06-29 09:31:43 +0900
committerNaoki INADA <inada-n@eagle>2009-06-29 09:31:43 +0900
commitca0bda01f116f04f98009f13e1bc9def8200cbb6 (patch)
treeaa76dd9da151dacc36ac2eb4035ff620d7f07b94
parent3a6f6626ebf42aae84bfe9a7803bd8ab81185be4 (diff)
downloadmsgpack-python-ca0bda01f116f04f98009f13e1bc9def8200cbb6.tar.gz
Add some test cases.
-rw-r--r--test/test_case.py101
-rw-r--r--test/test_pack.py28
2 files changed, 129 insertions, 0 deletions
diff --git a/test/test_case.py b/test/test_case.py
new file mode 100644
index 0000000..3fafd8b
--- /dev/null
+++ b/test/test_case.py
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+# coding: utf-8
+
+from nose import main
+from nose.tools import *
+from msgpack import packs, unpacks
+
+def check(length, obj):
+ v = packs(obj)
+ assert_equal(len(v), length)
+ assert_equal(unpacks(v), obj)
+
+def test_1():
+ for o in [None, True, False, 0, 1, (1 << 6), (1 << 7) - 1, -1,
+ -((1<<5)-1), -(1<<5)]:
+ check(1, o)
+
+def test_2():
+ for o in [1 << 7, (1 << 8) - 1,
+ -((1<<5)+1), -(1<<7)
+ ]:
+ check(2, o)
+
+def test_3():
+ for o in [1 << 8, (1 << 16) - 1,
+ -((1<<7)+1), -(1<<15)]:
+ check(3, o)
+
+def test_5():
+ for o in [1 << 16, (1 << 32) - 1,
+ -((1<<15)+1), -(1<<31)]:
+ check(5, o)
+
+def test_9():
+ for o in [1 << 32, (1 << 64) - 1,
+ -((1<<31)+1), -(1<<63),
+ 1.0, 0.1, -0.1, -1.0]:
+ check(9, o)
+
+
+def check_raw(overhead, num):
+ check(num + overhead, " " * num)
+
+def test_fixraw():
+ check_raw(1, 0)
+ check_raw(1, (1<<5) - 1)
+
+def test_raw16():
+ check_raw(3, 1<<5)
+ check_raw(3, (1<<16) - 1)
+
+def test_raw32():
+ check_raw(5, 1<<16)
+
+
+def check_array(overhead, num):
+ check(num + overhead, [None] * num)
+
+def test_fixarray():
+ check_array(1, 0)
+ check_array(1, (1 << 4) - 1)
+
+def test_array16():
+ check_array(3, 1 << 4)
+ check_array(3, (1<<16)-1)
+
+def test_array32():
+ check_array(5, (1<<16))
+
+
+def match(obj, buf):
+ assert_equal(packs(obj), buf)
+ assert_equal(unpacks(buf), obj)
+
+def test_match():
+ cases = [
+ (None, '\xc0'),
+ (False, '\xc2'),
+ (True, '\xc3'),
+ (0, '\x00'),
+ (127, '\x7f'),
+ (128, '\xcc\x80'),
+ (256, '\xcd\x01\x00'),
+ (-1, '\xff'),
+ (-33, '\xd0\xdf'),
+ (-129, '\xd1\xff\x7f'),
+ ({1:1}, '\x81\x01\x01'),
+ (1.0, "\xcb\x3f\xf0\x00\x00\x00\x00\x00\x00"),
+ ([], '\x90'),
+ (range(15),"\x9f\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e"),
+ (range(16),"\xdc\x00\x10\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"),
+ ({}, '\x80'),
+ (dict([(x,x) for x in range(15)]), "\x8f\x05\x05\x0b\x0b\x00\x00\x06\x06\x0c\x0c\x01\x01\x07\x07\x0d\x0d\x02\x02\x08\x08\x0e\x0e\x03\x03\x09\x09\x04\x04\x0a\x0a"),
+ (dict([(x,x) for x in range(16)]), "\xde\x00\x10\x05\x05\x0b\x0b\x00\x00\x06\x06\x0c\x0c\x01\x01\x07\x07\x0d\x0d\x02\x02\x08\x08\x0e\x0e\x03\x03\x09\x09\x0f\x0f\x04\x04\x0a\x0a"),
+ ]
+
+ for v, p in cases:
+ match(v, p)
+
+if __name__ == '__main__':
+ main()
diff --git a/test/test_pack.py b/test/test_pack.py
new file mode 100644
index 0000000..86badb5
--- /dev/null
+++ b/test/test_pack.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python
+# coding: utf-8
+
+from nose import main
+from nose.tools import *
+
+from msgpack import packs, unpacks
+
+def check(data):
+ re = unpacks(packs(data))
+ assert_equal(re, data)
+
+def testPack():
+ test_data = [
+ 0, 1, 127, 128, 255, 256, 65535, 65536,
+ -1, -32, -33, -128, -129, -32768, -32769,
+ 1.0,
+ "", "a", "a"*31, "a"*32,
+ None, True, False,
+ [], [[]], [[], None],
+ {None: 0},
+ (1<<23),
+ ]
+ for td in test_data:
+ check(td)
+
+if __name__ == '__main__':
+ main()