mirror of
https://github.com/lux-amm/v4-core.git
synced 2026-10-30 20:54:53 +00:00
89 lines
3.1 KiB
Solidity
89 lines
3.1 KiB
Solidity
// SPDX-License-Identifier: UNLICENSED
|
|
pragma solidity ^0.8.20;
|
|
|
|
import "../../src/libraries/LPFeeLibrary.sol";
|
|
import "forge-std/Test.sol";
|
|
|
|
contract LPFeeLibraryTest is Test {
|
|
function test_isDynamicFee_returnsTrue() public pure {
|
|
uint24 dynamicFee = 0x800000;
|
|
assertTrue(LPFeeLibrary.isDynamicFee(dynamicFee));
|
|
}
|
|
|
|
function test_isDynamicFee_returnsFalse_forOtherValues() public pure {
|
|
uint24 dynamicFee = 0xFFFFFF;
|
|
assertFalse(LPFeeLibrary.isDynamicFee(dynamicFee));
|
|
dynamicFee = 0x7FFFFF;
|
|
assertFalse(LPFeeLibrary.isDynamicFee(dynamicFee));
|
|
dynamicFee = 0;
|
|
assertFalse(LPFeeLibrary.isDynamicFee(dynamicFee));
|
|
dynamicFee = 0x800001;
|
|
assertFalse(LPFeeLibrary.isDynamicFee(dynamicFee));
|
|
}
|
|
|
|
function test_fuzz_isDynamicFee(uint24 fee) public pure {
|
|
assertEq(fee == LPFeeLibrary.DYNAMIC_FEE_FLAG, LPFeeLibrary.isDynamicFee(fee));
|
|
}
|
|
|
|
function test_validate_doesNotRevertWithNoFee() public pure {
|
|
uint24 fee = 0;
|
|
LPFeeLibrary.validate(fee);
|
|
}
|
|
|
|
function test_validate_doesNotRevert() public pure {
|
|
uint24 fee = 500000; // 50%
|
|
LPFeeLibrary.validate(fee);
|
|
}
|
|
|
|
function test_validate_doesNotRevertWithMaxFee() public pure {
|
|
uint24 maxFee = 1000000; // 100%
|
|
LPFeeLibrary.validate(maxFee);
|
|
}
|
|
|
|
function test_validate_revertsWithLPFeeTooLarge() public {
|
|
uint24 fee = 1000001;
|
|
vm.expectRevert(abi.encodeWithSelector(LPFeeLibrary.LPFeeTooLarge.selector, fee));
|
|
LPFeeLibrary.validate(fee);
|
|
}
|
|
|
|
function test_fuzz_validate(uint24 fee) public {
|
|
if (fee > 1000000) {
|
|
vm.expectRevert(abi.encodeWithSelector(LPFeeLibrary.LPFeeTooLarge.selector, fee));
|
|
}
|
|
LPFeeLibrary.validate(fee);
|
|
}
|
|
|
|
function test_getInitialLPFee_forStaticFeeIsCorrect() public pure {
|
|
uint24 staticFee = 3000; // 30 bps
|
|
assertEq(LPFeeLibrary.getInitialLPFee(staticFee), staticFee);
|
|
}
|
|
|
|
function test_getInitialLPFee_revertsWithLPFeeTooLarge_forStaticFee() public {
|
|
uint24 staticFee = 1000001;
|
|
vm.expectRevert(abi.encodeWithSelector(LPFeeLibrary.LPFeeTooLarge.selector, staticFee));
|
|
LPFeeLibrary.getInitialLPFee(staticFee);
|
|
}
|
|
|
|
function test_getInitialLPFee_forDynamicFeeIsZero() public pure {
|
|
uint24 dynamicFee = 0x800000;
|
|
assertEq(LPFeeLibrary.getInitialLPFee(dynamicFee), 0);
|
|
}
|
|
|
|
function test_getInitialLpFee_revertsWithNonExactDynamicFee() public {
|
|
uint24 dynamicFee = 0x800001;
|
|
vm.expectRevert(abi.encodeWithSelector(LPFeeLibrary.LPFeeTooLarge.selector, dynamicFee));
|
|
LPFeeLibrary.getInitialLPFee(dynamicFee);
|
|
}
|
|
|
|
function test_fuzz_getInitialLPFee(uint24 fee) public {
|
|
if (fee == LPFeeLibrary.DYNAMIC_FEE_FLAG) {
|
|
assertEq(LPFeeLibrary.getInitialLPFee(fee), 0);
|
|
} else if (fee > 1000000) {
|
|
vm.expectRevert(abi.encodeWithSelector(LPFeeLibrary.LPFeeTooLarge.selector, fee));
|
|
LPFeeLibrary.getInitialLPFee(fee);
|
|
} else {
|
|
assertEq(LPFeeLibrary.getInitialLPFee(fee), fee);
|
|
}
|
|
}
|
|
}
|