mirror of
https://github.com/vacp2p/minime.git
synced 2026-01-07 20:54:06 -05:00
add more transfer tests for different situations
This commit is contained in:
@@ -5,21 +5,21 @@
|
||||
| Function Name | min | avg | median | max | # calls |
|
||||
| allowance | 0 | 269 | 0 | 808 | 3 |
|
||||
| approve | 30781 | 31244 | 31244 | 31708 | 2 |
|
||||
| balanceOf | 0 | 655 | 0 | 2753 | 15 |
|
||||
| balanceOf | 0 | 393 | 0 | 2753 | 25 |
|
||||
| balanceOfAt | 0 | 90 | 0 | 2363 | 26 |
|
||||
| changeController | 0 | 1014 | 758 | 3558 | 5 |
|
||||
| controller | 0 | 0 | 0 | 0 | 6 |
|
||||
| createCloneToken | 0 | 916398 | 916398 | 1832796 | 2 |
|
||||
| decimals | 0 | 0 | 0 | 0 | 6 |
|
||||
| destroyTokens | 8956 | 8956 | 8956 | 8956 | 1 |
|
||||
| generateTokens | 0 | 23933 | 0 | 95751 | 12 |
|
||||
| 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 |
|
||||
| totalSupply | 0 | 273 | 0 | 1911 | 7 |
|
||||
| totalSupplyAt | 0 | 285 | 0 | 1995 | 7 |
|
||||
| transfer | 9785 | 53386 | 75187 | 75187 | 3 |
|
||||
| transfer | 9785 | 47444 | 55381 | 75187 | 10 |
|
||||
| transferFrom | 0 | 23361 | 3495 | 66590 | 3 |
|
||||
|
||||
|
||||
|
||||
@@ -11,5 +11,9 @@ GenerateTokensTest:test_RevertWhen_SenderIsNotController() (gas: 14966)
|
||||
MiniMeTokenTest:testDeployment() (gas: 26535)
|
||||
ReentrancyTest:testAttack() (gas: 229331)
|
||||
TransferTest:testDeployment() (gas: 26595)
|
||||
TransferTest:testDoubleTransfer() (gas: 92339)
|
||||
TransferTest:testDoubleTransfer() (gas: 92361)
|
||||
TransferTest:testDoubleTransfer2() (gas: 70580)
|
||||
TransferTest:testMultipleTransferToSame() (gas: 114591)
|
||||
TransferTest:testMultipleTransferToSame2() (gas: 92788)
|
||||
TransferTest:testTransfer() (gas: 81675)
|
||||
TransferTest:testTransfer2() (gas: 59896)
|
||||
|
||||
@@ -72,6 +72,53 @@ contract TransferTest is MiniMeTokenTest {
|
||||
MiniMeTokenTest.setUp();
|
||||
}
|
||||
|
||||
function testMultipleTransferToSame() public {
|
||||
vm.pauseGasMetering();
|
||||
_generateTokens(accounts[0], 10);
|
||||
_generateTokens(accounts[1], 10);
|
||||
vm.roll(block.number + 1);
|
||||
|
||||
vm.prank(accounts[0]);
|
||||
vm.resumeGasMetering();
|
||||
minimeToken.transfer(accounts[2], 2);
|
||||
vm.pauseGasMetering();
|
||||
|
||||
vm.prank(accounts[1]);
|
||||
vm.resumeGasMetering();
|
||||
minimeToken.transfer(accounts[2], 2);
|
||||
vm.pauseGasMetering();
|
||||
|
||||
assertEq(minimeToken.balanceOf(accounts[0]), 8, "balance of sender 0 should be reduced");
|
||||
assertEq(minimeToken.balanceOf(accounts[1]), 8, "balance of sender 1 should be reduced");
|
||||
assertEq(minimeToken.balanceOf(accounts[2]), 4, "balance of receiver should be increased");
|
||||
|
||||
vm.resumeGasMetering();
|
||||
}
|
||||
|
||||
function testMultipleTransferToSame2() public {
|
||||
vm.pauseGasMetering();
|
||||
_generateTokens(accounts[0], 10);
|
||||
_generateTokens(accounts[1], 10);
|
||||
_generateTokens(accounts[2], 1);
|
||||
vm.roll(block.number + 1);
|
||||
|
||||
vm.prank(accounts[0]);
|
||||
vm.resumeGasMetering();
|
||||
minimeToken.transfer(accounts[2], 2);
|
||||
vm.pauseGasMetering();
|
||||
|
||||
vm.prank(accounts[1]);
|
||||
vm.resumeGasMetering();
|
||||
minimeToken.transfer(accounts[2], 2);
|
||||
vm.pauseGasMetering();
|
||||
|
||||
assertEq(minimeToken.balanceOf(accounts[0]), 8, "balance of sender 0 should be reduced");
|
||||
assertEq(minimeToken.balanceOf(accounts[1]), 8, "balance of sender 1 should be reduced");
|
||||
assertEq(minimeToken.balanceOf(accounts[2]), 5, "balance of receiver should be increased");
|
||||
|
||||
vm.resumeGasMetering();
|
||||
}
|
||||
|
||||
function testDoubleTransfer() public {
|
||||
vm.pauseGasMetering();
|
||||
|
||||
@@ -90,6 +137,25 @@ contract TransferTest is MiniMeTokenTest {
|
||||
vm.resumeGasMetering();
|
||||
}
|
||||
|
||||
function testDoubleTransfer2() public {
|
||||
vm.pauseGasMetering();
|
||||
|
||||
_generateTokens(accounts[0], 10);
|
||||
_generateTokens(accounts[1], 1);
|
||||
vm.roll(block.number + 1);
|
||||
vm.startPrank(accounts[0]);
|
||||
vm.resumeGasMetering();
|
||||
minimeToken.transfer(accounts[1], 2);
|
||||
minimeToken.transfer(accounts[1], 2);
|
||||
vm.pauseGasMetering();
|
||||
vm.stopPrank();
|
||||
|
||||
assertEq(minimeToken.balanceOf(accounts[0]), 6, "balance of sender should be reduced");
|
||||
assertEq(minimeToken.balanceOf(accounts[1]), 5, "balance of receiver should be increased");
|
||||
|
||||
vm.resumeGasMetering();
|
||||
}
|
||||
|
||||
function testTransfer() public {
|
||||
vm.pauseGasMetering();
|
||||
uint256 currentBlock = block.number;
|
||||
@@ -113,6 +179,29 @@ contract TransferTest is MiniMeTokenTest {
|
||||
assertEq(minimeToken.balanceOfAt(accounts[0], currentBlock), 10, "balance at original block should be correct");
|
||||
vm.resumeGasMetering();
|
||||
}
|
||||
|
||||
function testTransfer2() public {
|
||||
vm.pauseGasMetering();
|
||||
uint256 currentBlock = block.number;
|
||||
uint256 nextBlock = currentBlock + 1;
|
||||
|
||||
_generateTokens(accounts[0], 10);
|
||||
_generateTokens(accounts[1], 1);
|
||||
|
||||
// enforce the next block
|
||||
vm.roll(nextBlock);
|
||||
|
||||
vm.prank(accounts[0]);
|
||||
|
||||
vm.resumeGasMetering();
|
||||
minimeToken.transfer(accounts[1], 2);
|
||||
vm.pauseGasMetering();
|
||||
|
||||
assertEq(minimeToken.balanceOf(accounts[0]), 8, "balance of sender should be reduced");
|
||||
assertEq(minimeToken.balanceOf(accounts[1]), 3, "balance of receiver should be increased");
|
||||
|
||||
vm.resumeGasMetering();
|
||||
}
|
||||
}
|
||||
|
||||
contract AllowanceTest is MiniMeTokenTest {
|
||||
|
||||
Reference in New Issue
Block a user