FoundryTesting/test/Time.t.sol

61 lines
1.4 KiB
Solidity
Raw Normal View History

2023-09-25 04:08:50 +00:00
pragma solidity ^0.8.20;
import "forge-std/Test.sol";
import {Auction} from "../src/Time.sol";
contract TimeTest is Test {
Auction public auction;
uint256 private startAt;
// vm.warp - set block.timestamp to future timestamp
// vm.roll - set block.number
// skip - increment current timestamp
// rewind - decrement current timestamp
function setUp() public {
auction = new Auction();
startAt = block.timestamp;
}
function testBidFailsBeforeStartTime() public {
vm.expectRevert(bytes("cannot bid"));
auction.bid();
}
function testBid() public {
vm.warp(startAt + 1 days);
auction.bid();
}
function testBidFailsAfterEndTime() public {
vm.expectRevert(bytes("cannot bid"));
vm.warp(startAt + 2 days);
auction.bid();
}
function testAuctionEnds() public {
vm.warp(startAt + 3 days);
auction.end();
}
function testTimestamp() public {
uint t = block.timestamp;
// skip - increment current timestamp
skip(100);
assertEq(block.timestamp, t + 100);
// rewind - decrement current timestamp
rewind(10);
assertEq(block.timestamp, t + 100 - 10);
}
function testBlockNumber() public {
// vm.roll - set block.number
uint b = block.number;
vm.roll(999);
assertEq(block.number, 999);
}
}