Compare commits

..

No commits in common. "1e797518093ed58ed693b870825e8802d7bf7d96" and "247dfad12d32cd253848e41e5eb73a06799511d1" have entirely different histories.

5 changed files with 59 additions and 26 deletions

View File

@ -3,8 +3,8 @@ src = "src"
out = "out" out = "out"
libs = ["lib", "dependencies"] libs = ["lib", "dependencies"]
remappings = [ remappings = [
"openzeppelin-contracts/=dependencies/@openzeppelin-contracts-5.2.0/", "@openzeppelin-contracts/=dependencies/@openzeppelin-contracts-5.2.0/",
"solmate/=dependencies/solmate-6.8.0/src/", "solmate/=dependencies/solmate-6.8.0/",
] ]
[dependencies] [dependencies]

19
script/Counter.s.sol Normal file
View File

@ -0,0 +1,19 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
import {Script, console} from "forge-std/Script.sol";
import {Counter} from "../src/Counter.sol";
contract CounterScript is Script {
Counter public counter;
function setUp() public {}
function run() public {
vm.startBroadcast();
counter = new Counter();
vm.stopBroadcast();
}
}

14
src/Counter.sol Normal file
View File

@ -0,0 +1,14 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
contract Counter {
uint256 public number;
function setNumber(uint256 newNumber) public {
number = newNumber;
}
function increment() public {
number++;
}
}

View File

@ -1,24 +0,0 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.28;
import {ERC721} from "solmate/tokens/ERC721.sol";
import {Strings} from "openzeppelin-contracts/utils/Strings.sol";
contract NFT is ERC721 {
uint256 public currentTokenId;
constructor(
string memory _name,
string memory _symbol
) ERC721(_name, _symbol) {}
function mintTo(address recipient) public payable returns (uint256) {
uint256 newItemId = ++currentTokenId;
_safeMint(recipient, newItemId);
return newItemId;
}
function tokenURI(uint256 id) public view virtual override returns (string memory) {
return Strings.toString(id);
}
}

24
test/Counter.t.sol Normal file
View File

@ -0,0 +1,24 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
import {Test, console} from "forge-std/Test.sol";
import {Counter} from "../src/Counter.sol";
contract CounterTest is Test {
Counter public counter;
function setUp() public {
counter = new Counter();
counter.setNumber(0);
}
function test_Increment() public {
counter.increment();
assertEq(counter.number(), 1);
}
function testFuzz_SetNumber(uint256 x) public {
counter.setNumber(x);
assertEq(counter.number(), x);
}
}