Merge branch 'pr/82'

This commit is contained in:
INADA Naoki 2014-02-17 04:07:16 +09:00
commit eb3537ab50
2 changed files with 11 additions and 1 deletions

View file

@ -193,6 +193,8 @@ class Unpacker(object):
def feed(self, next_bytes): def feed(self, next_bytes):
if isinstance(next_bytes, array.array): if isinstance(next_bytes, array.array):
next_bytes = next_bytes.tostring() next_bytes = next_bytes.tostring()
elif isinstance(next_bytes, bytearray):
next_bytes = bytes(next_bytes)
assert self._fb_feeding assert self._fb_feeding
if self._fb_buf_n + len(next_bytes) > self._max_buffer_size: if self._fb_buf_n + len(next_bytes) > self._max_buffer_size:
raise BufferFull raise BufferFull

View file

@ -2,12 +2,20 @@
# coding: utf-8 # coding: utf-8
from msgpack import packb, unpackb from msgpack import packb, unpackb
import sys
def test_unpack_buffer(): def test_unpack_buffer():
from array import array from array import array
buf = array('b') buf = array('b')
buf.fromstring(packb(('foo', 'bar'))) buf.fromstring(packb((b'foo', b'bar')))
obj = unpackb(buf, use_list=1) obj = unpackb(buf, use_list=1)
assert [b'foo', b'bar'] == obj assert [b'foo', b'bar'] == obj
def test_unpack_bytearray():
buf = bytearray(packb(('foo', 'bar')))
obj = unpackb(buf, use_list=1)
assert [b'foo', b'bar'] == obj
expected_type = bytes
assert all(type(s) == expected_type for s in obj)