msgpack-python/test/test_sequnpack.py

78 lines
2.2 KiB
Python
Raw Normal View History

2009-06-26 14:10:20 +09:00
#!/usr/bin/env python
# coding: utf-8
import six
2012-07-20 02:02:37 +09:00
from msgpack import Unpacker, BufferFull
2012-12-10 00:31:19 +09:00
from msgpack.exceptions import OutOfData
2012-07-20 02:02:37 +09:00
import nose
2009-06-26 14:10:20 +09:00
def test_foobar():
2012-09-24 02:12:55 +09:00
unpacker = Unpacker(read_size=3, use_list=1)
2012-06-19 13:55:14 +09:00
unpacker.feed(b'foobar')
assert unpacker.unpack() == ord(b'f')
assert unpacker.unpack() == ord(b'o')
assert unpacker.unpack() == ord(b'o')
assert unpacker.unpack() == ord(b'b')
assert unpacker.unpack() == ord(b'a')
assert unpacker.unpack() == ord(b'r')
2009-06-26 14:10:20 +09:00
try:
o = unpacker.unpack()
2012-06-19 14:20:56 +09:00
assert 0, "should raise exception"
2012-12-10 00:31:19 +09:00
except OutOfData:
2012-06-19 14:20:56 +09:00
assert 1, "ok"
2012-06-19 13:55:14 +09:00
unpacker.feed(b'foo')
unpacker.feed(b'bar')
2009-06-26 14:10:20 +09:00
k = 0
2012-06-19 14:20:56 +09:00
for o, e in zip(unpacker, 'foobarbaz'):
assert o == ord(e)
2009-06-26 14:10:20 +09:00
k += 1
2012-06-19 13:55:14 +09:00
assert k == len(b'foobar')
2009-06-26 14:10:20 +09:00
2012-09-23 10:09:51 +09:00
def test_foobar_skip():
2012-09-24 02:12:55 +09:00
unpacker = Unpacker(read_size=3, use_list=1)
2012-09-23 10:09:51 +09:00
unpacker.feed(b'foobar')
assert unpacker.unpack() == ord(b'f')
unpacker.skip()
assert unpacker.unpack() == ord(b'o')
unpacker.skip()
assert unpacker.unpack() == ord(b'a')
unpacker.skip()
try:
o = unpacker.unpack()
assert 0, "should raise exception"
2012-12-10 00:31:19 +09:00
except OutOfData:
2012-09-23 10:09:51 +09:00
assert 1, "ok"
2009-06-26 14:10:20 +09:00
2012-07-20 02:02:37 +09:00
def test_maxbuffersize():
2012-12-22 13:09:35 +09:00
nose.tools.assert_raises(ValueError, Unpacker, read_size=5, max_buffer_size=3)
2012-09-24 02:12:55 +09:00
unpacker = Unpacker(read_size=3, max_buffer_size=3, use_list=1)
2012-07-20 02:02:37 +09:00
unpacker.feed(b'fo')
nose.tools.assert_raises(BufferFull, unpacker.feed, b'ob')
unpacker.feed(b'o')
assert ord('f') == next(unpacker)
unpacker.feed(b'b')
assert ord('o') == next(unpacker)
assert ord('o') == next(unpacker)
assert ord('b') == next(unpacker)
def test_readbytes():
unpacker = Unpacker(read_size=3)
unpacker.feed(b'foobar')
assert unpacker.unpack() == ord(b'f')
assert unpacker.read_bytes(3) == b'oob'
assert unpacker.unpack() == ord(b'a')
assert unpacker.unpack() == ord(b'r')
# Test buffer refill
unpacker = Unpacker(six.BytesIO(b'foobar'), read_size=3)
assert unpacker.unpack() == ord(b'f')
assert unpacker.read_bytes(3) == b'oob'
assert unpacker.unpack() == ord(b'a')
assert unpacker.unpack() == ord(b'r')
2012-07-20 02:02:37 +09:00
if __name__ == '__main__':
nose.main()