Compare commits
No commits in common. "1e797518093ed58ed693b870825e8802d7bf7d96" and "247dfad12d32cd253848e41e5eb73a06799511d1" have entirely different histories.
1e79751809
...
247dfad12d
@ -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
19
script/Counter.s.sol
Normal 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
14
src/Counter.sol
Normal 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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
24
src/NFT.sol
24
src/NFT.sol
@ -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
24
test/Counter.t.sol
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user