Пример #1
0
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'
Пример #2
0
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'
Пример #3
0
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'
Пример #4
0
 def test_foobar_skip(self):
     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()
     self.assertRaises(OutOfData, unpacker.unpack)
Пример #5
0
 def test_foobar_skip(self):
     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()
     self.assertRaises(OutOfData, unpacker.unpack)
Пример #6
0
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'
Пример #7
0
    def test_max_str_len(self):
        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')
        unpacker.feed(packed)
        self.assertRaises(ValueError, unpacker.unpack)
Пример #8
0
    def test_max_bin_len(self):
        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)
        unpacker.feed(packed)
        self.assertRaises(ValueError, unpacker.unpack)
Пример #9
0
    def test_max_array_len(self):
        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)
        unpacker.feed(packed)
        self.assertRaises(ValueError, unpacker.unpack)
Пример #10
0
    def test_max_map_len(self):
        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)
        unpacker.feed(packed)
        self.assertRaises(ValueError, unpacker.unpack)
Пример #11
0
    def test_max_ext_len(self):
        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)
        unpacker.feed(packed)
        self.assertRaises(ValueError, unpacker.unpack)
Пример #12
0
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'
Пример #13
0
def test_write_bytes():
    unpacker = Unpacker()
    unpacker.feed(b'abc')
    f = io.BytesIO()
    assert unpacker.unpack(f.write) == ord('a')
    assert f.getvalue() == b'a'
    f = io.BytesIO()
    assert unpacker.skip(f.write) is None
    assert f.getvalue() == b'b'
    f = io.BytesIO()
    assert unpacker.skip() is None
    assert f.getvalue() == b''
Пример #14
0
    def test_readbytes(self):
        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(compat.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")
Пример #15
0
    def test_readbytes(self):
        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(compat.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')
Пример #16
0
    def test_foobar(self):
        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")
        self.assertRaises(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")
Пример #17
0
    def test_foobar(self):
        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')
        self.assertRaises(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')
Пример #18
0
    def test_unpacker_hook_refcnt(self):
        if not hasattr(sys, 'getrefcount'):
            raise nose.SkipTest('no sys.getrefcount()')
        result = []

        def hook(x):
            result.append(x)
            return x

        basecnt = sys.getrefcount(hook)

        up = Unpacker(object_hook=hook, list_hook=hook)

        assert sys.getrefcount(hook) >= basecnt + 2

        up.feed(packb([{}]))
        up.feed(packb([{}]))
        assert up.unpack() == [{}]
        assert up.unpack() == [{}]
        assert result == [{}, [{}], {}, [{}]]

        del up

        assert sys.getrefcount(hook) == basecnt
Пример #19
0
 def test_maxbuffersize(self):
     self.assertRaises(ValueError, Unpacker, read_size=5, max_buffer_size=3)
     unpacker = Unpacker(read_size=3, max_buffer_size=3, use_list=1)
     unpacker.feed(b'fo')
     self.assertRaises(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)
Пример #20
0
 def test_maxbuffersize(self):
     self.assertRaises(ValueError, Unpacker, read_size=5, max_buffer_size=3)
     unpacker = Unpacker(read_size=3, max_buffer_size=3, use_list=1)
     unpacker.feed(b"fo")
     self.assertRaises(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)
Пример #21
0
 def test_maxbuffersize(self):
     self.assertRaises(ValueError, Unpacker, read_size=5, max_buffer_size=3)
     unpacker = Unpacker(read_size=3, max_buffer_size=3, use_list=1)
     unpacker.feed(b'fo')
     self.assertRaises(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)
Пример #22
0
 def test_issue124(self):
     unpacker = Unpacker()
     unpacker.feed(b'\xa1?\xa1!')
     assert tuple(unpacker) == (b'?', b'!')
     assert tuple(unpacker) == ()
     unpacker.feed(b"\xa1?\xa1")
     assert tuple(unpacker) == (b'?', )
     assert tuple(unpacker) == ()
     unpacker.feed(b"!")
     assert tuple(unpacker) == (b'!', )
     assert tuple(unpacker) == ()
Пример #23
0
 def test_issue124(self):
     unpacker = Unpacker()
     unpacker.feed(b'\xa1?\xa1!')
     assert tuple(unpacker) == (b'?', b'!')
     assert tuple(unpacker) == ()
     unpacker.feed(b"\xa1?\xa1")
     assert tuple(unpacker) == (b'?', )
     assert tuple(unpacker) == ()
     unpacker.feed(b"!")
     assert tuple(unpacker) == (b'!', )
     assert tuple(unpacker) == ()
Пример #24
0
 def test_partialdata(self):
     unpacker = Unpacker()
     unpacker.feed(b'\xa5')
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b'h')
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b'a')
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b'l')
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b'l')
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b'o')
     assert next(iter(unpacker)) == b'hallo'
Пример #25
0
 def test_partialdata(self):
     unpacker = Unpacker()
     unpacker.feed(b"\xa5")
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b"h")
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b"a")
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b"l")
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b"l")
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b"o")
     assert next(iter(unpacker)) == b"hallo"
Пример #26
0
 def test_partialdata(self):
     unpacker = Unpacker()
     unpacker.feed(b'\xa5')
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b'h')
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b'a')
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b'l')
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b'l')
     self.assertRaises(StopIteration, next, iter(unpacker))
     unpacker.feed(b'o')
     assert next(iter(unpacker)) == b'hallo'