Files
v4-periphery/test/libraries/PositionInfoLibrary.t.sol

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);
}
}