MultiplierFuzzTest.t.sol
June 15, 2023 ยท View on GitHub
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0;
import "forge-std/Test.sol"; import "src/lib/Multiplier.sol";
contract FuzzMultiplierTest is Test { function testZ__FuzzMultiplier(uint40 time, uint24 timeGap, uint64 _lastMul, uint64 _fee) public { time = uint40(bound(time, 1500000000, 2500000000)); vm.warp(time); uint fee = bound(_fee, 0, 1e18); uint lastMul = bound(_lastMul, 0, 1e18); ( uint256 trackedTimestamp, uint256 trackedMultiplier, uint256 newFeeAccrued, uint256 currentMultiplier ) = Multiplier.computeMultiplier(0, lastMul, fee); console.log(trackedTimestamp, trackedMultiplier, newFeeAccrued, currentMultiplier); assertLe(currentMultiplier, trackedMultiplier, "curr <= tracked"); assertLe(trackedMultiplier, lastMul, "tracked <= last"); assertGe(trackedTimestamp, time - 1 days, "tracked >= oldTime"); assertLe(trackedTimestamp, time, "tracked <= time"); assertLe(newFeeAccrued, 1e18, "newFeeAccrued <= 1e18");
vm.warp(time + timeGap);
(
uint trackedTimestamp2,
uint trackedMultiplier2,
uint newFeeAccrued2,
uint currentMultiplier2
) = Multiplier.computeMultiplier(trackedTimestamp, trackedMultiplier, fee);
console.log(trackedTimestamp2, trackedMultiplier2, newFeeAccrued2, currentMultiplier2);
assertLe(currentMultiplier2, currentMultiplier, "curr");
assertLe(trackedMultiplier2, trackedMultiplier, "tracked");
assertGe(trackedTimestamp2, block.timestamp - 1 days, "tracked >= oldTime");
assertLe(trackedTimestamp2, block.timestamp, "tracked <= newTime");
}
}