@@ -4,6 +4,7 @@ pragma solidity ^0.8.24;
4
4
import "forge-std/Test.sol " ;
5
5
import "forge-std/console.sol " ;
6
6
import {EulerSwapTestBase, EulerSwap, TestERC20} from "./EulerSwapTestBase.t.sol " ;
7
+ import {IEulerSwap} from "../src/interfaces/IEulerSwap.sol " ;
7
8
import {CurveLib} from "../src/CurveLib.sol " ;
8
9
9
10
contract CurveLibTest is EulerSwapTestBase {
@@ -15,9 +16,8 @@ contract CurveLibTest is EulerSwapTestBase {
15
16
16
17
function test_fuzzfInverse (uint256 x , uint256 px , uint256 py , uint256 x0 , uint256 y0 , uint256 cx , uint256 cy )
17
18
public
18
- pure
19
+ view
19
20
{
20
-
21
21
// Params
22
22
px = 1e18 ;
23
23
py = bound (py, 1 , 1e36 );
@@ -32,6 +32,21 @@ contract CurveLibTest is EulerSwapTestBase {
32
32
console.log ("cx " , cx);
33
33
console.log ("cy " , cy);
34
34
35
+ IEulerSwap.Params memory p = IEulerSwap.Params ({
36
+ vault0: address (0 ),
37
+ vault1: address (0 ),
38
+ eulerAccount: address (0 ),
39
+ equilibriumReserve0: uint112 (x0),
40
+ equilibriumReserve1: uint112 (y0),
41
+ priceX: px,
42
+ priceY: py,
43
+ concentrationX: cx,
44
+ concentrationY: cy,
45
+ fee: 0 ,
46
+ protocolFee: 0 ,
47
+ protocolFeeRecipient: address (0 )
48
+ });
49
+
35
50
// Note without -2 in the max bound, f() sometimes fails when x gets too close to centre.
36
51
// Note small x values lead to large y-values, which causes problems for both f() and fInverse(), so we cap it here
37
52
x = bound (x, 1e2 - 3 , x0 - 3 );
@@ -41,7 +56,7 @@ contract CurveLibTest is EulerSwapTestBase {
41
56
uint256 xCalc = CurveLib.fInverse (y, px, py, x0, y0, cx);
42
57
console.log ("xCalc " , xCalc);
43
58
uint256 yCalc = CurveLib.f (xCalc, px, py, x0, y0, cx);
44
- uint256 xBin = binarySearch (y, px, py, x0, y0, cx , 1 , x0);
59
+ uint256 xBin = CurveLib. binarySearch (p, y , 1 , x0);
45
60
uint256 yBin = CurveLib.f (xBin, px, py, x0, y0, cx);
46
61
console.log ("x " , x);
47
62
console.log ("xCalc " , xCalc);
@@ -51,9 +66,8 @@ contract CurveLibTest is EulerSwapTestBase {
51
66
console.log ("yBin " , yBin);
52
67
53
68
if (x < type (uint112 ).max && y < type (uint112 ).max) {
54
- assert (CurveLib.verify (xCalc, y, x0, y0, px, py, cx, cy ));
69
+ assert (CurveLib.verify (p, xCalc, y ));
55
70
assert (int256 (xCalc) - int256 (xBin) <= 3 || int256 (yCalc) - int256 (yBin) <= 3 ); // suspect this is 2 wei error in fInverse() + 1 wei error in f()
56
71
}
57
72
}
58
-
59
- }
73
+ }
0 commit comments