99
test/utils/draft-InteroperableAddress.t.sol
Normal file
99
test/utils/draft-InteroperableAddress.t.sol
Normal file
@ -0,0 +1,99 @@
|
||||
// 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user