@@ -21,6 +21,14 @@ abstract contract OwnerFreezableOwnerFreezeUntilTest is Test {
2121 assertEq (sOwnerFreezable.ownerFrozenUntil (), expectedFreeze);
2222 }
2323
24+ function checkOwnerFreezeAlwaysAllowFrom (address from , uint256 protectUntil , uint256 expectedProtect ) internal {
25+ vm.prank (sAlice);
26+ vm.expectEmit (true , true , true , true );
27+ emit IOwnerFreezableV1.OwnerFreezeAlwaysAllowedFrom (sAlice, from, protectUntil, expectedProtect);
28+ sOwnerFreezable.ownerFreezeAlwaysAllowFrom (from, protectUntil);
29+ assertEq (sOwnerFreezable.ownerFreezeAlwaysAllowedFrom (from), expectedProtect);
30+ }
31+
2432 function testOwnerIsAlice () external {
2533 assertEq (sOwnerFreezable.owner (), sAlice);
2634 }
@@ -84,9 +92,7 @@ abstract contract OwnerFreezableOwnerFreezeUntilTest is Test {
8492 sOwnerFreezable.ownerFreezeAlwaysAllowFrom (from, protectUntil);
8593 assertEq (sOwnerFreezable.ownerFreezeAlwaysAllowedFrom (from), 0 );
8694
87- vm.prank (sAlice);
88- sOwnerFreezable.ownerFreezeAlwaysAllowFrom (from, protectUntil);
89- assertEq (sOwnerFreezable.ownerFreezeAlwaysAllowedFrom (from), protectUntil);
95+ checkOwnerFreezeAlwaysAllowFrom (from, protectUntil, protectUntil);
9096 }
9197
9298 /// Calling ownerFreezeAlwaysAllowFrom with a zero protectUntil reverts.
@@ -95,4 +101,22 @@ abstract contract OwnerFreezableOwnerFreezeUntilTest is Test {
95101 vm.prank (sAlice);
96102 sOwnerFreezable.ownerFreezeAlwaysAllowFrom (from, 0 );
97103 }
104+
105+ /// Calling ownerFreezeAlwaysAllowFrom twice with increasing times always uses newer times.
106+ function testOwnerFreezableAlwaysAllowFromIncrement (address from , uint256 a , uint256 b ) external {
107+ vm.assume (a != 0 );
108+ b = bound (b, a, type (uint256 ).max);
109+
110+ checkOwnerFreezeAlwaysAllowFrom (from, a, a);
111+ checkOwnerFreezeAlwaysAllowFrom (from, b, b);
112+ }
113+
114+ /// Calling ownerFreezeAlwaysAllowFrom twice with decreasing times retains the first time.
115+ function testOwnerFreezableAlwaysAllowFromDecrement (address from , uint256 a , uint256 b ) external {
116+ vm.assume (a != 0 );
117+ b = bound (b, 1 , a);
118+
119+ checkOwnerFreezeAlwaysAllowFrom (from, a, a);
120+ checkOwnerFreezeAlwaysAllowFrom (from, b, a);
121+ }
98122}
0 commit comments