add transfer tests

This commit is contained in:
Ricardo Guilherme Schmidt
2023-09-26 02:41:52 -03:00
parent 86a889ab1c
commit e69486197c
3 changed files with 85 additions and 16 deletions

View File

@@ -4,8 +4,8 @@
| 1788057 | 9919 | | | | |
| Function Name | min | avg | median | max | # calls |
| allowance | 0 | 269 | 0 | 808 | 3 |
| approve | 30781 | 31244 | 31244 | 31708 | 2 |
| balanceOf | 0 | 415 | 0 | 2753 | 35 |
| approve | 0 | 20829 | 30781 | 31708 | 3 |
| balanceOf | 0 | 355 | 0 | 2753 | 41 |
| balanceOfAt | 0 | 90 | 0 | 2363 | 26 |
| changeController | 0 | 1014 | 758 | 3558 | 5 |
| claimTokens | 9537 | 41277 | 57148 | 57148 | 3 |
@@ -13,15 +13,16 @@
| createCloneToken | 0 | 916398 | 916398 | 1832796 | 2 |
| decimals | 0 | 0 | 0 | 0 | 7 |
| destroyTokens | 8956 | 8956 | 8956 | 8956 | 1 |
| generateTokens | 0 | 12486 | 0 | 95751 | 23 |
| enableTransfers | 0 | 0 | 0 | 0 | 2 |
| generateTokens | 0 | 10636 | 0 | 95751 | 27 |
| 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 | 47934 | 53385 | 75187 | 12 |
| transferFrom | 0 | 23361 | 3495 | 66590 | 3 |
| transfer | 526 | 36631 | 40486 | 75187 | 16 |
| transferFrom | 0 | 17717 | 2139 | 66590 | 4 |
| contracts/MiniMeTokenFactory.sol:MiniMeTokenFactory contract | | | | | |

View File

@@ -11,13 +11,18 @@ DestroyTokensTest:testDeployment() (gas: 26595)
DestroyTokensTest:testDestroyTokens() (gas: 13456)
GenerateTokensTest:testDeployment() (gas: 26550)
GenerateTokensTest:testGenerateTokens() (gas: 109461)
GenerateTokensTest:test_RevertWhen_SenderIsNotController() (gas: 14966)
GenerateTokensTest:test_RevertWhen_SenderIsNotController() (gas: 14951)
MiniMeTokenTest:testDeployment() (gas: 26535)
ReentrancyTest:testAttack() (gas: 229331)
TransferTest:testDeployment() (gas: 26595)
TransferTest:testDoubleTransfer() (gas: 92361)
TransferTest:testDoubleTransfer2() (gas: 70580)
TransferTest:testMultipleTransferToSame() (gas: 114591)
TransferTest:testMultipleTransferToSame2() (gas: 92788)
TransferTest:testTransfer() (gas: 81675)
TransferTest:testTransfer2() (gas: 59896)
TransferTest:testDeployment() (gas: 26617)
TransferTest:testDoubleTransfer() (gas: 92391)
TransferTest:testDoubleTransfer2() (gas: 70610)
TransferTest:testInvalidDestinationTransfer() (gas: 6380)
TransferTest:testInvalidDestinationTransfer2() (gas: 6399)
TransferTest:testMultipleTransferToSame() (gas: 114643)
TransferTest:testMultipleTransferToSame2() (gas: 92818)
TransferTest:testTransfer() (gas: 81690)
TransferTest:testTransfer2() (gas: 59888)
TransferTest:testTransferDisabled() (gas: 7968)
TransferTest:testTransferFromDisabled() (gas: 6571)
TransferTest:testTransferNoBalance() (gas: 16927)

View File

@@ -5,8 +5,9 @@ import { Test } from "forge-std/Test.sol";
import { Deploy } from "../script/Deploy.s.sol";
import { DeploymentConfig } from "../script/DeploymentConfig.s.sol";
import { MiniMeToken } from "../contracts/MiniMeToken.sol";
import { MiniMeTokenFactory } from "../contracts/MiniMeToken.sol";
import { NotAuthorized } from "../contracts/Controlled.sol";
import { MiniMeToken, TransfersDisabled, InvalidDestination, NotEnoughBalance } from "../contracts/MiniMeToken.sol";
import { MiniMeTokenFactory } from "../contracts/MiniMeTokenFactory.sol";
contract MiniMeTokenTest is Test {
DeploymentConfig internal deploymentConfig;
@@ -54,7 +55,7 @@ contract GenerateTokensTest is MiniMeTokenTest {
}
function test_RevertWhen_SenderIsNotController() public {
vm.expectRevert();
vm.expectRevert(NotAuthorized.selector);
minimeToken.generateTokens(accounts[0], 10);
}
@@ -202,6 +203,68 @@ contract TransferTest is MiniMeTokenTest {
vm.resumeGasMetering();
}
function testInvalidDestinationTransfer() public {
vm.pauseGasMetering();
_generateTokens(accounts[0], 10);
vm.expectRevert(InvalidDestination.selector);
vm.prank(accounts[0]);
vm.resumeGasMetering();
minimeToken.transfer(address(0), 2);
}
function testInvalidDestinationTransfer2() public {
vm.pauseGasMetering();
_generateTokens(accounts[0], 10);
vm.expectRevert(InvalidDestination.selector);
vm.prank(accounts[0]);
vm.resumeGasMetering();
minimeToken.transfer(address(minimeToken), 2);
}
function testTransferDisabled() public {
vm.pauseGasMetering();
_generateTokens(accounts[0], 10);
vm.prank(deployer);
minimeToken.enableTransfers(false);
vm.prank(accounts[0]);
vm.expectRevert(TransfersDisabled.selector);
vm.resumeGasMetering();
minimeToken.transfer(accounts[1], 2);
vm.pauseGasMetering();
assertEq(minimeToken.balanceOf(accounts[0]), 10, "balance of sender shouldn't be reduced");
assertEq(minimeToken.balanceOf(accounts[1]), 0, "balance of receiver shouldn't be increased");
vm.resumeGasMetering();
}
function testTransferFromDisabled() public {
vm.pauseGasMetering();
_generateTokens(accounts[0], 10);
vm.prank(accounts[0]);
minimeToken.approve(accounts[1], 2);
vm.prank(deployer);
minimeToken.enableTransfers(false);
vm.prank(accounts[1]);
vm.expectRevert(TransfersDisabled.selector);
vm.resumeGasMetering();
minimeToken.transferFrom(accounts[0], accounts[1], 2);
vm.pauseGasMetering();
assertEq(minimeToken.balanceOf(accounts[0]), 10, "balance of sender shouldn't be reduced");
assertEq(minimeToken.balanceOf(accounts[1]), 0, "balance of receiver shouldn't be increased");
vm.resumeGasMetering();
}
function testTransferNoBalance() public {
vm.pauseGasMetering();
vm.prank(accounts[0]);
vm.expectRevert(NotEnoughBalance.selector);
vm.resumeGasMetering();
minimeToken.transfer(accounts[1], 2);
vm.pauseGasMetering();
assertEq(minimeToken.balanceOf(accounts[0]), 0, "balance of sender shouldn't be reduced");
assertEq(minimeToken.balanceOf(accounts[1]), 0, "balance of receiver shouldn't be increased");
vm.resumeGasMetering();
}
}
contract AllowanceTest is MiniMeTokenTest {