Spaces:
Build error
Build error
| // SPDX-License-Identifier: MIT OR Apache-2.0 | |
| pragma solidity >=0.8.13 <0.9.0; | |
| import {Vm} from "./Vm.sol"; | |
| abstract contract StdAssertions { | |
| Vm private constant vm = Vm(address(uint160(uint256(keccak256("hevm cheat code"))))); | |
| event log(string); | |
| event logs(bytes); | |
| event log_address(address); | |
| event log_bytes32(bytes32); | |
| event log_int(int256); | |
| event log_uint(uint256); | |
| event log_bytes(bytes); | |
| event log_string(string); | |
| event log_named_address(string key, address val); | |
| event log_named_bytes32(string key, bytes32 val); | |
| event log_named_decimal_int(string key, int256 val, uint256 decimals); | |
| event log_named_decimal_uint(string key, uint256 val, uint256 decimals); | |
| event log_named_int(string key, int256 val); | |
| event log_named_uint(string key, uint256 val); | |
| event log_named_bytes(string key, bytes val); | |
| event log_named_string(string key, string val); | |
| event log_array(uint256[] val); | |
| event log_array(int256[] val); | |
| event log_array(address[] val); | |
| event log_named_array(string key, uint256[] val); | |
| event log_named_array(string key, int256[] val); | |
| event log_named_array(string key, address[] val); | |
| bytes32 private constant FAILED_SLOT = bytes32("failed"); | |
| bool private _failed; | |
| function failed() public view returns (bool) { | |
| if (_failed) { | |
| return true; | |
| } else { | |
| return vm.load(address(vm), FAILED_SLOT) != bytes32(0); | |
| } | |
| } | |
| function fail() internal virtual { | |
| vm.store(address(vm), FAILED_SLOT, bytes32(uint256(1))); | |
| _failed = true; | |
| } | |
| function fail(string memory message) internal virtual { | |
| fail(); | |
| vm.assertTrue(false, message); | |
| } | |
| function assertTrue(bool data) internal pure virtual { | |
| if (!data) { | |
| vm.assertTrue(data); | |
| } | |
| } | |
| function assertTrue(bool data, string memory err) internal pure virtual { | |
| if (!data) { | |
| vm.assertTrue(data, err); | |
| } | |
| } | |
| function assertFalse(bool data) internal pure virtual { | |
| if (data) { | |
| vm.assertFalse(data); | |
| } | |
| } | |
| function assertFalse(bool data, string memory err) internal pure virtual { | |
| if (data) { | |
| vm.assertFalse(data, err); | |
| } | |
| } | |
| function assertEq(bool left, bool right) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right); | |
| } | |
| } | |
| function assertEq(bool left, bool right, string memory err) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right, err); | |
| } | |
| } | |
| function assertEq(uint256 left, uint256 right) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right); | |
| } | |
| } | |
| function assertEq(uint256 left, uint256 right, string memory err) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right, err); | |
| } | |
| } | |
| function assertEqDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { | |
| vm.assertEqDecimal(left, right, decimals); | |
| } | |
| function assertEqDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertEqDecimal(left, right, decimals, err); | |
| } | |
| function assertEq(int256 left, int256 right) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right); | |
| } | |
| } | |
| function assertEq(int256 left, int256 right, string memory err) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right, err); | |
| } | |
| } | |
| function assertEqDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { | |
| vm.assertEqDecimal(left, right, decimals); | |
| } | |
| function assertEqDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertEqDecimal(left, right, decimals, err); | |
| } | |
| function assertEq(address left, address right) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right); | |
| } | |
| } | |
| function assertEq(address left, address right, string memory err) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right, err); | |
| } | |
| } | |
| function assertEq(bytes32 left, bytes32 right) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right); | |
| } | |
| } | |
| function assertEq(bytes32 left, bytes32 right, string memory err) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right, err); | |
| } | |
| } | |
| function assertEq32(bytes32 left, bytes32 right) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right); | |
| } | |
| } | |
| function assertEq32(bytes32 left, bytes32 right, string memory err) internal pure virtual { | |
| if (left != right) { | |
| vm.assertEq(left, right, err); | |
| } | |
| } | |
| function assertEq(string memory left, string memory right) internal pure virtual { | |
| vm.assertEq(left, right); | |
| } | |
| function assertEq(string memory left, string memory right, string memory err) internal pure virtual { | |
| vm.assertEq(left, right, err); | |
| } | |
| function assertEq(bytes memory left, bytes memory right) internal pure virtual { | |
| vm.assertEq(left, right); | |
| } | |
| function assertEq(bytes memory left, bytes memory right, string memory err) internal pure virtual { | |
| vm.assertEq(left, right, err); | |
| } | |
| function assertEq(bool[] memory left, bool[] memory right) internal pure virtual { | |
| vm.assertEq(left, right); | |
| } | |
| function assertEq(bool[] memory left, bool[] memory right, string memory err) internal pure virtual { | |
| vm.assertEq(left, right, err); | |
| } | |
| function assertEq(uint256[] memory left, uint256[] memory right) internal pure virtual { | |
| vm.assertEq(left, right); | |
| } | |
| function assertEq(uint256[] memory left, uint256[] memory right, string memory err) internal pure virtual { | |
| vm.assertEq(left, right, err); | |
| } | |
| function assertEq(int256[] memory left, int256[] memory right) internal pure virtual { | |
| vm.assertEq(left, right); | |
| } | |
| function assertEq(int256[] memory left, int256[] memory right, string memory err) internal pure virtual { | |
| vm.assertEq(left, right, err); | |
| } | |
| function assertEq(address[] memory left, address[] memory right) internal pure virtual { | |
| vm.assertEq(left, right); | |
| } | |
| function assertEq(address[] memory left, address[] memory right, string memory err) internal pure virtual { | |
| vm.assertEq(left, right, err); | |
| } | |
| function assertEq(bytes32[] memory left, bytes32[] memory right) internal pure virtual { | |
| vm.assertEq(left, right); | |
| } | |
| function assertEq(bytes32[] memory left, bytes32[] memory right, string memory err) internal pure virtual { | |
| vm.assertEq(left, right, err); | |
| } | |
| function assertEq(string[] memory left, string[] memory right) internal pure virtual { | |
| vm.assertEq(left, right); | |
| } | |
| function assertEq(string[] memory left, string[] memory right, string memory err) internal pure virtual { | |
| vm.assertEq(left, right, err); | |
| } | |
| function assertEq(bytes[] memory left, bytes[] memory right) internal pure virtual { | |
| vm.assertEq(left, right); | |
| } | |
| function assertEq(bytes[] memory left, bytes[] memory right, string memory err) internal pure virtual { | |
| vm.assertEq(left, right, err); | |
| } | |
| // Legacy helper | |
| function assertEqUint(uint256 left, uint256 right) internal pure virtual { | |
| assertEq(left, right); | |
| } | |
| function assertNotEq(bool left, bool right) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right); | |
| } | |
| } | |
| function assertNotEq(bool left, bool right, string memory err) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| } | |
| function assertNotEq(uint256 left, uint256 right) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right); | |
| } | |
| } | |
| function assertNotEq(uint256 left, uint256 right, string memory err) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| } | |
| function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { | |
| vm.assertNotEqDecimal(left, right, decimals); | |
| } | |
| function assertNotEqDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) | |
| internal | |
| pure | |
| virtual | |
| { | |
| vm.assertNotEqDecimal(left, right, decimals, err); | |
| } | |
| function assertNotEq(int256 left, int256 right) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right); | |
| } | |
| } | |
| function assertNotEq(int256 left, int256 right, string memory err) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| } | |
| function assertNotEqDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { | |
| vm.assertNotEqDecimal(left, right, decimals); | |
| } | |
| function assertNotEqDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertNotEqDecimal(left, right, decimals, err); | |
| } | |
| function assertNotEq(address left, address right) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right); | |
| } | |
| } | |
| function assertNotEq(address left, address right, string memory err) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| } | |
| function assertNotEq(bytes32 left, bytes32 right) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right); | |
| } | |
| } | |
| function assertNotEq(bytes32 left, bytes32 right, string memory err) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| } | |
| function assertNotEq32(bytes32 left, bytes32 right) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right); | |
| } | |
| } | |
| function assertNotEq32(bytes32 left, bytes32 right, string memory err) internal pure virtual { | |
| if (left == right) { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| } | |
| function assertNotEq(string memory left, string memory right) internal pure virtual { | |
| vm.assertNotEq(left, right); | |
| } | |
| function assertNotEq(string memory left, string memory right, string memory err) internal pure virtual { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| function assertNotEq(bytes memory left, bytes memory right) internal pure virtual { | |
| vm.assertNotEq(left, right); | |
| } | |
| function assertNotEq(bytes memory left, bytes memory right, string memory err) internal pure virtual { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| function assertNotEq(bool[] memory left, bool[] memory right) internal pure virtual { | |
| vm.assertNotEq(left, right); | |
| } | |
| function assertNotEq(bool[] memory left, bool[] memory right, string memory err) internal pure virtual { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| function assertNotEq(uint256[] memory left, uint256[] memory right) internal pure virtual { | |
| vm.assertNotEq(left, right); | |
| } | |
| function assertNotEq(uint256[] memory left, uint256[] memory right, string memory err) internal pure virtual { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| function assertNotEq(int256[] memory left, int256[] memory right) internal pure virtual { | |
| vm.assertNotEq(left, right); | |
| } | |
| function assertNotEq(int256[] memory left, int256[] memory right, string memory err) internal pure virtual { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| function assertNotEq(address[] memory left, address[] memory right) internal pure virtual { | |
| vm.assertNotEq(left, right); | |
| } | |
| function assertNotEq(address[] memory left, address[] memory right, string memory err) internal pure virtual { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| function assertNotEq(bytes32[] memory left, bytes32[] memory right) internal pure virtual { | |
| vm.assertNotEq(left, right); | |
| } | |
| function assertNotEq(bytes32[] memory left, bytes32[] memory right, string memory err) internal pure virtual { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| function assertNotEq(string[] memory left, string[] memory right) internal pure virtual { | |
| vm.assertNotEq(left, right); | |
| } | |
| function assertNotEq(string[] memory left, string[] memory right, string memory err) internal pure virtual { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| function assertNotEq(bytes[] memory left, bytes[] memory right) internal pure virtual { | |
| vm.assertNotEq(left, right); | |
| } | |
| function assertNotEq(bytes[] memory left, bytes[] memory right, string memory err) internal pure virtual { | |
| vm.assertNotEq(left, right, err); | |
| } | |
| function assertLt(uint256 left, uint256 right) internal pure virtual { | |
| if (left >= right) { | |
| vm.assertLt(left, right); | |
| } | |
| } | |
| function assertLt(uint256 left, uint256 right, string memory err) internal pure virtual { | |
| if (left >= right) { | |
| vm.assertLt(left, right, err); | |
| } | |
| } | |
| function assertLtDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { | |
| vm.assertLtDecimal(left, right, decimals); | |
| } | |
| function assertLtDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertLtDecimal(left, right, decimals, err); | |
| } | |
| function assertLt(int256 left, int256 right) internal pure virtual { | |
| if (left >= right) { | |
| vm.assertLt(left, right); | |
| } | |
| } | |
| function assertLt(int256 left, int256 right, string memory err) internal pure virtual { | |
| if (left >= right) { | |
| vm.assertLt(left, right, err); | |
| } | |
| } | |
| function assertLtDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { | |
| vm.assertLtDecimal(left, right, decimals); | |
| } | |
| function assertLtDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertLtDecimal(left, right, decimals, err); | |
| } | |
| function assertGt(uint256 left, uint256 right) internal pure virtual { | |
| if (left <= right) { | |
| vm.assertGt(left, right); | |
| } | |
| } | |
| function assertGt(uint256 left, uint256 right, string memory err) internal pure virtual { | |
| if (left <= right) { | |
| vm.assertGt(left, right, err); | |
| } | |
| } | |
| function assertGtDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { | |
| vm.assertGtDecimal(left, right, decimals); | |
| } | |
| function assertGtDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertGtDecimal(left, right, decimals, err); | |
| } | |
| function assertGt(int256 left, int256 right) internal pure virtual { | |
| if (left <= right) { | |
| vm.assertGt(left, right); | |
| } | |
| } | |
| function assertGt(int256 left, int256 right, string memory err) internal pure virtual { | |
| if (left <= right) { | |
| vm.assertGt(left, right, err); | |
| } | |
| } | |
| function assertGtDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { | |
| vm.assertGtDecimal(left, right, decimals); | |
| } | |
| function assertGtDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertGtDecimal(left, right, decimals, err); | |
| } | |
| function assertLe(uint256 left, uint256 right) internal pure virtual { | |
| if (left > right) { | |
| vm.assertLe(left, right); | |
| } | |
| } | |
| function assertLe(uint256 left, uint256 right, string memory err) internal pure virtual { | |
| if (left > right) { | |
| vm.assertLe(left, right, err); | |
| } | |
| } | |
| function assertLeDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { | |
| vm.assertLeDecimal(left, right, decimals); | |
| } | |
| function assertLeDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertLeDecimal(left, right, decimals, err); | |
| } | |
| function assertLe(int256 left, int256 right) internal pure virtual { | |
| if (left > right) { | |
| vm.assertLe(left, right); | |
| } | |
| } | |
| function assertLe(int256 left, int256 right, string memory err) internal pure virtual { | |
| if (left > right) { | |
| vm.assertLe(left, right, err); | |
| } | |
| } | |
| function assertLeDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { | |
| vm.assertLeDecimal(left, right, decimals); | |
| } | |
| function assertLeDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertLeDecimal(left, right, decimals, err); | |
| } | |
| function assertGe(uint256 left, uint256 right) internal pure virtual { | |
| if (left < right) { | |
| vm.assertGe(left, right); | |
| } | |
| } | |
| function assertGe(uint256 left, uint256 right, string memory err) internal pure virtual { | |
| if (left < right) { | |
| vm.assertGe(left, right, err); | |
| } | |
| } | |
| function assertGeDecimal(uint256 left, uint256 right, uint256 decimals) internal pure virtual { | |
| vm.assertGeDecimal(left, right, decimals); | |
| } | |
| function assertGeDecimal(uint256 left, uint256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertGeDecimal(left, right, decimals, err); | |
| } | |
| function assertGe(int256 left, int256 right) internal pure virtual { | |
| if (left < right) { | |
| vm.assertGe(left, right); | |
| } | |
| } | |
| function assertGe(int256 left, int256 right, string memory err) internal pure virtual { | |
| if (left < right) { | |
| vm.assertGe(left, right, err); | |
| } | |
| } | |
| function assertGeDecimal(int256 left, int256 right, uint256 decimals) internal pure virtual { | |
| vm.assertGeDecimal(left, right, decimals); | |
| } | |
| function assertGeDecimal(int256 left, int256 right, uint256 decimals, string memory err) internal pure virtual { | |
| vm.assertGeDecimal(left, right, decimals, err); | |
| } | |
| function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta) internal pure virtual { | |
| vm.assertApproxEqAbs(left, right, maxDelta); | |
| } | |
| function assertApproxEqAbs(uint256 left, uint256 right, uint256 maxDelta, string memory err) internal pure virtual { | |
| vm.assertApproxEqAbs(left, right, maxDelta, err); | |
| } | |
| function assertApproxEqAbsDecimal(uint256 left, uint256 right, uint256 maxDelta, uint256 decimals) | |
| internal | |
| pure | |
| virtual | |
| { | |
| vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals); | |
| } | |
| function assertApproxEqAbsDecimal( | |
| uint256 left, | |
| uint256 right, | |
| uint256 maxDelta, | |
| uint256 decimals, | |
| string memory err | |
| ) internal pure virtual { | |
| vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals, err); | |
| } | |
| function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta) internal pure virtual { | |
| vm.assertApproxEqAbs(left, right, maxDelta); | |
| } | |
| function assertApproxEqAbs(int256 left, int256 right, uint256 maxDelta, string memory err) internal pure virtual { | |
| vm.assertApproxEqAbs(left, right, maxDelta, err); | |
| } | |
| function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals) | |
| internal | |
| pure | |
| virtual | |
| { | |
| vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals); | |
| } | |
| function assertApproxEqAbsDecimal(int256 left, int256 right, uint256 maxDelta, uint256 decimals, string memory err) | |
| internal | |
| pure | |
| virtual | |
| { | |
| vm.assertApproxEqAbsDecimal(left, right, maxDelta, decimals, err); | |
| } | |
| function assertApproxEqRel( | |
| uint256 left, | |
| uint256 right, | |
| uint256 maxPercentDelta // An 18 decimal fixed point number, where 1e18 == 100% | |
| ) | |
| internal | |
| pure | |
| virtual | |
| { | |
| vm.assertApproxEqRel(left, right, maxPercentDelta); | |
| } | |
| function assertApproxEqRel( | |
| uint256 left, | |
| uint256 right, | |
| uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% | |
| string memory err | |
| ) | |
| internal | |
| pure | |
| virtual | |
| { | |
| vm.assertApproxEqRel(left, right, maxPercentDelta, err); | |
| } | |
| function assertApproxEqRelDecimal( | |
| uint256 left, | |
| uint256 right, | |
| uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% | |
| uint256 decimals | |
| ) | |
| internal | |
| pure | |
| virtual | |
| { | |
| vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals); | |
| } | |
| function assertApproxEqRelDecimal( | |
| uint256 left, | |
| uint256 right, | |
| uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% | |
| uint256 decimals, | |
| string memory err | |
| ) internal pure virtual { | |
| vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals, err); | |
| } | |
| function assertApproxEqRel(int256 left, int256 right, uint256 maxPercentDelta) internal pure virtual { | |
| vm.assertApproxEqRel(left, right, maxPercentDelta); | |
| } | |
| function assertApproxEqRel( | |
| int256 left, | |
| int256 right, | |
| uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% | |
| string memory err | |
| ) | |
| internal | |
| pure | |
| virtual | |
| { | |
| vm.assertApproxEqRel(left, right, maxPercentDelta, err); | |
| } | |
| function assertApproxEqRelDecimal( | |
| int256 left, | |
| int256 right, | |
| uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% | |
| uint256 decimals | |
| ) | |
| internal | |
| pure | |
| virtual | |
| { | |
| vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals); | |
| } | |
| function assertApproxEqRelDecimal( | |
| int256 left, | |
| int256 right, | |
| uint256 maxPercentDelta, // An 18 decimal fixed point number, where 1e18 == 100% | |
| uint256 decimals, | |
| string memory err | |
| ) internal pure virtual { | |
| vm.assertApproxEqRelDecimal(left, right, maxPercentDelta, decimals, err); | |
| } | |
| // Inherited from DSTest, not used but kept for backwards-compatibility | |
| function checkEq0(bytes memory left, bytes memory right) internal pure returns (bool) { | |
| return keccak256(left) == keccak256(right); | |
| } | |
| function assertEq0(bytes memory left, bytes memory right) internal pure virtual { | |
| assertEq(left, right); | |
| } | |
| function assertEq0(bytes memory left, bytes memory right, string memory err) internal pure virtual { | |
| assertEq(left, right, err); | |
| } | |
| function assertNotEq0(bytes memory left, bytes memory right) internal pure virtual { | |
| assertNotEq(left, right); | |
| } | |
| function assertNotEq0(bytes memory left, bytes memory right, string memory err) internal pure virtual { | |
| assertNotEq(left, right, err); | |
| } | |
| function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB) internal virtual { | |
| assertEqCall(target, callDataA, target, callDataB, true); | |
| } | |
| function assertEqCall(address targetA, bytes memory callDataA, address targetB, bytes memory callDataB) | |
| internal | |
| virtual | |
| { | |
| assertEqCall(targetA, callDataA, targetB, callDataB, true); | |
| } | |
| function assertEqCall(address target, bytes memory callDataA, bytes memory callDataB, bool strictRevertData) | |
| internal | |
| virtual | |
| { | |
| assertEqCall(target, callDataA, target, callDataB, strictRevertData); | |
| } | |
| function assertEqCall( | |
| address targetA, | |
| bytes memory callDataA, | |
| address targetB, | |
| bytes memory callDataB, | |
| bool strictRevertData | |
| ) internal virtual { | |
| (bool successA, bytes memory returnDataA) = address(targetA).call(callDataA); | |
| (bool successB, bytes memory returnDataB) = address(targetB).call(callDataB); | |
| if (successA && successB) { | |
| assertEq(returnDataA, returnDataB, "Call return data does not match"); | |
| } | |
| if (!successA && !successB && strictRevertData) { | |
| assertEq(returnDataA, returnDataB, "Call revert data does not match"); | |
| } | |
| if (!successA && successB) { | |
| emit log("Error: Calls were not equal"); | |
| emit log_named_bytes(" Left call revert data", returnDataA); | |
| emit log_named_bytes(" Right call return data", returnDataB); | |
| revert("assertion failed"); | |
| } | |
| if (successA && !successB) { | |
| emit log("Error: Calls were not equal"); | |
| emit log_named_bytes(" Left call return data", returnDataA); | |
| emit log_named_bytes(" Right call revert data", returnDataB); | |
| revert("assertion failed"); | |
| } | |
| } | |
| } | |