🏗️」 wip: seemingly working smart contract

This commit is contained in:
2025-07-28 20:31:21 +02:00
parent d90cdf825e
commit 443a5a4099
2 changed files with 63 additions and 9 deletions

View File

@ -1,11 +1,45 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8;
pragma solidity 0.8.28;
struct score {
string p1;
string p2;
uint128 p1Score;
uint128 p2Score;
}
contract scoreStore {
uint16 test = 0;
address public owner;
uint public lastId;
mapping (uint => score) public scores;
function up(uint16 plus) public {
test += plus;
constructor() {
owner = msg.sender;
lastId = 0;
}
modifier ownerOnly {
require(msg.sender == owner, "Need to be contract owner");
_;
}
function addScore(string memory p1, string memory p2, uint128 p1Score, uint128 p2Score) external ownerOnly returns (uint id) {
score memory s;
s.p1 = p1;
s.p2 = p2;
s.p1Score = p1Score;
s.p2Score = p2Score;
scores[lastId] = s;
id = lastId;
lastId++;
return (id);
}
function getScore(uint id) external view returns (score memory) {
return scores[id];
}
}

View File

@ -1,13 +1,33 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8;
pragma solidity 0.8.28;
import "src/contract/main.sol";
import "forge-std/Test.sol";
contract mainTest is Test, scoreStore {
function testUp() public {
up(2);
assertEq(test, 2);
contract scoreStoreTest is Test {
scoreStore scoreS;
address nonOwner = address(1);
function setUp() public {
scoreS = new scoreStore();
}
function testAddScore() public {
uint id = scoreS.addScore("omg", "test", 5, 8);
score memory s = scoreS.getScore(id);
assertEq(s.p1, "omg");
assertEq(s.p2, "test");
assertEq(s.p1Score, 5);
assertEq(s.p2Score, 8);
id = scoreS.addScore("ahhhhh", "test", 5, 8);
s = scoreS.getScore(id);
assertEq(s.p1, "ahhhhh");
assertEq(s.p2, "test");
assertEq(s.p1Score, 5);
assertEq(s.p2Score, 8);
}
}