// SPDX-License-Identifier: MIT pragma solidity 0.8.28; import "../lib/forge-std/src/Test.sol"; import { console } from "../lib/forge-std/src/console.sol"; import "../knlWallet.sol"; import "../Kanel42_token.sol"; contract KNLwalletTest is Test { Kanel42_token public token; knlWallet public wallet; address owner1 = address(1); address owner2 = address(2); address owner3 = address(3); address owner4 = address(4); address to = address(5); function setUp() public { address[] memory owners = new address[](4); owners[0] = owner1; owners[1] = owner2; owners[2] = owner3; owners[3] = owner4; wallet = new knlWallet(owners, 3); token = new Kanel42_token(); token.mint(10 * (10 ** token.decimals())); vm.prank(owner3); token.mint(4 * (10 ** token.decimals())); token.transfer(address(wallet), 4 * (10 ** token.decimals())); } function testAdd() public { vm.prank(owner1); wallet.addTransaction(payable(to), 1, address(token)); } function testConfirm() public { uint256 initialbalance = token.balanceOf(address(wallet)); uint256 initialbalanceTo = token.balanceOf(to); vm.prank(owner1); wallet.submitTransaction( payable(to), 1 * (10 ** 6), address(token) ); uint256 tr = wallet.transactionCount() - 1; vm.prank(owner2); wallet.confirmTransaction(tr); vm.prank(owner3); wallet.confirmTransaction(tr); uint256 finalBalance = token.balanceOf(address(wallet)); assertEq(token.balanceOf(to) - initialbalanceTo, 10 ** token.decimals()); assertEq(initialbalance - finalBalance, 1 * (10 ** token.decimals())); } }