61 lines
1.4 KiB
Solidity
61 lines
1.4 KiB
Solidity
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);
|
|
}
|
|
|
|
}
|