Exemplo n.º 1
0
def ext_hook(code: int, data: bytes):
    if code == ExtType.ADDRESS.value:
        return Address.from_bytes_including_prefix(data)
    elif code == ExtType.MALFORMED_ADDRESS.value:
        return MalformedAddress(AddressPrefix.EOA, data[1:])
    elif code == ExtType.BIGINT.value:
        return int.from_bytes(data, "big", signed=True)
    elif code in registry:
        cls = registry[code]
        return cls.from_bytes(data)

    return msgpack.ExtType(code, data)
Exemplo n.º 2
0
def test_encode_and_decode(create_address, block_hash, tx_hash):
    expected = [
        0,
        "hello",
        b"hello",
        True,
        None,
        "",
        MalformedAddress(AddressPrefix.EOA, os.urandom(14)),
        {
            tx_hash: {
                "name": "hello",
                "age": 30,
                "wallet": create_address(),
                "validators": [create_address() for _ in range(10)],
            },
        },
        [0, "hello", b"hello", False, None],
    ]

    data = pack.encode(expected)
    assert pack.decode(data) == expected