Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: add some regression tests #443

Merged
merged 1 commit into from
Dec 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions crates/json-abi/tests/abi/Junkyard.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"inputs":[{"internalType":"address[]","name":"jkdPayees","type":"address[]"},{"internalType":"uint256[]","name":"jkdShares","type":"uint256[]"},{"internalType":"address","name":"_gateway","type":"address"},{"internalType":"address","name":"_gasReceiver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAddressString","type":"error"},{"inputs":[],"name":"NotApprovedByGateway","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"","type":"string"},{"indexed":false,"internalType":"string","name":"","type":"string"}],"name":"ContractValueUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IERC20","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ERC20PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"NewClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"","type":"bytes32"}],"name":"NewFishingEntry","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"PricesChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"GAS_RECEIVER","outputs":[{"internalType":"contract IAxelarGasService","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokenAddresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"batchTransferNFTs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256","name":"tokenUID","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"commandId","type":"bytes32"},{"internalType":"string","name":"sourceChain","type":"string"},{"internalType":"string","name":"sourceAddress","type":"string"},{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"commandId","type":"bytes32"},{"internalType":"string","name":"sourceChain","type":"string"},{"internalType":"string","name":"sourceAddress","type":"string"},{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"executeWithToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qt","type":"uint256"}],"name":"fishing","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"gateway","outputs":[{"internalType":"contract IAxelarGateway","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managerAddress","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managerChain","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"prices","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"releasable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newManagerAddr","type":"string"}],"name":"setManagerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newManagerChain","type":"string"}],"name":"setManagerChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qt","type":"uint256"},{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newStorageAddr","type":"string"}],"name":"setStorageAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newStorageChain","type":"string"}],"name":"setStorageChain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageAddress","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"storageChain","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
54 changes: 54 additions & 0 deletions crates/json-abi/tests/abi/Junkyard.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
interface Junkyard {
error InvalidAddress();
error InvalidAddressString();
error NotApprovedByGateway();

event ContractValueUpdate(string, string);
event ERC20PaymentReleased(address indexed token, address to, uint256 amount);
event NewClaim(uint256 indexed, address, uint256);
event NewFishingEntry(address indexed, uint256, bytes32);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
event Paused(address account);
event PayeeAdded(address account, uint256 shares);
event PaymentReceived(address from, uint256 amount);
event PaymentReleased(address to, uint256 amount);
event PricesChange(uint256, uint256);
event Unpaused(address account);

receive() external payable;

function GAS_RECEIVER() external view returns (address);
function batchTransferNFTs(address[] memory tokenAddresses, uint256[] memory tokenIds) external;
function claim(uint256 requestId, uint256 tokenUID) external payable;
function execute(bytes32 commandId, string memory sourceChain, string memory sourceAddress, bytes memory payload) external;
function executeWithToken(bytes32 commandId, string memory sourceChain, string memory sourceAddress, bytes memory payload, string memory tokenSymbol, uint256 amount) external;
function fishing(uint256 _qt) external payable;
function gateway() external view returns (address);
function managerAddress() external view returns (string memory);
function managerChain() external view returns (string memory);
function owner() external view returns (address);
function pause() external;
function paused() external view returns (bool);
function payee(uint256 index) external view returns (address);
function prices(uint256) external view returns (uint256);
function releasable(address account) external view returns (uint256);
function releasable(address token, address account) external view returns (uint256);
function release(address payable account) external;
function release(address token, address account) external;
function released(address token, address account) external view returns (uint256);
function released(address account) external view returns (uint256);
function renounceOwnership() external;
function setManagerAddress(string memory newManagerAddr) external;
function setManagerChain(string memory newManagerChain) external;
function setPrice(uint256 _qt, uint256 _newPrice) external;
function setStorageAddress(string memory newStorageAddr) external;
function setStorageChain(string memory newStorageChain) external;
function shares(address account) external view returns (uint256);
function storageAddress() external view returns (string memory);
function storageChain() external view returns (string memory);
function totalReleased(address token) external view returns (uint256);
function totalReleased() external view returns (uint256);
function totalShares() external view returns (uint256);
function transferOwnership(address newOwner) external;
function unpause() external;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"PairCreated","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPairs","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"getPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairCodeHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_feeTo","type":"address"}],"name":"setFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeToSetter","type":"address"}],"name":"setFeeToSetter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_migrator","type":"address"}],"name":"setMigrator","outputs":[],"stateMutability":"nonpayable","type":"function"}]
15 changes: 15 additions & 0 deletions crates/json-abi/tests/abi/UniswapV2FactoryWithMigrator.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
interface UniswapV2FactoryWithMigrator {
event PairCreated(address indexed token0, address indexed token1, address pair, uint256);

function allPairs(uint256) external view returns (address);
function allPairsLength() external view returns (uint256);
function createPair(address tokenA, address tokenB) external returns (address pair);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address, address) external view returns (address);
function migrator() external view returns (address);
function pairCodeHash() external pure returns (bytes32);
function setFeeTo(address _feeTo) external;
function setFeeToSetter(address _feeToSetter) external;
function setMigrator(address _migrator) external;
}
16 changes: 1 addition & 15 deletions crates/json-abi/tests/abi/ZeroxExchangeProxy.json
Original file line number Diff line number Diff line change
@@ -1,15 +1 @@
[
{
"name": "getFunctionImplementation",
"inputs": [],
"outputs": [
{
"internalType": "address",
"name": "impl",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
]
[{"name":"getFunctionImplementation","inputs":[],"outputs":[{"internalType":"address","name":"impl","type":"address"}],"stateMutability":"view","type":"function"}]
31 changes: 30 additions & 1 deletion crates/sol-types/tests/macros/sol/json.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ fn seaport() {
// https://github.com/alloy-rs/core/issues/344
#[test]
fn aggregation_router_v5() {
// https://etherscan.io/address/0x1111111254eeb25477b68fb85ed929f73a960582#code
sol!(
#[sol(docs = false)]
AggregationRouterV5,
Expand All @@ -82,6 +83,7 @@ fn aggregation_router_v5() {
// https://github.com/alloy-rs/core/issues/351
#[test]
fn uniswap_v3_position() {
// https://etherscan.io/address/0x8638fbd429b19249bb3bcf3ec72d07a657e49642#code
sol!(UniswapV3Position, "../json-abi/tests/abi/UniswapV3Position.json");

let _ = UniswapV3Position::getLiquidityByRangeCall {
Expand All @@ -107,6 +109,7 @@ fn uniswap_v3_position() {
// https://github.com/alloy-rs/core/issues/360
#[test]
fn double_exponent_interest_setter() {
// https://etherscan.io/address/0xef2ed07cc7a0825ced8ac1a67f88a0e17414fa6c#code
sol!(DoubleExponentInterestSetter, "../json-abi/tests/abi/DoubleExponentInterestSetter.json");
let _ = DoubleExponentInterestSetter::getInterestRateCall {
_0: Address::ZERO,
Expand Down Expand Up @@ -147,6 +150,32 @@ fn blur_exchange() {
}

#[test]
fn zerox_proxy() {
fn zerox_exchange_proxy() {
sol!(ZeroXExchangeProxy, "../json-abi/tests/abi/ZeroxExchangeProxy.json");
}

// TODO: Error and event with the same name
// https://github.com/alloy-rs/core/issues/376
#[test]
#[cfg(TODO)]
fn auction() {
// https://etherscan.io/address/0xbb37a88508d464a1bb54cf627d05e39883ae0ef9
sol!(Auction, "../json-abi/tests/abi/Auction.json");
}

// https://github.com/alloy-rs/core/issues/378
#[test]
fn uniswap_v2_factory_with_migrator() {
// This contract has the same ABI as `UniswapV2Factory`
// https://etherscan.io/address/0x1ffbe925f22fca796adf2a63313b8b70b5b1a7f4

// https://etherscan.io/address/0xc1a2706ceb8c21967d5c930c00c8ed16480f7255
sol!(UniswapV2FactoryWithMigrator, "../json-abi/tests/abi/UniswapV2FactoryWithMigrator.json");
}

// https://github.com/alloy-rs/core/issues/379
#[test]
fn junkyard() {
// https://etherscan.io/address/0x2e4b0f20bdb1caa0886c531256efdaab925dbe72
sol!(Junkyard, "../json-abi/tests/abi/Junkyard.json");
}