Skip to content

Commit 938be10

Browse files
committed
remove vm assume
1 parent 7c370a0 commit 938be10

File tree

4 files changed

+78
-36
lines changed

4 files changed

+78
-36
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
24110
1+
24179

foundry.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ ffi = true
77
fs_permissions = [{ access = "read-write", path = ".forge-snapshots/"}]
88
evm_version = "cancun"
99
gas_limit = "3000000000"
10-
fuzz.runs = 10_000
10+
fuzz.runs = 1000
1111
bytecode_hash = "none"
1212

1313
[profile.debug]

test/position-managers/NativeToken.t.sol

Lines changed: 75 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import {PosmTestSetup} from "../shared/PosmTestSetup.sol";
3434
import {Planner, Plan} from "../shared/Planner.sol";
3535
import {PositionConfig} from "../shared/PositionConfig.sol";
3636

37-
contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
37+
contract NativeTokenPoolManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
3838
using FixedPointMathLib for uint256;
3939
using CurrencyLibrary for Currency;
4040
using Planner for Plan;
@@ -66,8 +66,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
6666
}
6767

6868
function test_fuzz_mint_native(IPoolManager.ModifyLiquidityParams memory params) public {
69+
// two-sided liquidity
70+
params.tickLower =
71+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
72+
params.tickUpper =
73+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
6974
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
70-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
7175

7276
uint256 liquidityToAdd =
7377
params.liquidityDelta < 0 ? uint256(-params.liquidityDelta) : uint256(params.liquidityDelta);
@@ -99,8 +103,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
99103

100104
// minting with excess native tokens are returned to caller
101105
function test_fuzz_mint_native_excess_withClose(IPoolManager.ModifyLiquidityParams memory params) public {
106+
// two-sided liquidity
107+
params.tickLower =
108+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
109+
params.tickUpper =
110+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
102111
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
103-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
104112

105113
uint256 liquidityToAdd =
106114
params.liquidityDelta < 0 ? uint256(-params.liquidityDelta) : uint256(params.liquidityDelta);
@@ -154,8 +162,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
154162
}
155163

156164
function test_fuzz_mint_native_excess_withSettlePair(IPoolManager.ModifyLiquidityParams memory params) public {
165+
// two-sided liquidity
166+
params.tickLower =
167+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
168+
params.tickUpper =
169+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
157170
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
158-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
159171

160172
uint256 liquidityToAdd =
161173
params.liquidityDelta < 0 ? uint256(-params.liquidityDelta) : uint256(params.liquidityDelta);
@@ -211,8 +223,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
211223
uint256 balance0Start = address(this).balance;
212224
uint256 balance1Start = currency1.balanceOfSelf();
213225

226+
// two-sided liquidity
227+
params.tickLower =
228+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
229+
params.tickUpper =
230+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
214231
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
215-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
216232

217233
uint256 liquidityToAdd =
218234
params.liquidityDelta < 0 ? uint256(-params.liquidityDelta) : uint256(params.liquidityDelta);
@@ -264,8 +280,11 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
264280
uint256 balance0Start = address(this).balance;
265281
uint256 balance1Start = currency1.balanceOfSelf();
266282

283+
params.tickLower =
284+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
285+
params.tickUpper =
286+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
267287
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
268-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
269288

270289
uint256 liquidityToAdd =
271290
params.liquidityDelta < 0 ? uint256(-params.liquidityDelta) : uint256(params.liquidityDelta);
@@ -322,8 +341,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
322341
uint256 balance0Start = address(this).balance;
323342
uint256 balance1Start = currency1.balanceOfSelf();
324343

344+
// two-sided liquidity
345+
params.tickLower =
346+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
347+
params.tickUpper =
348+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
325349
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
326-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
327350

328351
uint256 liquidityToAdd =
329352
params.liquidityDelta < 0 ? uint256(-params.liquidityDelta) : uint256(params.liquidityDelta);
@@ -370,8 +393,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
370393
uint256 balance0Start = address(this).balance;
371394
uint256 balance1Start = currency1.balanceOfSelf();
372395

396+
// two-sided liquidity
397+
params.tickLower =
398+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
399+
params.tickUpper =
400+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
373401
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
374-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
375402

376403
uint256 liquidityToAdd =
377404
params.liquidityDelta < 0 ? uint256(-params.liquidityDelta) : uint256(params.liquidityDelta);
@@ -461,8 +488,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
461488
public
462489
{
463490
// fuzz for the range
491+
// two-sided liquidity
492+
params.tickLower =
493+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
494+
params.tickUpper =
495+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
464496
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
465-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
466497

467498
// TODO: figure out if we can fuzz the increase liquidity delta. we're annoyingly getting TickLiquidityOverflow
468499
uint256 liquidityToAdd = 1e18;
@@ -512,8 +543,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
512543
public
513544
{
514545
// fuzz for the range
546+
// two-sided liquidity
547+
params.tickLower =
548+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
549+
params.tickUpper =
550+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
515551
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
516-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
517552

518553
// TODO: figure out if we can fuzz the increase liquidity delta. we're annoyingly getting TickLiquidityOverflow
519554
uint256 liquidityToAdd = 1e18;
@@ -562,8 +597,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
562597
IPoolManager.ModifyLiquidityParams memory params,
563598
uint256 decreaseLiquidityDelta
564599
) public {
600+
// two-sided liquidity
601+
params.tickLower =
602+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
603+
params.tickUpper =
604+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
565605
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
566-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
567606
decreaseLiquidityDelta = bound(decreaseLiquidityDelta, 1, uint256(params.liquidityDelta));
568607

569608
PositionConfig memory config =
@@ -599,8 +638,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
599638
IPoolManager.ModifyLiquidityParams memory params,
600639
uint256 decreaseLiquidityDelta
601640
) public {
641+
// two-sided liquidity
642+
params.tickLower =
643+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
644+
params.tickUpper =
645+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
602646
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
603-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
604647
decreaseLiquidityDelta = bound(decreaseLiquidityDelta, 1, uint256(params.liquidityDelta));
605648

606649
PositionConfig memory config =
@@ -639,8 +682,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
639682
}
640683

641684
function test_fuzz_collect_native_withClose(IPoolManager.ModifyLiquidityParams memory params) public {
685+
// two-sided liquidity
686+
params.tickLower =
687+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
688+
params.tickUpper =
689+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
642690
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
643-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
644691

645692
PositionConfig memory config =
646693
PositionConfig({poolKey: nativeKey, tickLower: params.tickLower, tickUpper: params.tickUpper});
@@ -665,8 +712,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
665712
}
666713

667714
function test_fuzz_collect_native_withTakePair(IPoolManager.ModifyLiquidityParams memory params) public {
715+
// two-sided liquidity
716+
params.tickLower =
717+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
718+
params.tickUpper =
719+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
668720
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
669-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
670721

671722
PositionConfig memory config =
672723
PositionConfig({poolKey: nativeKey, tickLower: params.tickLower, tickUpper: params.tickUpper});
@@ -698,8 +749,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
698749
function test_fuzz_collect_native_withTakePair_addressRecipient(IPoolManager.ModifyLiquidityParams memory params)
699750
public
700751
{
752+
// two-sided liquidity
753+
params.tickLower =
754+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
755+
params.tickUpper =
756+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
701757
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
702-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
703758

704759
PositionConfig memory config =
705760
PositionConfig({poolKey: nativeKey, tickLower: params.tickLower, tickUpper: params.tickUpper});
@@ -741,8 +796,12 @@ contract PositionManagerTest is Test, PosmTestSetup, LiquidityFuzzers {
741796
function test_fuzz_collect_native_withTakePair_msgSenderRecipient(IPoolManager.ModifyLiquidityParams memory params)
742797
public
743798
{
799+
// two-sided liquidity
800+
params.tickLower =
801+
int24(bound(params.tickLower, TickMath.minUsableTick(nativeKey.tickSpacing), -nativeKey.tickSpacing));
802+
params.tickUpper =
803+
int24(bound(params.tickUpper, nativeKey.tickSpacing, TickMath.maxUsableTick(nativeKey.tickSpacing)));
744804
params = createFuzzyLiquidityParams(nativeKey, params, SQRT_PRICE_1_1);
745-
vm.assume(params.tickLower < 0 && 0 < params.tickUpper); // two-sided liquidity
746805

747806
PositionConfig memory config =
748807
PositionConfig({poolKey: nativeKey, tickLower: params.tickLower, tickUpper: params.tickUpper});

test/position-managers/PositionManager.modifyLiquidities.t.sol

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -847,24 +847,7 @@ contract PositionManagerModifyLiquiditiesTest is Test, PosmTestSetup, LiquidityF
847847
bips = bound(bips, 1, 10_000);
848848
MockFOT(address(fotToken)).setFee(bips);
849849

850-
tickLower = int24(
851-
bound(
852-
tickLower,
853-
fotKey.tickSpacing * (TickMath.MIN_TICK / fotKey.tickSpacing),
854-
fotKey.tickSpacing * (TickMath.MAX_TICK / fotKey.tickSpacing)
855-
)
856-
);
857-
tickUpper = int24(
858-
bound(
859-
tickUpper,
860-
fotKey.tickSpacing * (TickMath.MIN_TICK / fotKey.tickSpacing),
861-
fotKey.tickSpacing * (TickMath.MAX_TICK / fotKey.tickSpacing)
862-
)
863-
);
864-
865-
tickLower = fotKey.tickSpacing * (tickLower / fotKey.tickSpacing);
866-
tickUpper = fotKey.tickSpacing * (tickUpper / fotKey.tickSpacing);
867-
vm.assume(tickUpper > tickLower);
850+
(tickLower, tickUpper) = boundTicks(fotKey, tickLower, tickUpper);
868851

869852
(uint160 sqrtPriceX96,,,) = manager.getSlot0(fotKey.toId());
870853
uint128 maxLiquidityPerTick = Pool.tickSpacingToMaxLiquidityPerTick(fotKey.tickSpacing);

0 commit comments

Comments
 (0)