@@ -53,7 +53,7 @@ contract CFGTest is Test {
5353 }
5454
5555 function testBurnSelf (address user , uint256 mintAmount , uint256 burnAmount ) public {
56- vm.assume (user != address (this ) && user != address (0 ));
56+ vm.assume (user != address (this ) && user != address (0 ) && user != address (token) );
5757 burnAmount = bound (burnAmount, 0 , mintAmount);
5858
5959 assertEq (token.wards (user), 0 );
@@ -72,6 +72,7 @@ contract CFGTest is Test {
7272 uint256 transferAmount ,
7373 uint256 transferFromAmount ,
7474 uint256 burnAmount ,
75+ uint256 burnPermissionlessAmount ,
7576 address delegatee ,
7677 address user2 ,
7778 address delegatee2
@@ -84,6 +85,7 @@ contract CFGTest is Test {
8485 transferAmount = bound (transferAmount, 0 , mintAmount);
8586 transferFromAmount = bound (transferFromAmount, 0 , mintAmount - transferAmount);
8687 burnAmount = bound (burnAmount, 0 , mintAmount - transferAmount - transferFromAmount);
88+ burnPermissionlessAmount = bound (burnPermissionlessAmount, 0 , transferAmount + transferFromAmount);
8789
8890 token.mint (address (this ), mintAmount);
8991 assertEq (token.balanceOf (address (this )), mintAmount);
@@ -122,6 +124,14 @@ contract CFGTest is Test {
122124 assertEq (token.delegatee (user2), delegatee2);
123125 assertEq (token.delegatedVotingPower (delegatee), mintAmount - transferAmount - transferFromAmount - burnAmount);
124126 assertEq (token.delegatedVotingPower (delegatee2), transferAmount + transferFromAmount);
127+
128+ vm.prank (user2);
129+ token.burn (burnPermissionlessAmount);
130+
131+ assertEq (token.delegatee (address (this )), delegatee);
132+ assertEq (token.delegatee (user2), delegatee2);
133+ assertEq (token.delegatedVotingPower (delegatee), mintAmount - transferAmount - transferFromAmount - burnAmount);
134+ assertEq (token.delegatedVotingPower (delegatee2), transferAmount + transferFromAmount - burnPermissionlessAmount);
125135 }
126136
127137 function testDelegateWithSig (address delegatee ) public {
@@ -174,5 +184,20 @@ contract CFGTest is Test {
174184
175185 vm.expectRevert (IDelegationToken.DelegatesExpiredSignature.selector );
176186 token.delegateWithSig (delegation, Signature (v, r, s));
187+
188+ // Cannot use invalid signature
189+ delegation = Delegation (delegatee, token.delegationNonce (owner), block .timestamp );
190+
191+ (v, r, s) = vm.sign (
192+ privateKey,
193+ keccak256 (
194+ abi.encodePacked (
195+ "\x19\x02 " , token.DOMAIN_SEPARATOR (), keccak256 (abi.encode (token.DELEGATION_TYPEHASH (), delegation))
196+ )
197+ )
198+ );
199+
200+ vm.expectRevert (IDelegationToken.InvalidSignature.selector );
201+ token.delegateWithSig (delegation, Signature (v, bytes32 ("" ), bytes32 ("" )));
177202 }
178203}
0 commit comments