123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- // SPDX-License-Identifier: MIT
- pragma solidity ^0.8.26;
- import {Test} from "forge-std/Test.sol";
- import {InteroperableAddress} from "../../contracts/utils/draft-InteroperableAddress.sol";
- contract InteroperableAddressTest is Test {
- using InteroperableAddress for bytes;
- function testFormatParse(bytes2 chainType, bytes calldata chainReference, bytes calldata addr) public view {
- vm.assume(chainReference.length > 0 || addr.length > 0);
- {
- (bytes2 chainType_, bytes memory chainReference_, bytes memory addr_) = InteroperableAddress
- .formatV1(chainType, chainReference, addr)
- .parseV1();
- assertEq(chainType, chainType_);
- assertEq(chainReference, chainReference_);
- assertEq(addr, addr_);
- }
- {
- (bool success, bytes2 chainType_, bytes memory chainReference_, bytes memory addr_) = InteroperableAddress
- .formatV1(chainType, chainReference, addr)
- .tryParseV1();
- assertTrue(success);
- assertEq(chainType, chainType_);
- assertEq(chainReference, chainReference_);
- assertEq(addr, addr_);
- }
- {
- (bytes2 chainType_, bytes memory chainReference_, bytes memory addr_) = this.parseV1Calldata(
- InteroperableAddress.formatV1(chainType, chainReference, addr)
- );
- assertEq(chainType, chainType_);
- assertEq(chainReference, chainReference_);
- assertEq(addr, addr_);
- }
- {
- (bool success, bytes2 chainType_, bytes memory chainReference_, bytes memory addr_) = this
- .tryParseV1Calldata(InteroperableAddress.formatV1(chainType, chainReference, addr));
- assertTrue(success);
- assertEq(chainType, chainType_);
- assertEq(chainReference, chainReference_);
- assertEq(addr, addr_);
- }
- }
- function testFormatParseEVM(uint256 chainid, address addr) public view {
- {
- (uint256 chainid_, address addr_) = InteroperableAddress.formatEvmV1(chainid, addr).parseEvmV1();
- assertEq(chainid, chainid_);
- assertEq(addr, addr_);
- }
- {
- (bool success, uint256 chainid_, address addr_) = InteroperableAddress
- .formatEvmV1(chainid, addr)
- .tryParseEvmV1();
- assertTrue(success);
- assertEq(chainid, chainid_);
- assertEq(addr, addr_);
- }
- {
- (uint256 chainid_, address addr_) = this.parseEvmV1Calldata(
- InteroperableAddress.formatEvmV1(chainid, addr)
- );
- assertEq(chainid, chainid_);
- assertEq(addr, addr_);
- }
- {
- (bool success, uint256 chainid_, address addr_) = this.tryParseEvmV1Calldata(
- InteroperableAddress.formatEvmV1(chainid, addr)
- );
- assertTrue(success);
- assertEq(chainid, chainid_);
- assertEq(addr, addr_);
- }
- }
- function parseV1Calldata(
- bytes calldata self
- ) external pure returns (bytes2 chainType, bytes calldata chainReference, bytes calldata addr) {
- return self.parseV1Calldata();
- }
- function tryParseV1Calldata(
- bytes calldata self
- ) external pure returns (bool success, bytes2 chainType, bytes calldata chainReference, bytes calldata addr) {
- return self.tryParseV1Calldata();
- }
- function parseEvmV1Calldata(bytes calldata self) external pure returns (uint256 chainid, address addr) {
- return self.parseEvmV1Calldata();
- }
- function tryParseEvmV1Calldata(
- bytes calldata self
- ) external pure returns (bool success, uint256 chainid, address addr) {
- return self.tryParseEvmV1Calldata();
- }
- }
|