pragma solidity ^0.8.0;
import {Test} from "lib/forge-std/src/Test.sol";
import {console2} from "lib/forge-std/src/console2.sol";
import {ScoreBoard} from "../../src/ScoreBoard.sol";
import {ThePredicter} from "../../src/ThePredicter.sol";
contract Contract is Test {
struct Users {
User PRIVILEGED;
User ATTACKER;
User ______1______;
User ______2______;
User ______3______;
User ______4______;
}
Users ________Users;
struct User {
uint256 PRIVATE__KEY;
address ADDRESS;
}
struct Scope {
ScoreBoard ______ScoreBoard______;
ThePredicter ______ThePredicter______;
}
Scope ________Scope;
function setUp() public {
{
vm.warp(1723752000 - 1 days);
}
{
(________Users.PRIVILEGED.ADDRESS, ________Users.PRIVILEGED.PRIVATE__KEY) = makeAddrAndKey(" PRIVILEGED ");
(________Users.ATTACKER.ADDRESS, ________Users.ATTACKER.PRIVATE__KEY) = makeAddrAndKey(" ATTACKER ");
(________Users.______1______.ADDRESS, ________Users.______1______.PRIVATE__KEY) = makeAddrAndKey(" User 1 ");
(________Users.______2______.ADDRESS, ________Users.______2______.PRIVATE__KEY) = makeAddrAndKey(" User 2 ");
(________Users.______3______.ADDRESS, ________Users.______3______.PRIVATE__KEY) = makeAddrAndKey(" User 3 ");
(________Users.______4______.ADDRESS, ________Users.______4______.PRIVATE__KEY) = makeAddrAndKey(" User 4 ");
}
{
{
vm.startPrank(________Users.PRIVILEGED.ADDRESS);
________Scope.______ScoreBoard______ = new ScoreBoard();
vm.stopPrank();
}
{
vm.startPrank(________Users.PRIVILEGED.ADDRESS);
________Scope.______ThePredicter______ = new ThePredicter({_scoreBoard: address(________Scope.______ScoreBoard______), _entranceFee: uint256(0.04 ether), _predictionFee: uint256(0.0001 ether)});
vm.stopPrank();
}
}
{
{
vm.startPrank(________Users.PRIVILEGED.ADDRESS);
________Scope.______ScoreBoard______.setThePredicter({_thePredicter: address(________Scope.______ThePredicter______)});
vm.stopPrank();
}
}
{
{
address USER = address(________Users.ATTACKER.ADDRESS);
uint256 AMOUNT__OF__ETH = (100) * (10 ** 18);
deal(address(USER), AMOUNT__OF__ETH);
}
}
{}
}
function test________1() public {
require((________Scope.______ScoreBoard______.READ______ScoreBoard______playersPredictions(________Users.ATTACKER.ADDRESS).predictionsCount) == (0), unicode" ⛔️ ");
require((________Scope.______ThePredicter______.READ______ThePredicter______playersStatus(________Users.ATTACKER.ADDRESS)) == (ThePredicter.Status.Unknown), unicode" ⛔️ ");
{
vm.startPrank(________Users.ATTACKER.ADDRESS);
________Scope.______ThePredicter______.makePrediction{value: 0.0001 ether}({matchNumber: uint256(1), prediction: ScoreBoard.Result.Draw});
vm.stopPrank();
}
require((________Scope.______ScoreBoard______.READ______ScoreBoard______playersPredictions(________Users.ATTACKER.ADDRESS).predictionsCount) == (1), unicode" ⛔️ ");
}
}