Skip to content

Commit

Permalink
Strengthen tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Vectorized committed Jan 23, 2024
1 parent 573ddc2 commit e6db323
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 26 deletions.
39 changes: 18 additions & 21 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -586,27 +586,24 @@ LibBitmapTest:testBitmapUnsetBatch() (gas: 3086142)
LibBitmapTest:testBitmapUnsetBatchAcrossMultipleBuckets() (gas: 453362)
LibBitmapTest:testBitmapUnsetBatchWithinSingleBucket() (gas: 446762)
LibBitmapTest:test__codesize() (gas: 8132)
LibCloneTest:testClone() (gas: 72992)
LibCloneTest:testClone(uint256) (runs: 256, μ: 73021, ~: 73021)
LibCloneTest:testCloneDeteministicWithImmutableArgs() (gas: 193070)
LibCloneTest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 256, μ: 1055183, ~: 996334)
LibCloneTest:testCloneDeterministic() (gas: 96790)
LibCloneTest:testCloneDeterministic(uint256,bytes32) (runs: 256, μ: 96860, ~: 96860)
LibCloneTest:testCloneDeterministicRevertsIfAddressAlreadyUsed() (gas: 96882833)
LibCloneTest:testCloneWithImmutableArgs() (gas: 120835)
LibCloneTest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 256, μ: 987603, ~: 1012323)
LibCloneTest:testCloneWithImmutableArgsRevertsIfDataTooBig() (gas: 97305791)
LibCloneTest:testDeployDeterministicERC1967() (gas: 123158)
LibCloneTest:testDeployDeterministicERC1967(uint256,bytes32) (runs: 256, μ: 123186, ~: 123186)
LibCloneTest:testDeployERC1967() (gas: 99238)
LibCloneTest:testDeployERC1967(uint256) (runs: 256, μ: 99311, ~: 99311)
LibCloneTest:testInitCode(address) (runs: 256, μ: 708441, ~: 611985)
LibCloneTest:testInitCode(address,uint256) (runs: 256, μ: 766509, ~: 613282)
LibCloneTest:testInitCodeERC1967(address) (runs: 256, μ: 699232, ~: 611932)
LibCloneTest:testInitCode_PUSH0(address) (runs: 256, μ: 733330, ~: 611989)
LibCloneTest:testInitialDeposit() (gas: 323906)
LibCloneTest:testStartsWith(uint256) (runs: 256, μ: 29039, ~: 29048)
LibCloneTest:test__codesize() (gas: 19450)
LibCloneTest:testClone() (gas: 72879)
LibCloneTest:testClone(uint256) (runs: 256, μ: 72952, ~: 72952)
LibCloneTest:testCloneDeteministicWithImmutableArgs() (gas: 192934)
LibCloneTest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 256, μ: 1055024, ~: 996175)
LibCloneTest:testCloneDeterministic() (gas: 96722)
LibCloneTest:testCloneDeterministic(uint256,bytes32) (runs: 256, μ: 96792, ~: 96792)
LibCloneTest:testCloneDeterministicRevertsIfAddressAlreadyUsed() (gas: 96882832)
LibCloneTest:testCloneWithImmutableArgs() (gas: 120744)
LibCloneTest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 256, μ: 987490, ~: 1012210)
LibCloneTest:testCloneWithImmutableArgsRevertsIfDataTooBig() (gas: 97305788)
LibCloneTest:testDeployDeterministicERC1967() (gas: 123067)
LibCloneTest:testDeployDeterministicERC1967(uint256,bytes32) (runs: 256, μ: 123072, ~: 123072)
LibCloneTest:testDeployERC1967() (gas: 99147)
LibCloneTest:testDeployERC1967(uint256) (runs: 256, μ: 99220, ~: 99220)
LibCloneTest:testInitCode(address,uint256,uint256) (runs: 256, μ: 882419, ~: 715185)
LibCloneTest:testInitialDeposit() (gas: 323883)
LibCloneTest:testStartsWith(uint256) (runs: 256, μ: 29025, ~: 29026)
LibCloneTest:test__codesize() (gas: 19394)
LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 256, μ: 499, ~: 499)
LibMapTest:testGeneralMapFunctionsGas() (gas: 3304775)
LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 256, μ: 78995, ~: 81602)
Expand Down
20 changes: 15 additions & 5 deletions test/LibClone.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -420,36 +420,46 @@ contract LibCloneTest is SoladyTest, Clone {
}
}

function testInitCode(address implementation) public brutalizeMemory {
function testInitCode(address implementation, uint256 r, uint256 c) public brutalizeMemory {
if (c & (1 << 0) == 0) _testInitCode(implementation);
if (c & (1 << 1) == 0) _testInitCode_PUSH0(implementation);
if (c & (1 << 2) == 0) _testInitCode(implementation, r);
if (c & (1 << 3) == 0) _testInitCodeERC1967(implementation);
}

function _testInitCode(address implementation) internal {
bytes memory initCode = LibClone.initCode(_brutalized(implementation));
_checkMemory(initCode);
_brutalizeMemory();
bytes32 expected = LibClone.initCodeHash(_brutalized(implementation));
_checkMemory(initCode);
assertEq(keccak256(initCode), expected);
}

function testInitCode_PUSH0(address implementation) public brutalizeMemory {
function _testInitCode_PUSH0(address implementation) internal {
bytes memory initCode = LibClone.initCode_PUSH0(_brutalized(implementation));
_checkMemory(initCode);
_brutalizeMemory();
bytes32 expected = LibClone.initCodeHash_PUSH0(_brutalized(implementation));
_checkMemory(initCode);
assertEq(keccak256(initCode), expected);
}

function testInitCode(address implementation, uint256 n) public brutalizeMemory {
function _testInitCode(address implementation, uint256 n) internal {
bytes memory data;
if ((n >> 32) & 31 > 0) data = _dummyData((n >> 128) & 0xff);
bytes memory initCode = LibClone.initCode(implementation, data);
_checkMemory(initCode);
if ((n >> 64) & 31 > 0) _brutalizeMemory();
_brutalizeMemory();
bytes32 expected = LibClone.initCodeHash(implementation, data);
_checkMemory(initCode);
assertEq(keccak256(initCode), expected);
}

function testInitCodeERC1967(address implementation) public brutalizeMemory {
function _testInitCodeERC1967(address implementation) internal {
bytes memory initCode = LibClone.initCodeERC1967(_brutalized(implementation));
_checkMemory(initCode);
_brutalizeMemory();
bytes32 expected = LibClone.initCodeHashERC1967(_brutalized(implementation));
_checkMemory(initCode);
assertEq(keccak256(initCode), expected);
Expand Down

0 comments on commit e6db323

Please sign in to comment.