def test_peek(): assert rlp.peek(rlp.encode(b''), []) == b'' nested = rlp.encode([0, 1, [2, 3]]) assert rlp.peek(nested, [2, 0], big_endian_int) == 2 for index in [3, [3], [0, 0], [2, 2], [2, 1, 0]]: with pytest.raises(IndexError): rlp.peek(nested, index) assert rlp.peek(nested, 2, CountableList(big_endian_int)) == [2, 3]
def test_peek(): assert rlp.peek(rlp.encode(b''), []) == b'' nested = rlp.encode([0, 1, [2, 3]]) assert rlp.peek(nested, [2, 0], big_endian_int) == 2 for index in [3, [3], [0, 0], [2, 2], [2, 1, 0]]: with pytest.raises(IndexError): rlp.peek(nested, index) assert rlp.peek(nested, 2, CountableList(big_endian_int)) == (2, 3)
def test_string(): for s in (b'', b'asdf', b'a' * 56, b'b' * 123): dec = lambda: rlp.decode_lazy(rlp.encode(s)) assert isinstance(dec(), bytes) assert len(dec()) == len(s) assert dec() == s assert rlp.peek(rlp.encode(s), []) == s with pytest.raises(IndexError): rlp.peek(rlp.encode(s), 0) with pytest.raises(IndexError): rlp.peek(rlp.encode(s), [0])
def test_string(value): def dec(): return rlp.decode_lazy(rlp.encode(value)) assert isinstance(dec(), bytes) assert len(dec()) == len(value) assert dec() == value assert rlp.peek(rlp.encode(value), []) == value with pytest.raises(IndexError): rlp.peek(rlp.encode(value), 0) with pytest.raises(IndexError): rlp.peek(rlp.encode(value), [0])
def deserialize(data): # cmdid, sender are deserialized separately # cmdid to match the class # sender, so we don't have it in the signatures cmdid = rlp.peek(data, cmdid_pos, sedes=t_int) sender = rlp.peek(data, sender_pos, sedes=t_address) assert cmdid < 256 cls = message_class_by_id[cmdid] m = cls.deserialize(rlp.decode(data), exclude=['sender', 'cmdid']) m.mutable_ = True m.sender = sender m.mutable_ = False return m