initial commit
This commit is contained in:
49
test/invariant/TokenDividerInvariantTest.t.sol
Normal file
49
test/invariant/TokenDividerInvariantTest.t.sol
Normal file
@@ -0,0 +1,49 @@
|
||||
//SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.18;
|
||||
|
||||
import {StdInvariant} from 'forge-std/StdInvariant.sol';
|
||||
import {Test} from 'forge-std/Test.sol';
|
||||
import {ERC20Mock} from '@openzeppelin/contracts/mocks/token/ERC20Mock.sol';
|
||||
import {ERC721Mock} from '../mocks/ERC721Mock.sol';
|
||||
import {IERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
|
||||
import {TokenDivider} from 'src/TokenDivider.sol';
|
||||
import {DeployTokenDivider} from 'script/DeployTokenDivider.s.sol';
|
||||
|
||||
|
||||
contract TokenDividerInvariantTest is StdInvariant, Test {
|
||||
DeployTokenDivider deployer;
|
||||
ERC20Mock erc20;
|
||||
ERC721Mock erc721;
|
||||
TokenDivider tokenDivider;
|
||||
|
||||
uint256 public constant AMOUNT = 10e18;
|
||||
function setUp() public{
|
||||
|
||||
deployer = new DeployTokenDivider();
|
||||
tokenDivider = deployer.run();
|
||||
|
||||
erc721 = new ERC721Mock();
|
||||
erc20 = new ERC20Mock();
|
||||
|
||||
|
||||
erc20.mint(address(tokenDivider), AMOUNT);
|
||||
erc721.mint(msg.sender);
|
||||
|
||||
vm.prank(msg.sender);
|
||||
erc721.approve(address(tokenDivider), 0);
|
||||
|
||||
|
||||
targetContract(address(tokenDivider));
|
||||
}
|
||||
|
||||
function invariant__allErc20TokensShouldAlwaysBeEqualToTheTotalSupplyOfThem() public view {
|
||||
uint256 totalERC20Minted= erc20.totalSupply();
|
||||
|
||||
assertEq(totalERC20Minted, AMOUNT);
|
||||
}
|
||||
|
||||
function invariant__gettersShouldNeverRevert() public view {
|
||||
tokenDivider.getBalanceOf(msg.sender, address(erc20));
|
||||
tokenDivider.getErc20TotalMintedAmount(address(erc20));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user