Skip to content

Address/Bytes Conversion Testing#

Conversion between addresses and bytes with random data, including validation of byte length and error handling.

library AddressBytesUtils {
    function toAddress(bytes memory b) internal pure returns (address) {
        if (b.length != 20) {
            revert("Invalid length");
        }
        assembly { addr := mload(add(b, 20)) }
    }
}
class AddressConversionFuzzTest(FuzzTest):
    @flow()
    def flow_to_address(self) -> None:
        length = random_int(0, 20)
        b = random_bytes(length)

        with may_revert("Invalid length") as e:
            a = self.utils.toAddress(b)
            assert a == Address(b.hex())

        if e is not None:
            assert e.value == "Invalid length"