/ test / governance / ProtocolSettings / TestTransferBalance.t.sol
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  }