|
1 | 1 | // SPDX-License-Identifier: GPL-2.0-or-later
|
2 | 2 | pragma solidity ^0.8.24;
|
3 | 3 |
|
4 |
| -import {EulerSwapTestBase, EulerSwap, EulerSwapPeriphery} from "./EulerSwapTestBase.t.sol"; |
| 4 | +import {EulerSwapTestBase, EulerSwap, EulerSwapPeriphery, IEulerSwap} from "./EulerSwapTestBase.t.sol"; |
| 5 | +import {EulerSwapMock} from "./mocks/EulerSwapMock.sol"; |
5 | 6 |
|
6 | 7 | contract EulerSwapPeripheryTest is EulerSwapTestBase {
|
7 | 8 | EulerSwap public eulerSwap;
|
| 9 | + EulerSwapMock public eulerSwapMock; |
8 | 10 |
|
9 | 11 | function setUp() public virtual override {
|
10 | 12 | super.setUp();
|
11 | 13 |
|
12 | 14 | eulerSwap = createEulerSwap(50e18, 50e18, 0, 1e18, 1e18, 0.4e18, 0.85e18);
|
| 15 | + |
| 16 | + IEulerSwap.Params memory params = getEulerSwapParams(50e18, 50e18, 0.4e18); |
| 17 | + IEulerSwap.CurveParams memory curveParams = IEulerSwap.CurveParams({ |
| 18 | + priceX: 1e18, |
| 19 | + priceY: 1e18, |
| 20 | + concentrationX: 0.85e18, |
| 21 | + concentrationY: 0.85e18 |
| 22 | + }); |
| 23 | + |
| 24 | + eulerSwapMock = new EulerSwapMock(params, curveParams); // Use the mock EulerSwap contract with a public f() function |
13 | 25 | }
|
14 | 26 |
|
15 | 27 | function test_SwapExactIn() public {
|
@@ -69,4 +81,17 @@ contract EulerSwapPeripheryTest is EulerSwapTestBase {
|
69 | 81 | periphery.swapExactOut(address(eulerSwap), address(assetTST), address(assetTST2), amountOut * 2, amountIn);
|
70 | 82 | vm.stopPrank();
|
71 | 83 | }
|
| 84 | + |
| 85 | + function test_fInverseFuzz(uint256 x) public { |
| 86 | + x = bound(x, 2, 50e18 - 1); // it fails if 1 us used, not an issue since only used in periphery |
| 87 | + uint256 y = eulerSwapMock.exposedF(x, 1e18, 1e18, 50e18, 50e18, 0.85e18); |
| 88 | + uint256 outX = periphery.fInverse(y, 1e18, 1e18, 50e18, 50e18, 0.85e18); |
| 89 | + |
| 90 | + // Ensure x is within the expected range |
| 91 | + assertGe(outX, x); // Asserts xOut >= x |
| 92 | + assertLe(outX, x + 1); // Asserts xOut <= x + 1 |
| 93 | + |
| 94 | + // Alternative using assertApproxEqAbs for absolute difference within 1 |
| 95 | + assertApproxEqAbs(x, outX, 1); |
| 96 | + } |
72 | 97 | }
|
0 commit comments