mirror of
https://github.com/vacp2p/minime.git
synced 2026-01-07 22:34:03 -05:00
add receiving and rejecting ether tests
This commit is contained in:
15
.gas-report
15
.gas-report
@@ -8,18 +8,19 @@
|
||||
| approveAndCall | 0 | 31201 | 0 | 93603 | 3 |
|
||||
| balanceOf | 0 | 285 | 0 | 2753 | 51 |
|
||||
| balanceOfAt | 0 | 90 | 0 | 2363 | 26 |
|
||||
| changeController | 0 | 634 | 0 | 3558 | 8 |
|
||||
| changeController | 0 | 507 | 0 | 3558 | 10 |
|
||||
| claimTokens | 9537 | 41281 | 57154 | 57154 | 3 |
|
||||
| controller | 0 | 0 | 0 | 0 | 7 |
|
||||
| controller | 0 | 0 | 0 | 0 | 8 |
|
||||
| createCloneToken | 0 | 924533 | 924533 | 1849066 | 2 |
|
||||
| decimals | 0 | 0 | 0 | 0 | 7 |
|
||||
| decimals | 0 | 0 | 0 | 0 | 8 |
|
||||
| destroyTokens | 2308 | 5206 | 4310 | 9001 | 3 |
|
||||
| enableTransfers | 0 | 0 | 0 | 0 | 3 |
|
||||
| generateTokens | 0 | 7184 | 0 | 95808 | 40 |
|
||||
| name | 0 | 0 | 0 | 0 | 7 |
|
||||
| parentSnapShotBlock | 0 | 0 | 0 | 0 | 8 |
|
||||
| parentToken | 0 | 0 | 0 | 0 | 8 |
|
||||
| symbol | 0 | 0 | 0 | 0 | 7 |
|
||||
| name | 0 | 0 | 0 | 0 | 8 |
|
||||
| parentSnapShotBlock | 0 | 0 | 0 | 0 | 9 |
|
||||
| parentToken | 0 | 0 | 0 | 0 | 9 |
|
||||
| receive | 7960 | 7979 | 7979 | 7998 | 2 |
|
||||
| symbol | 0 | 0 | 0 | 0 | 8 |
|
||||
| totalSupply | 0 | 212 | 0 | 1911 | 9 |
|
||||
| totalSupplyAt | 0 | 285 | 0 | 1995 | 7 |
|
||||
| transfer | 526 | 38443 | 50395 | 75193 | 18 |
|
||||
|
||||
@@ -22,6 +22,9 @@ GenerateTokensTest:testGenerateTokens() (gas: 109518)
|
||||
GenerateTokensTest:testGenerateTokensSupplyOverflow() (gas: 3126)
|
||||
GenerateTokensTest:test_RevertWhen_SenderIsNotController() (gas: 14951)
|
||||
MiniMeTokenTest:testDeployment() (gas: 26535)
|
||||
ReceiveTest:testAcceptingEther() (gas: 18628)
|
||||
ReceiveTest:testDeployment() (gas: 26595)
|
||||
ReceiveTest:testRejectingEther() (gas: 18691)
|
||||
ReentrancyTest:testAttack() (gas: 229394)
|
||||
TransferTest:testDeployment() (gas: 26617)
|
||||
TransferTest:testDoubleTransfer() (gas: 92425)
|
||||
|
||||
@@ -62,6 +62,22 @@ contract MiniMeTokenTest is Test {
|
||||
}
|
||||
}
|
||||
|
||||
contract AcceptingController is TokenController {
|
||||
receive() external payable { }
|
||||
|
||||
function proxyPayment(address) public payable override returns (bool) {
|
||||
return true;
|
||||
}
|
||||
|
||||
function onTransfer(address, address, uint256) public pure override returns (bool) {
|
||||
return true;
|
||||
}
|
||||
|
||||
function onApprove(address, address, uint256) public pure override returns (bool) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
contract RejectingController is TokenController {
|
||||
function proxyPayment(address) public payable override returns (bool) {
|
||||
return false;
|
||||
@@ -76,6 +92,52 @@ contract RejectingController is TokenController {
|
||||
}
|
||||
}
|
||||
|
||||
contract ReceiveTest is MiniMeTokenTest {
|
||||
function setUp() public virtual override {
|
||||
MiniMeTokenTest.setUp();
|
||||
}
|
||||
|
||||
function testAcceptingEther() public {
|
||||
vm.pauseGasMetering();
|
||||
AcceptingController acceptingController = new AcceptingController();
|
||||
vm.prank(deployer);
|
||||
minimeToken.changeController(payable(address(acceptingController)));
|
||||
|
||||
vm.deal(address(accounts[0]), 10 ether);
|
||||
vm.startPrank(address(accounts[0]));
|
||||
vm.resumeGasMetering();
|
||||
(bool result,) = payable(address(minimeToken)).call{ value: 1 ether }("");
|
||||
vm.pauseGasMetering();
|
||||
vm.stopPrank();
|
||||
|
||||
assertTrue(result, "ether transfer should be successful");
|
||||
assertEq(address(minimeToken).balance, 0, "minimeToken balance should be correct");
|
||||
assertEq(address(acceptingController).balance, 1 ether, "acceptingController balance should be correct");
|
||||
assertEq(address(accounts[0]).balance, 9 ether, "account balance should be correct");
|
||||
vm.resumeGasMetering();
|
||||
}
|
||||
|
||||
function testRejectingEther() public {
|
||||
vm.pauseGasMetering();
|
||||
RejectingController rejectingController = new RejectingController();
|
||||
vm.prank(deployer);
|
||||
minimeToken.changeController(payable(address(rejectingController)));
|
||||
|
||||
vm.deal(address(accounts[0]), 10 ether);
|
||||
vm.startPrank(address(accounts[0]));
|
||||
vm.resumeGasMetering();
|
||||
(bool result,) = payable(address(minimeToken)).call{ value: 1 ether }("");
|
||||
vm.pauseGasMetering();
|
||||
vm.stopPrank();
|
||||
|
||||
assertFalse(result, "ether transfer should be rejected");
|
||||
assertEq(address(minimeToken).balance, 0, "minimeToken balance should be correct");
|
||||
assertEq(address(rejectingController).balance, 0, "rejectingController balance should be correct");
|
||||
assertEq(address(accounts[0]).balance, 10 ether, "account balance should be correct");
|
||||
vm.resumeGasMetering();
|
||||
}
|
||||
}
|
||||
|
||||
contract GenerateTokensTest is MiniMeTokenTest {
|
||||
function setUp() public virtual override {
|
||||
MiniMeTokenTest.setUp();
|
||||
|
||||
Reference in New Issue
Block a user