summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorINADA Naoki <inada-n@klab.com>2012-10-01 01:31:58 +0900
committerINADA Naoki <inada-n@klab.com>2012-10-01 01:31:58 +0900
commite016b3dca0d8ca71fa54ffadfa1e5d9f3e4b3f06 (patch)
tree45daae42bfd00afdc27a7565f32ec061eb771bd7 /test
parent1526316a0803c233a6752aff1bab6e951447d12a (diff)
parent9d9c3eecb846c6a927a31aae394dea39fa75aef4 (diff)
downloadmsgpack-python-e016b3dca0d8ca71fa54ffadfa1e5d9f3e4b3f06.tar.gz
Merge remote-tracking branch 'jnothman/read_size_cpp'
Conflicts: msgpack/_msgpack.pyx setup.py
Diffstat (limited to 'test')
-rw-r--r--test/test_pack.py29
-rw-r--r--test/test_read_size.py66
2 files changed, 95 insertions, 0 deletions
diff --git a/test/test_pack.py b/test/test_pack.py
index 6af87fd..ff1eeef 100644
--- a/test/test_pack.py
+++ b/test/test_pack.py
@@ -90,6 +90,35 @@ def testPackFloat():
assert_equal(packb(1.0, use_single_float=True), b'\xca' + struct.pack('>f', 1.0))
assert_equal(packb(1.0, use_single_float=False), b'\xcb' + struct.pack('>d', 1.0))
+def testArraySize(sizes=[0, 5, 50, 1000]):
+ bio = six.BytesIO()
+ packer = Packer()
+ for size in sizes:
+ bio.write(packer.pack_array_header(size))
+ for i in range(size):
+ bio.write(packer.pack(i))
+
+ bio.seek(0)
+ unpacker = Unpacker(bio)
+ for size in sizes:
+ assert unpacker.unpack() == tuple(range(size))
+
+def testMapSize(sizes=[0, 5, 50, 1000]):
+ bio = six.BytesIO()
+ packer = Packer()
+ for size in sizes:
+ bio.write(packer.pack_map_header(size))
+ for i in range(size):
+ bio.write(packer.pack(i)) # key
+ bio.write(packer.pack(i * 2)) # value
+
+ bio.seek(0)
+ unpacker = Unpacker(bio)
+ for size in sizes:
+ assert unpacker.unpack() == {i: i * 2 for i in range(size)}
+
+
+
class odict(dict):
'''Reimplement OrderedDict to run test on Python 2.6'''
diff --git a/test/test_read_size.py b/test/test_read_size.py
new file mode 100644
index 0000000..714f963
--- /dev/null
+++ b/test/test_read_size.py
@@ -0,0 +1,66 @@
+"""Test Unpacker's read_array_header and read_map_header methods"""
+from msgpack import packb, Unpacker
+UnexpectedTypeException = ValueError
+
+def test_read_array_header():
+ unpacker = Unpacker()
+ unpacker.feed(packb(['a', 'b', 'c']))
+ assert unpacker.read_array_header() == 3
+ assert unpacker.unpack() == 'a'
+ assert unpacker.unpack() == 'b'
+ assert unpacker.unpack() == 'c'
+ try:
+ unpacker.unpack()
+ assert 0, 'should raise exception'
+ except StopIteration:
+ assert 1, 'okay'
+
+
+def test_read_map_header():
+ unpacker = Unpacker()
+ unpacker.feed(packb({'a': 'A'}))
+ assert unpacker.read_map_header() == 1
+ assert unpacker.unpack() == 'a'
+ assert unpacker.unpack() == 'A'
+ try:
+ unpacker.unpack()
+ assert 0, 'should raise exception'
+ except StopIteration:
+ assert 1, 'okay'
+
+def test_incorrect_type_array():
+ unpacker = Unpacker()
+ unpacker.feed(packb(1))
+ try:
+ unpacker.read_array_header()
+ assert 0, 'should raise exception'
+ except UnexpectedTypeException:
+ assert 1, 'okay'
+
+def test_incorrect_type_map():
+ unpacker = Unpacker()
+ unpacker.feed(packb(1))
+ try:
+ unpacker.read_map_header()
+ assert 0, 'should raise exception'
+ except UnexpectedTypeException:
+ assert 1, 'okay'
+
+def test_correct_type_nested_array():
+ unpacker = Unpacker()
+ unpacker.feed(packb({'a': ['b', 'c', 'd']}))
+ try:
+ unpacker.read_array_header()
+ assert 0, 'should raise exception'
+ except UnexpectedTypeException:
+ assert 1, 'okay'
+
+def test_incorrect_type_nested_map():
+ unpacker = Unpacker()
+ unpacker.feed(packb([{'a': 'b'}]))
+ try:
+ unpacker.read_map_header()
+ assert 0, 'should raise exception'
+ except UnexpectedTypeException:
+ assert 1, 'okay'
+