TestTransferBalance.t.sol
1 pragma solidity >=0.6.0; 2 3 import "truffle/Assert.sol"; 4 import "./Base.t.sol"; 5 6 contract TestTransferBalance is Base { 7 8 function testTransferBalanceWithinLimits() public { 9 10 depositTokens(address(settings), 200e18); 11 depositTokens(address(this), 800e18); 12 13 TransferBalanceProposal p = new TransferBalanceProposal(); 14 p.setAmount(80e18); 15 16 (,ProposalWrapper w) = alpha.registerProposal(p, SIMPLE_MAJORITY, now + 10 days); 17 18 alpha.castVote(w, true); 19 beta.castVote(w, true); 20 gama.castVote(w, true); 21 22 (bool success,) = address(w).call( 23 abi.encodePacked( 24 w.close.selector 25 ) 26 ); 27 28 Assert.isTrue(success, "close should succed"); 29 30 Assert.equal(120e18, exchange.balanceOf(address(settings)), "settings balance"); 31 Assert.equal(800e18, exchange.balanceOf(address(this)), "self balance"); 32 Assert.equal(80e18, exchange.balanceOf(address(p)), "proposal balance"); 33 } 34 35 function testTransferBalanceAboveLimits() public { 36 37 depositTokens(address(settings), 200e18); 38 depositTokens(address(this), 600e18); 39 40 TransferBalanceProposal p = new TransferBalanceProposal(); 41 p.setAmount(201e18); 42 43 (,ProposalWrapper w) = alpha.registerProposal(p, SIMPLE_MAJORITY, now + 10 days); 44 45 alpha.castVote(w, true); 46 beta.castVote(w, true); 47 gama.castVote(w, true); 48 49 (bool success,) = address(w).call( 50 abi.encodePacked( 51 w.close.selector 52 ) 53 ); 54 55 Assert.isFalse(success, "close should fail"); 56 } 57 }