def test_foobar(): unpacker = Unpacker(read_size=3) unpacker.feed('foobar') assert_equal(unpacker.unpack(), ord('f')) assert_equal(unpacker.unpack(), ord('o')) assert_equal(unpacker.unpack(), ord('o')) assert_equal(unpacker.unpack(), ord('b')) assert_equal(unpacker.unpack(), ord('a')) assert_equal(unpacker.unpack(), ord('r')) try: o = unpacker.unpack() print "Oops!", o assert 0 except StopIteration: assert 1 else: assert 0 unpacker.feed('foo') unpacker.feed('bar') k = 0 for o, e in zip(unpacker, 'foobarbaz'): assert o == ord(e) k += 1 assert k == len('foobar')
def test_foobar(): unpacker = Unpacker(read_size=3) 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') try: o = unpacker.unpack() print(("Oops!", o)) assert 0 except StopIteration: assert 1 else: assert 0 unpacker.feed(b'foo') unpacker.feed(b'bar') k = 0 for o, e in zip(unpacker, b'foobarbaz'): assert o == e k += 1 assert k == len(b'foobar')
def test_foobar(): unpacker = Unpacker(read_size=3) unpacker.feed("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") try: o = unpacker.unpack() print "Oops!", o assert 0 except StopIteration: assert 1 else: assert 0 unpacker.feed(b"foo") unpacker.feed(b"bar") k = 0 for o, e in zip(unpacker, b"foobarbaz"): assert o == ord(e) k += 1 assert k == len(b"foobar")
def test_foobar(): unpacker = Unpacker(read_size=3) unpacker.feed('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') try: o = unpacker.unpack() print "Oops!", o assert 0 except StopIteration: assert 1 else: assert 0 unpacker.feed(b'foo') unpacker.feed(b'bar') k = 0 for o, e in zip(unpacker, b'foobarbaz'): assert o == ord(e) k += 1 assert k == len(b'foobar')
def test_auto_max_array_len(): packed = b'\xde\x00\x06zz' with pytest.raises(UnpackValueError): unpackb(packed, raw=False) unpacker = Unpacker(max_buffer_size=5, raw=False) unpacker.feed(packed) with pytest.raises(UnpackValueError): unpacker.unpack()
def test_auto_max_array_len(): packed = b'\xde\x00\x06zz' with pytest.raises(UnpackValueError): unpackb(packed, raw=False) unpacker = Unpacker(max_buffer_size=5, raw=False) unpacker.feed(packed) with pytest.raises(UnpackValueError): unpacker.unpack()
def test_unpack_array_header_from_file(): f = BytesIO(packb([1, 2, 3, 4])) unpacker = Unpacker(f) assert unpacker.read_array_header() == 4 assert unpacker.unpack() == 1 assert unpacker.unpack() == 2 assert unpacker.unpack() == 3 assert unpacker.unpack() == 4 with raises(OutOfData): unpacker.unpack()
def test_auto_max_map_len(): # len(packed) == 6 -> max_map_len == 3 packed = b'\xde\x00\x04zzz' with pytest.raises(UnpackValueError): unpackb(packed, raw=False) unpacker = Unpacker(max_buffer_size=6, raw=False) unpacker.feed(packed) with pytest.raises(UnpackValueError): unpacker.unpack()
def test_unpack_array_header_from_file(): f = BytesIO(packb([1,2,3,4])) unpacker = Unpacker(f) assert unpacker.read_array_header() == 4 assert unpacker.unpack() == 1 assert unpacker.unpack() == 2 assert unpacker.unpack() == 3 assert unpacker.unpack() == 4 with raises(OutOfData): unpacker.unpack()
def test_auto_max_map_len(): # len(packed) == 6 -> max_map_len == 3 packed = b'\xde\x00\x04zzz' with pytest.raises(UnpackValueError): unpackb(packed, raw=False) unpacker = Unpacker(max_buffer_size=6, raw=False) unpacker.feed(packed) with pytest.raises(UnpackValueError): unpacker.unpack()
def test_read_map_header(): unpacker = Unpacker() unpacker.feed(packb({'a': 'A'})) assert unpacker.read_map_header() == 1 assert unpacker.unpack() == B'a' assert unpacker.unpack() == B'A' try: unpacker.unpack() assert 0, 'should raise exception' except OutOfData: assert 1, 'okay'
def test_foobar_skip(): unpacker = Unpacker(read_size=3, use_list=1) 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() with raises(OutOfData): unpacker.unpack()
def test_foobar_skip(): unpacker = Unpacker(read_size=3, use_list=1) 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() with raises(OutOfData): unpacker.unpack()
def test_foobar_skip(): unpacker = Unpacker(read_size=3, use_list=1) 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() with raises(OutOfData): unpacker.unpack()
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 OutOfData: assert 1, "okay"
def test_foobar_skip(): unpacker = Unpacker(read_size=3, use_list=1) 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() with raises(OutOfData): unpacker.unpack()
def test_read_map_header(): unpacker = Unpacker() unpacker.feed(packb({'a': 'A'})) assert unpacker.read_map_header() == 1 assert unpacker.unpack() == B'a' assert unpacker.unpack() == B'A' 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() == b"a" assert unpacker.unpack() == b"A" try: unpacker.unpack() assert 0, "should raise exception" except StopIteration: assert 1, "okay"
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 OutOfData: assert 1, "okay"
def test_read_array_header(): unpacker = Unpacker() unpacker.feed(packb(['a', 'b', 'c'])) assert unpacker.read_array_header() == 3 assert unpacker.unpack() == b'a' assert unpacker.unpack() == b'b' assert unpacker.unpack() == b'c' try: unpacker.unpack() assert 0, 'should raise exception' except StopIteration: assert 1, 'okay'
def test_max_ext_len(): d = ExtType(42, b"abc") packed = packb(d) unpacker = Unpacker(max_ext_len=3) unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_ext_len=2) with pytest.raises(ValueError): unpacker.feed(packed) unpacker.unpack()
def test_read_array_header(): unpacker = Unpacker() unpacker.feed(packb(["a", "b", "c"])) assert unpacker.read_array_header() == 3 assert unpacker.unpack() == b"a" assert unpacker.unpack() == b"b" assert unpacker.unpack() == b"c" try: unpacker.unpack() assert 0, "should raise exception" except StopIteration: assert 1, "okay"
def test_read_array_header(): unpacker = Unpacker() unpacker.feed(packb(['a', 'b', 'c'])) assert unpacker.read_array_header() == 3 assert unpacker.unpack() == b'a' assert unpacker.unpack() == b'b' assert unpacker.unpack() == b'c' try: unpacker.unpack() assert 0, 'should raise exception' except OutOfData: assert 1, 'okay'
def test_max_array_len(): d = [1, 2, 3] packed = packb(d) unpacker = Unpacker(max_array_len=3) unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_array_len=2) with pytest.raises(UnpackValueError): unpacker.feed(packed) unpacker.unpack()
def test_max_map_len(): d = {1: 2, 3: 4, 5: 6} packed = packb(d) unpacker = Unpacker(max_map_len=3) unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_map_len=2) with pytest.raises(UnpackValueError): unpacker.feed(packed) unpacker.unpack()
def test_max_str_len(): d = 'x' * 3 packed = packb(d) unpacker = Unpacker(max_str_len=3, raw=False) unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_str_len=2, raw=False) with pytest.raises(UnpackValueError): unpacker.feed(packed) unpacker.unpack()
def test_max_ext_len(): d = ExtType(42, b"abc") packed = packb(d) unpacker = Unpacker(max_ext_len=3) unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_ext_len=2) with pytest.raises(UnpackValueError): unpacker.feed(packed) unpacker.unpack()
def test_max_array_len(): d = [1,2,3] packed = packb(d) unpacker = Unpacker(max_array_len=3) unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_array_len=2) with pytest.raises(ValueError): unpacker.feed(packed) unpacker.unpack()
def test_max_map_len(): d = {1: 2, 3: 4, 5: 6} packed = packb(d) unpacker = Unpacker(max_map_len=3) unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_map_len=2) with pytest.raises(ValueError): unpacker.feed(packed) unpacker.unpack()
def test_max_bin_len(): d = b'x' * 3 packed = packb(d, use_bin_type=True) unpacker = Unpacker(max_bin_len=3) unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_bin_len=2) with pytest.raises(ValueError): unpacker.feed(packed) unpacker.unpack()
def test_max_str_len(): d = 'x' * 3 packed = packb(d) unpacker = Unpacker(max_str_len=3, encoding='utf-8') unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_str_len=2, encoding='utf-8') with pytest.raises(ValueError): unpacker.feed(packed) unpacker.unpack()
def test_max_str_len(): d = 'x' * 3 packed = packb(d) unpacker = Unpacker(max_str_len=3, encoding='utf-8') unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_str_len=2, encoding='utf-8') with pytest.raises(UnpackValueError): unpacker.feed(packed) unpacker.unpack()
def test_max_bin_len(): d = b'x' * 3 packed = packb(d, use_bin_type=True) unpacker = Unpacker(max_bin_len=3) unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_bin_len=2) with pytest.raises(UnpackValueError): unpacker.feed(packed) unpacker.unpack()
def test_max_str_len(): d = 'x' * 3 packed = packb(d) unpacker = Unpacker(max_str_len=3, raw=False) unpacker.feed(packed) assert unpacker.unpack() == d unpacker = Unpacker(max_str_len=2, raw=False) with pytest.raises(UnpackValueError): unpacker.feed(packed) unpacker.unpack()
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(io.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')
def test_foobar_skip(): unpacker = Unpacker(read_size=3, use_list=1) 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"
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(io.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')
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(io.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")
def test_foobar_skip(): unpacker = Unpacker(read_size=3, use_list=1) 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"
def test_packer_unpacker(self): buf = BytesIO() packer = Packer() buf.write(packer.pack(1)) buf.write(packer.pack('2')) buf.write(packer.pack({})) buf.seek(0) unpacker = Unpacker(buf) v1 = unpacker.unpack() self.assertEqual(1, v1) v2 = unpacker.unpack() self.assertEqual('2', v2) v3 = unpacker.unpack() self.assertTrue(isinstance(v3, dict))
def test_packer_unpacker(self): buf = BytesIO() packer = Packer() buf.write(packer.pack(1)) buf.write(packer.pack('2')) buf.write(packer.pack({})) buf.seek(0) unpacker = Unpacker(buf) v1 = unpacker.unpack() self.assertEqual(1, v1) v2 = unpacker.unpack() self.assertEqual('2', v2) v3 = unpacker.unpack() self.assertTrue(isinstance(v3, dict))
def test_write_bytes_multi_buffer(): long_val = (5) * 100 expected = packb(long_val) unpacker = Unpacker(six.BytesIO(expected), read_size=3, max_buffer_size=3) f = six.BytesIO() unpacked = unpacker.unpack(f.write) assert unpacked == long_val assert f.getvalue() == expected
def test_invalidvalue(): incomplete = b"\xd9\x97#DL_" # raw8 - length=0x97 with raises(ValueError): unpackb(incomplete) with raises(OutOfData): unpacker = Unpacker() unpacker.feed(incomplete) unpacker.unpack() with raises(FormatError): unpackb(b"\xc1") # (undefined tag) with raises(FormatError): unpackb(b"\x91\xc1") # fixarray(len=1) [ (undefined tag) ] with raises(StackError): unpackb(b"\x91" * 3000) # nested fixarray(len=1)
def test_invalidvalue(): incomplete = b"\xd9\x97#DL_" # raw8 - length=0x97 with raises(ValueError): unpackb(incomplete) with raises(OutOfData): unpacker = Unpacker() unpacker.feed(incomplete) unpacker.unpack() with raises(FormatError): unpackb(b"\xc1") # (undefined tag) with raises(FormatError): unpackb(b"\x91\xc1") # fixarray(len=1) [ (undefined tag) ] with raises(StackError): unpackb(b"\x91" * 3000) # nested fixarray(len=1)
def get_edge(self, filenum, offset): if filenum in self.open_file_cache: fileobj = self.open_file_cache[filenum] else: filename = 'part_%02d.msgpack' % filenum fileobj = open(os.path.join(self.edge_dir, filename), 'rb') self.open_file_cache[filename] = fileobj fileobj.seek(offset) unpacker = Unpacker(fileobj, encoding=encoding) return unpacker.unpack()
def get_edge(self, filenum, offset): if filenum in self.open_file_cache: fileobj = self.open_file_cache[filenum] else: filename = 'part_%02d.msgpack' % filenum fileobj = open(os.path.join(self.edge_dir, filename), 'rb') self.open_file_cache[filenum] = fileobj fileobj.seek(offset) unpacker = Unpacker(fileobj, encoding=encoding) return unpacker.unpack()
def test_foobar(): unpacker = Unpacker(read_size=3, use_list=1) 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') with raises(OutOfData): unpacker.unpack() unpacker.feed(b'foo') unpacker.feed(b'bar') k = 0 for o, e in zip(unpacker, 'foobarbaz'): assert o == ord(e) k += 1 assert k == len(b'foobar')
def test_foobar(): unpacker = Unpacker(read_size=3, use_list=1) 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") with raises(OutOfData): unpacker.unpack() unpacker.feed(b"foo") unpacker.feed(b"bar") k = 0 for o, e in zip(unpacker, "foobarbaz"): assert o == ord(e) k += 1 assert k == len(b"foobar")
def test_foobar(): unpacker = Unpacker(read_size=3, use_list=1) 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') with raises(OutOfData): unpacker.unpack() unpacker.feed(b'foo') unpacker.feed(b'bar') k = 0 for o, e in zip(unpacker, 'foobarbaz'): assert o == ord(e) k += 1 assert k == len(b'foobar')
def test_foobar(): unpacker = Unpacker(read_size=3, use_list=1) 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") with raises(OutOfData): unpacker.unpack() unpacker.feed(b"foo") unpacker.feed(b"bar") k = 0 for o, e in zip(unpacker, "foobarbaz"): assert o == ord(e) k += 1 assert k == len(b"foobar")
def testArraySize(sizes=[0, 5, 50, 1000]): bio = 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, use_list=1) for size in sizes: assert unpacker.unpack() == list(range(size))
def test_write_bytes(): unpacker = Unpacker() unpacker.feed(b'abc') f = six.BytesIO() assert unpacker.unpack(f.write) == ord('a') assert f.getvalue() == b'a' f = six.BytesIO() assert unpacker.skip(f.write) is None assert f.getvalue() == b'b' f = six.BytesIO() assert unpacker.skip() is None assert f.getvalue() == b''
def testArraySize(sizes=[0, 5, 50, 1000]): bio = 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, use_list=1) for size in sizes: assert unpacker.unpack() == list(range(size))
def testMapSize(sizes=[0, 5, 50, 1000]): bio = 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() == dict((i, i * 2) for i in range(size))
def testMapSize(sizes=[0, 5, 50, 1000]): bio = 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() == dict((i, i * 2) for i in range(size))
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(io.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") # Issue 352 u = Unpacker() u.feed(b"x") assert bytes(u.read_bytes(1)) == b"x" with raises(StopIteration): next(u) u.feed(b"\1") assert next(u) == 1
def test_foobar(): unpacker = Unpacker(read_size=3) 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') try: o = unpacker.unpack() assert 0, "should raise exception" except StopIteration: assert 1, "ok" unpacker.feed(b'foo') unpacker.feed(b'bar') k = 0 for o, e in zip(unpacker, 'foobarbaz'): assert o == ord(e) k += 1 assert k == len(b'foobar')
def test_manualreset(sizes=[0, 5, 50, 1000]): packer = Packer(autoreset=False) for size in sizes: packer.pack_array_header(size) for i in range(size): packer.pack(i) bio = BytesIO(packer.bytes()) unpacker = Unpacker(bio, use_list=1) for size in sizes: assert unpacker.unpack() == list(range(size)) packer.reset() assert packer.bytes() == b''