62 lines
1.7 KiB
Solidity
62 lines
1.7 KiB
Solidity
// 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()));
|
|
}
|
|
}
|