// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; import "forge-std/Test.sol"; import {Main} from "../src/Main.sol"; import {Unaboomer} from "../src/Unaboomer.sol"; import {Mailbomb} from "../src/Mailbomb.sol"; contract UnaboomerTest is Test { Main public main; Unaboomer public boomr; Mailbomb public bomb; function setUp() public { main = new Main(); boomr = new Unaboomer(); bomb = new Mailbomb(); boomr.setMainContract(address(main)); bomb.setMainContract(address(main)); main.setUnaboomerContract(address(boomr)); main.setMailbombContract(address(bomb)); } function testBasicMechanics() public { address t1 = address(1); address t2 = address(2); // mint 20 boomers - should have 20 BOOMR and 40 BOMB hoax(t1); main.radicalizeBoomers{value: .2 ether}(20); assertEq(boomr.totalSupply(), 20); assertEq(boomr.balanceOf(t1), 20); assertEq(bomb.bombsAssembled(), 40); assertEq(bomb.balanceOf(t1, 1), 40); // mint 20 more bombs - should have 60 BOMB hoax(t1); main.assembleBombs{value: .2 ether}(20); assertEq(bomb.bombsAssembled(), 60); assertEq(bomb.balanceOf(t1, 1), 60); // mint 20 more boomers as other address - supplies should line up hoax(t2); main.radicalizeBoomers{value: .2 ether}(20); assertEq(boomr.totalSupply(), 40); assertEq(boomr.balanceOf(t2), 20); assertEq(bomb.bombsAssembled(), 100); assertEq(bomb.balanceOf(t2, 1), 40); // sending bombs should change supplies and update kill count hoax(t1); main.sendBombs(40); assertEq(bomb.balanceOf(t1, 1), 20); assertEq(boomr.killCount() > 0, true); console.log(boomr.killCount()); } // function testX() public {} }