my-homelab-configs/labs/blockchain/test/Counter.t.sol

42 lines
1015 B
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import {Test} from "forge-std/Test.sol";
import {Counter} from "../src/Counter.sol";
contract CounterTest is Test {
Counter private counter;
address private owner = address(0xA11CE);
address private stranger = address(0xB0B);
function setUp() public {
vm.prank(owner);
counter = new Counter(41);
}
function testInitialNumberAndOwner() public view {
assertEq(counter.number(), 41);
assertEq(counter.owner(), owner);
}
function testOwnerCanSetNumber() public {
vm.prank(owner);
counter.setNumber(100);
assertEq(counter.number(), 100);
}
function testNonOwnerCannotSetNumber() public {
vm.prank(stranger);
vm.expectRevert(Counter.NotOwner.selector);
counter.setNumber(100);
}
function testAnyoneCanIncrement() public {
vm.prank(stranger);
counter.increment();
assertEq(counter.number(), 42);
}
}