mirror of
https://github.com/lux-amm/v4-periphery.git
synced 2026-10-30 20:54:39 +00:00
73 lines
3.0 KiB
Solidity
73 lines
3.0 KiB
Solidity
// SPDX-License-Identifier: UNLICENSED
|
|
pragma solidity ^0.8.24;
|
|
|
|
import "forge-std/Test.sol";
|
|
import {PoolKey} from "@luxamm/v4-core/src/types/PoolKey.sol";
|
|
import {PositionInfo, PositionInfoLibrary, PoolId} from "../../src/libraries/PositionInfoLibrary.sol";
|
|
|
|
contract PositionInfoLibraryTest is Test {
|
|
function setUp() public {}
|
|
|
|
function test_fuzz_initialize(PoolKey memory poolKey, int24 tickLower, int24 tickUpper) public pure {
|
|
PositionInfo info = PositionInfoLibrary.initialize(poolKey, tickLower, tickUpper);
|
|
|
|
assertEq(info.poolId(), bytes25(PoolId.unwrap(poolKey.toId())));
|
|
assertEq(info.tickLower(), tickLower);
|
|
assertEq(info.tickUpper(), tickUpper);
|
|
assertEq(info.hasSubscriber(), false);
|
|
}
|
|
|
|
function test_fuzz_initialize_setSubscribed(PoolKey memory poolKey, int24 tickLower, int24 tickUpper) public pure {
|
|
PositionInfo info = PositionInfoLibrary.initialize(poolKey, tickLower, tickUpper);
|
|
assertEq(info.hasSubscriber(), false);
|
|
info = info.setSubscribe();
|
|
assertEq(info.hasSubscriber(), true);
|
|
assertEq(info.tickLower(), tickLower);
|
|
assertEq(info.tickUpper(), tickUpper);
|
|
assertEq(info.poolId(), bytes25(PoolId.unwrap(poolKey.toId())));
|
|
}
|
|
|
|
function test_fuzz_initialize_setUnsubscribed(PoolKey memory poolKey, int24 tickLower, int24 tickUpper)
|
|
public
|
|
pure
|
|
{
|
|
PositionInfo info = PositionInfoLibrary.initialize(poolKey, tickLower, tickUpper);
|
|
assertEq(info.hasSubscriber(), false);
|
|
info = info.setSubscribe();
|
|
assertEq(info.hasSubscriber(), true);
|
|
assertEq(info.tickLower(), tickLower);
|
|
assertEq(info.tickUpper(), tickUpper);
|
|
assertEq(info.poolId(), bytes25(PoolId.unwrap(poolKey.toId())));
|
|
|
|
info = info.setUnsubscribe();
|
|
assertEq(info.hasSubscriber(), false);
|
|
assertEq(info.tickLower(), tickLower);
|
|
assertEq(info.tickUpper(), tickUpper);
|
|
assertEq(info.poolId(), bytes25(PoolId.unwrap(poolKey.toId())));
|
|
}
|
|
|
|
function test_fuzz_setSubscribe(PoolKey memory poolKey, int24 tickLower, int24 tickUpper) public pure {
|
|
PositionInfo info = PositionInfoLibrary.initialize(poolKey, tickLower, tickUpper);
|
|
assertEq(info.hasSubscriber(), false);
|
|
info = info.setSubscribe();
|
|
assertEq(info.hasSubscriber(), true);
|
|
|
|
// Calling set subscribe again does nothing.
|
|
info = info.setSubscribe();
|
|
assertEq(info.hasSubscriber(), true);
|
|
}
|
|
|
|
function test_fuzz_setUnsubscribe(PoolKey memory poolKey, int24 tickLower, int24 tickUpper) public pure {
|
|
PositionInfo info = PositionInfoLibrary.initialize(poolKey, tickLower, tickUpper);
|
|
assertEq(info.hasSubscriber(), false);
|
|
info = info.setSubscribe();
|
|
assertEq(info.hasSubscriber(), true);
|
|
info = info.setUnsubscribe();
|
|
assertEq(info.hasSubscriber(), false);
|
|
|
|
// Calling set unsubscribe again does nothing.
|
|
info = info.setUnsubscribe();
|
|
assertEq(info.hasSubscriber(), false);
|
|
}
|
|
}
|