Skip to content

Commit d9a9574

Browse files
authored
use bound function instead of handrolled approach (#50)
1 parent 5ceb830 commit d9a9574

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

test/QueryResponse.t.sol

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -664,38 +664,38 @@ contract TestQueryResponse is Test {
664664
queryResponse.verifyQueryResponseSignatures(resp, signatures);
665665
}
666666

667-
function testFuzz_validateBlockTime_success(uint64 _blockTime, uint64 _minBlockTime) public view {
668-
_blockTime %= type(uint64).max/1_000_000 + 1;
669-
_minBlockTime %= type(uint64).max/1_000_000 + 1;
670-
if (_minBlockTime > type(uint64).max/1_000_000 - _blockTime)
671-
_blockTime %= type(uint64).max/1_000_000 - _minBlockTime + 1;
667+
uint64 constant private SECOND_RESOLUTION = 1_000_000;
668+
uint64 constant private MAX_SECONDS = type(uint64).max/SECOND_RESOLUTION;
672669

673-
_blockTime += _minBlockTime;
670+
function testFuzz_validateBlockTime_success(uint64 _blockTime, uint64 _minBlockTime) public view {
671+
//assure: blockTime >= minBlockTime
672+
_minBlockTime = uint64(bound(_minBlockTime, 0, MAX_SECONDS));
673+
_blockTime = uint64(bound(_blockTime, _minBlockTime, MAX_SECONDS));
674674

675-
queryResponse.validateBlockTime(uint64(_blockTime * 1_000_000), _minBlockTime);
675+
queryResponse.validateBlockTime(_blockTime * SECOND_RESOLUTION, _minBlockTime);
676676
}
677677

678-
function testFuzz_validateBlockTime_fail(uint64 _blockTime, uint64 _minBlockTime) public {
679-
_minBlockTime %= type(uint64).max/1_000_000 + 1;
678+
function testFuzz_validateBlockTime_fail(uint64 _blockTime, uint256 _minBlockTime) public {
679+
//assure: blockTime < minBlockTime
680680
vm.assume(_minBlockTime > 0);
681-
_blockTime %= _minBlockTime;
681+
uint upperBound = _minBlockTime <= MAX_SECONDS ? _minBlockTime-1 : MAX_SECONDS;
682+
_blockTime = uint64(bound(_blockTime, 0, upperBound));
682683

683684
vm.expectRevert(StaleBlockTime.selector);
684-
queryResponse.validateBlockTime(uint64(_blockTime * 1_000_000), _minBlockTime);
685+
queryResponse.validateBlockTime(_blockTime * SECOND_RESOLUTION, _minBlockTime);
685686
}
686687

687688
function testFuzz_validateBlockNum_success(uint64 _blockNum, uint64 _minBlockNum) public view {
688-
if (_minBlockNum > type(uint64).max - _blockNum) //can't safely add _minBlockNum
689-
_blockNum %= type(uint64).max - _minBlockNum + 1; //prevent overflow
690-
691-
_blockNum += _minBlockNum;
689+
//assure: blockNum >= minBlockNum
690+
_blockNum = uint64(bound(_blockNum, _minBlockNum, type(uint64).max));
692691

693692
queryResponse.validateBlockNum(_blockNum, _minBlockNum);
694693
}
695694

696695
function testFuzz_validateBlockNum_fail(uint256 _blockNum, uint256 _minBlockNum) public {
696+
//assure: blockNum < minBlockNum
697697
vm.assume(_minBlockNum > 0);
698-
_blockNum %= _minBlockNum;
698+
_blockNum = uint64(bound(_blockNum, 0, _minBlockNum-1));
699699

700700
vm.expectRevert(StaleBlockNum.selector);
701701
queryResponse.validateBlockNum(uint64(_blockNum), _minBlockNum);

0 commit comments

Comments
 (0)