From 86a889ab1cb98f410cdcffc8f6bd9069698fce5f Mon Sep 17 00:00:00 2001 From: Ricardo Guilherme Schmidt <3esmit@gmail.com> Date: Tue, 26 Sep 2023 02:41:52 -0300 Subject: [PATCH] add claimtokens test --- .gas-report | 19 ++++++------ .gas-snapshot | 4 +++ test/MiniMeToken.t.sol | 69 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 9 deletions(-) diff --git a/.gas-report b/.gas-report index 66659fa..c7a7950 100644 --- a/.gas-report +++ b/.gas-report @@ -5,21 +5,22 @@ | Function Name | min | avg | median | max | # calls | | allowance | 0 | 269 | 0 | 808 | 3 | | approve | 30781 | 31244 | 31244 | 31708 | 2 | -| balanceOf | 0 | 393 | 0 | 2753 | 25 | +| balanceOf | 0 | 415 | 0 | 2753 | 35 | | balanceOfAt | 0 | 90 | 0 | 2363 | 26 | | changeController | 0 | 1014 | 758 | 3558 | 5 | -| controller | 0 | 0 | 0 | 0 | 6 | +| claimTokens | 9537 | 41277 | 57148 | 57148 | 3 | +| controller | 0 | 0 | 0 | 0 | 7 | | createCloneToken | 0 | 916398 | 916398 | 1832796 | 2 | -| decimals | 0 | 0 | 0 | 0 | 6 | +| decimals | 0 | 0 | 0 | 0 | 7 | | destroyTokens | 8956 | 8956 | 8956 | 8956 | 1 | -| generateTokens | 0 | 13676 | 0 | 95751 | 21 | -| name | 0 | 0 | 0 | 0 | 6 | -| parentSnapShotBlock | 0 | 0 | 0 | 0 | 7 | -| parentToken | 0 | 0 | 0 | 0 | 7 | -| symbol | 0 | 0 | 0 | 0 | 6 | +| generateTokens | 0 | 12486 | 0 | 95751 | 23 | +| name | 0 | 0 | 0 | 0 | 7 | +| parentSnapShotBlock | 0 | 0 | 0 | 0 | 8 | +| parentToken | 0 | 0 | 0 | 0 | 8 | +| symbol | 0 | 0 | 0 | 0 | 7 | | totalSupply | 0 | 273 | 0 | 1911 | 7 | | totalSupplyAt | 0 | 285 | 0 | 1995 | 7 | -| transfer | 9785 | 47444 | 55381 | 75187 | 10 | +| transfer | 9785 | 47934 | 53385 | 75187 | 12 | | transferFrom | 0 | 23361 | 3495 | 66590 | 3 | diff --git a/.gas-snapshot b/.gas-snapshot index b4898e8..efc3926 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,5 +1,9 @@ AllowanceTest:testAllowance() (gas: 42674) AllowanceTest:testDeployment() (gas: 26595) +ClaimTokensTest:testClaimERC20() (gas: 63734) +ClaimTokensTest:testClaimETH() (gas: 13637) +ClaimTokensTest:testClaimSelf() (gas: 61216) +ClaimTokensTest:testDeployment() (gas: 26595) CreateCloneTokenTest:testCreateCloneToken() (gas: 1837160) CreateCloneTokenTest:testDeployment() (gas: 26550) CreateCloneTokenTest:testGenerateTokens() (gas: 102022) diff --git a/test/MiniMeToken.t.sol b/test/MiniMeToken.t.sol index e45b7e5..bf86c8b 100644 --- a/test/MiniMeToken.t.sol +++ b/test/MiniMeToken.t.sol @@ -351,3 +351,72 @@ contract CreateCloneTokenTest is MiniMeTokenTest { assertEq(clone.totalSupply(), 15, "total supply should be correct"); } } + +contract ClaimTokensTest is MiniMeTokenTest { + function setUp() public virtual override { + MiniMeTokenTest.setUp(); + } + + function testClaimERC20() public { + vm.pauseGasMetering(); + vm.startPrank(deployer); + MiniMeToken claimTest = new MiniMeToken( + minimeTokenFactory, + MiniMeToken(payable(address(0))), + 0, + "TestClaim", + 18, + "TST", + true + ); + claimTest.generateTokens(address(minimeToken), 1234); + + assertEq(claimTest.balanceOf(address(minimeToken)), 1234, "claimTest minimeToken balance should be correct"); + assertEq(claimTest.balanceOf(address(deployer)), 0, "claimTest deployer balance should be correct"); + + vm.resumeGasMetering(); + minimeToken.claimTokens(claimTest); + vm.pauseGasMetering(); + + vm.stopPrank(); + + assertEq(claimTest.balanceOf(address(minimeToken)), 0, "claimTest minimeToken balance should be correct"); + assertEq(claimTest.balanceOf(address(deployer)), 1234, "claimTest deployer balance should be correct"); + vm.resumeGasMetering(); + } + + function testClaimETH() public { + vm.pauseGasMetering(); + vm.startPrank(deployer); + vm.deal(address(minimeToken), 1234); + assertEq(address(minimeToken).balance, 1234, "minimeToken balance should be correct"); + assertEq(address(deployer).balance, 0, "deployer balance should be correct"); + + vm.resumeGasMetering(); + minimeToken.claimTokens(MiniMeToken(payable(address(0)))); + vm.pauseGasMetering(); + + assertEq(address(minimeToken).balance, 0, "minimeToken balance should be correct"); + assertEq(address(deployer).balance, 1234, "deployer balance should be correct"); + + vm.stopPrank(); + vm.resumeGasMetering(); + } + + function testClaimSelf() public { + vm.pauseGasMetering(); + vm.startPrank(deployer); + minimeToken.generateTokens(address(minimeToken), 1234); + assertEq(minimeToken.balanceOf(address(minimeToken)), 1234, "minimeToken minimeToken balance should be 1234"); + assertEq(minimeToken.balanceOf(address(deployer)), 0, "minimeToken deployer balance should be 0"); + + vm.resumeGasMetering(); + minimeToken.claimTokens(minimeToken); + vm.pauseGasMetering(); + + assertEq(minimeToken.balanceOf(address(minimeToken)), 0, "minimeToken minimeToken balance should be 0"); + assertEq(minimeToken.balanceOf(address(deployer)), 1234, "minimeToken deployer balance should be 1234"); + vm.stopPrank(); + vm.resumeGasMetering(); + } +}