Example #1
0
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]
Example #2
0
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)
Example #3
0
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])
Example #4
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])
Example #5
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