2009-06-26 14:10:20 +09:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# coding: utf-8
|
|
|
|
|
2012-07-20 02:02:37 +09:00
|
|
|
from msgpack import Unpacker, BufferFull
|
|
|
|
import nose
|
2009-06-26 14:10:20 +09:00
|
|
|
|
|
|
|
def test_foobar():
|
|
|
|
unpacker = Unpacker(read_size=3)
|
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"
|
2009-06-26 14:10:20 +09:00
|
|
|
except StopIteration:
|
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():
|
|
|
|
unpacker = Unpacker(read_size=3)
|
|
|
|
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"
|
|
|
|
except StopIteration:
|
|
|
|
assert 1, "ok"
|
2009-06-26 14:10:20 +09:00
|
|
|
|
2012-07-20 02:02:37 +09:00
|
|
|
def test_maxbuffersize():
|
|
|
|
nose.tools.assert_raises(ValueError, Unpacker, read_size=5, max_buffer_size=3)
|
|
|
|
unpacker = Unpacker(read_size=3, max_buffer_size=3)
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
nose.main()
|