@@ -52,7 +52,8 @@ contract ReservoirPriceOracleTest is BaseTest {
52
52
require (lAccesses.length == 1 , "incorrect number of accesses " );
53
53
54
54
int256 lDecimalDiff = int256 (uint256 (IERC20 (aToken1).decimals ())) - int256 (uint256 (IERC20 (aToken0).decimals ()));
55
- bytes32 lData = lDecimalDiff.packSimplePrice (aPrice);
55
+ uint16 lBpDiffMaxReward = Constants.BP_SCALE;
56
+ bytes32 lData = lDecimalDiff.packSimplePrice (aPrice, lBpDiffMaxReward);
56
57
require (lData.getDecimalDifference () == lDecimalDiff, "decimal diff incorrect " );
57
58
require (lData.isSimplePrice (), "flag incorrect " );
58
59
vm.store (address (_oracle), lAccesses[0 ], lData);
@@ -81,11 +82,12 @@ contract ReservoirPriceOracleTest is BaseTest {
81
82
function setUp () external {
82
83
// define route
83
84
address [] memory lRoute = new address [](2 );
85
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](1 );
84
86
lRoute[0 ] = address (_tokenA);
85
87
lRoute[1 ] = address (_tokenB);
86
88
87
89
_oracle.designatePair (address (_tokenB), address (_tokenA), _pair);
88
- _oracle.setRoute (address (_tokenA), address (_tokenB), lRoute);
90
+ _oracle.setRoute (address (_tokenA), address (_tokenB), lRoute, lBpDiffForMaxReward );
89
91
}
90
92
91
93
function testWritePriceCache (uint256 aPrice ) external {
@@ -144,11 +146,14 @@ contract ReservoirPriceOracleTest is BaseTest {
144
146
_writePriceCache (address (_tokenC), address (_tokenD), lPriceCD);
145
147
146
148
address [] memory lRoute = new address [](4 );
149
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](3 );
150
+ lBpDiffForMaxReward[0 ] = lBpDiffForMaxReward[1 ] = lBpDiffForMaxReward[2 ] = Constants.BP_SCALE;
151
+
147
152
lRoute[0 ] = address (_tokenA);
148
153
lRoute[1 ] = address (_tokenB);
149
154
lRoute[2 ] = address (_tokenC);
150
155
lRoute[3 ] = address (_tokenD);
151
- _oracle.setRoute (address (_tokenA), address (_tokenD), lRoute);
156
+ _oracle.setRoute (address (_tokenA), address (_tokenD), lRoute, lBpDiffForMaxReward );
152
157
153
158
uint256 lAmountIn = 789e6 ;
154
159
@@ -171,11 +176,13 @@ contract ReservoirPriceOracleTest is BaseTest {
171
176
_writePriceCache (address (_tokenC), address (_tokenD), lPriceCD);
172
177
173
178
address [] memory lRoute = new address [](4 );
179
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](3 );
180
+ lBpDiffForMaxReward[0 ] = lBpDiffForMaxReward[1 ] = lBpDiffForMaxReward[2 ] = Constants.BP_SCALE;
174
181
lRoute[0 ] = address (_tokenA);
175
182
lRoute[1 ] = address (_tokenB);
176
183
lRoute[2 ] = address (_tokenC);
177
184
lRoute[3 ] = address (_tokenD);
178
- _oracle.setRoute (address (_tokenA), address (_tokenD), lRoute);
185
+ _oracle.setRoute (address (_tokenA), address (_tokenD), lRoute, lBpDiffForMaxReward );
179
186
180
187
uint256 lAmountIn = 789e6 ;
181
188
@@ -211,9 +218,13 @@ contract ReservoirPriceOracleTest is BaseTest {
211
218
lRoute[1 ] = address (lTokenB);
212
219
lRoute[2 ] = address (lTokenC);
213
220
214
- _oracle.setRoute (address (lTokenA), address (lTokenC), lRoute);
221
+ {
222
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](2 );
223
+ lBpDiffForMaxReward[0 ] = lBpDiffForMaxReward[1 ] = Constants.BP_SCALE;
224
+ _oracle.setRoute (address (lTokenA), address (lTokenC), lRoute, lBpDiffForMaxReward);
215
225
_writePriceCache (address (lTokenA), address (lTokenB), 1e18 );
216
226
_writePriceCache (address (lTokenC), address (lTokenB), 1e18 );
227
+ }
217
228
218
229
// act
219
230
uint256 lAmtCOut = _oracle.getQuote (10 ** lTokenADecimals, address (lTokenA), address (lTokenC));
@@ -252,9 +263,10 @@ contract ReservoirPriceOracleTest is BaseTest {
252
263
_oracle.designatePair (address (lTokenA), address (lTokenB), lPair);
253
264
254
265
address [] memory lRoute = new address [](2 );
266
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](1 );
255
267
(lRoute[0 ], lRoute[1 ]) =
256
268
lTokenA < lTokenB ? (address (lTokenA), address (lTokenB)) : (address (lTokenB), address (lTokenA));
257
- _oracle.setRoute (lRoute[0 ], lRoute[1 ], lRoute);
269
+ _oracle.setRoute (lRoute[0 ], lRoute[1 ], lRoute, lBpDiffForMaxReward );
258
270
_writePriceCache (lRoute[0 ], lRoute[1 ], lPrice); // price written could be tokenB/tokenA or tokenA/tokenB depending on the fuzz addresses
259
271
260
272
// act
@@ -312,7 +324,8 @@ contract ReservoirPriceOracleTest is BaseTest {
312
324
lTokenA < lTokenC ? (address (lTokenA), address (lTokenC)) : (address (lTokenC), address (lTokenA));
313
325
lRoute[1 ] = address (lTokenB);
314
326
315
- _oracle.setRoute (lRoute[0 ], lRoute[2 ], lRoute);
327
+ uint16 [] memory lBpDiffMaxReward = new uint16 [](2 );
328
+ _oracle.setRoute (lRoute[0 ], lRoute[2 ], lRoute, lBpDiffMaxReward);
316
329
_writePriceCache (
317
330
address (lTokenA) < address (lTokenB) ? address (lTokenA) : address (lTokenB),
318
331
address (lTokenA) < address (lTokenB) ? address (lTokenB) : address (lTokenA),
@@ -402,17 +415,6 @@ contract ReservoirPriceOracleTest is BaseTest {
402
415
assertEq (lAmtOut / 1e12 , lAmtIn * lRate / 1e18 );
403
416
}
404
417
405
- function testUpdatePriceDeviationThreshold (uint256 aNewThreshold ) external {
406
- // assume
407
- uint64 lNewThreshold = uint64 (bound (aNewThreshold, 0 , 0.1e18 ));
408
-
409
- // act
410
- _oracle.updatePriceDeviationThreshold (lNewThreshold);
411
-
412
- // assert
413
- assertEq (_oracle.priceDeviationThreshold (), lNewThreshold);
414
- }
415
-
416
418
function testUpdateTwapPeriod (uint256 aNewPeriod ) external {
417
419
// assume
418
420
uint64 lNewPeriod = uint64 (bound (aNewPeriod, 1 , 1 hours));
@@ -554,11 +556,13 @@ contract ReservoirPriceOracleTest is BaseTest {
554
556
address lIntermediate2 = address (_tokenD);
555
557
address lEnd = address (_tokenB);
556
558
address [] memory lRoute = new address [](4 );
559
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](3 );
560
+ lBpDiffForMaxReward[0 ] = lBpDiffForMaxReward[1 ] = lBpDiffForMaxReward[2 ] = Constants.BP_SCALE;
557
561
lRoute[0 ] = lStart;
558
562
lRoute[1 ] = lIntermediate1;
559
563
lRoute[2 ] = lIntermediate2;
560
564
lRoute[3 ] = lEnd;
561
- _oracle.setRoute (lStart, lEnd, lRoute);
565
+ _oracle.setRoute (lStart, lEnd, lRoute, lBpDiffForMaxReward );
562
566
563
567
ReservoirPair lAC = ReservoirPair (_createPair (address (_tokenA), address (_tokenC), 0 ));
564
568
ReservoirPair lCD = ReservoirPair (_createPair (address (_tokenC), address (_tokenD), 0 ));
@@ -606,13 +610,15 @@ contract ReservoirPriceOracleTest is BaseTest {
606
610
address lToken0 = address (_tokenB);
607
611
address lToken1 = address (_tokenC);
608
612
address [] memory lRoute = new address [](2 );
613
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](1 );
614
+ lBpDiffForMaxReward[0 ] = Constants.BP_SCALE;
609
615
lRoute[0 ] = lToken0;
610
616
lRoute[1 ] = lToken1;
611
617
612
618
// act
613
619
vm.expectEmit (false , false , false , false );
614
620
emit Route (lToken0, lToken1, lRoute);
615
- _oracle.setRoute (lToken0, lToken1, lRoute);
621
+ _oracle.setRoute (lToken0, lToken1, lRoute, lBpDiffForMaxReward );
616
622
617
623
// assert
618
624
address [] memory lQueriedRoute = _oracle.route (lToken0, lToken1);
@@ -628,13 +634,15 @@ contract ReservoirPriceOracleTest is BaseTest {
628
634
address lToken0 = address (_tokenB);
629
635
address lToken1 = address (_tokenC);
630
636
address [] memory lRoute = new address [](4 );
637
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](3 );
638
+ lBpDiffForMaxReward[0 ] = lBpDiffForMaxReward[1 ] = lBpDiffForMaxReward[2 ] = Constants.BP_SCALE;
631
639
lRoute[0 ] = lToken0;
632
640
lRoute[1 ] = address (_tokenA);
633
641
lRoute[2 ] = address (_tokenD);
634
642
lRoute[3 ] = lToken1;
635
643
636
644
// act
637
- _oracle.setRoute (lToken0, lToken1, lRoute);
645
+ _oracle.setRoute (lToken0, lToken1, lRoute, lBpDiffForMaxReward );
638
646
639
647
// assert
640
648
address [] memory lQueriedRoute = _oracle.route (lToken0, lToken1);
@@ -667,6 +675,9 @@ contract ReservoirPriceOracleTest is BaseTest {
667
675
lIntermediateRoute3[0 ] = lIntermediate2;
668
676
lIntermediateRoute3[1 ] = lEnd;
669
677
678
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](3 );
679
+ lBpDiffForMaxReward[0 ] = lBpDiffForMaxReward[1 ] = lBpDiffForMaxReward[2 ] = Constants.BP_SCALE;
680
+
670
681
// act
671
682
vm.expectEmit (false , false , false , true );
672
683
emit Route (lIntermediate2, lEnd, lIntermediateRoute3);
@@ -677,7 +688,8 @@ contract ReservoirPriceOracleTest is BaseTest {
677
688
emit Route (lIntermediate2, lIntermediate1, lIntermediateRoute2);
678
689
vm.expectEmit (false , false , false , true );
679
690
emit Route (lStart, lEnd, lRoute);
680
- _oracle.setRoute (lStart, lEnd, lRoute);
691
+
692
+ _oracle.setRoute (lStart, lEnd, lRoute, lBpDiffForMaxReward);
681
693
682
694
// assert
683
695
assertEq (_oracle.route (lStart, lEnd), lRoute);
@@ -691,9 +703,11 @@ contract ReservoirPriceOracleTest is BaseTest {
691
703
address lToken0 = address (_tokenB);
692
704
address lToken1 = address (_tokenC);
693
705
address [] memory lRoute = new address [](2 );
706
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](1 );
707
+ lBpDiffForMaxReward[0 ] = Constants.BP_SCALE;
694
708
lRoute[0 ] = lToken0;
695
709
lRoute[1 ] = lToken1;
696
- _oracle.setRoute (lToken0, lToken1, lRoute);
710
+ _oracle.setRoute (lToken0, lToken1, lRoute, lBpDiffForMaxReward );
697
711
address [] memory lQueriedRoute = _oracle.route (lToken0, lToken1);
698
712
assertEq (lQueriedRoute, lRoute);
699
713
_writePriceCache (lToken0, lToken1, 1e18 );
@@ -713,11 +727,13 @@ contract ReservoirPriceOracleTest is BaseTest {
713
727
function testClearRoute_AllWordsCleared () external {
714
728
// arrange
715
729
address [] memory lRoute = new address [](4 );
730
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](3 );
731
+ lBpDiffForMaxReward[0 ] = lBpDiffForMaxReward[1 ] = lBpDiffForMaxReward[2 ] = Constants.BP_SCALE;
716
732
lRoute[0 ] = address (_tokenA);
717
733
lRoute[1 ] = address (_tokenC);
718
734
lRoute[2 ] = address (_tokenB);
719
735
lRoute[3 ] = address (_tokenD);
720
- _oracle.setRoute (address (_tokenA), address (_tokenD), lRoute);
736
+ _oracle.setRoute (address (_tokenA), address (_tokenD), lRoute, lBpDiffForMaxReward );
721
737
address [] memory lQueriedRoute = _oracle.route (address (_tokenA), address (_tokenD));
722
738
assertEq (lQueriedRoute, lRoute);
723
739
bytes32 lSlot1 = address (_tokenA).calculateSlot (address (_tokenD));
@@ -838,11 +854,13 @@ contract ReservoirPriceOracleTest is BaseTest {
838
854
lPair.sync ();
839
855
840
856
address [] memory lRoute = new address [](2 );
857
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](1 );
858
+ lBpDiffForMaxReward[0 ] = Constants.BP_SCALE;
841
859
lRoute[0 ] = address (_tokenB);
842
860
lRoute[1 ] = address (_tokenC);
843
861
844
862
_oracle.designatePair (address (_tokenB), address (_tokenC), lPair);
845
- _oracle.setRoute (address (_tokenB), address (_tokenC), lRoute);
863
+ _oracle.setRoute (address (_tokenB), address (_tokenC), lRoute, lBpDiffForMaxReward );
846
864
847
865
// act & assert
848
866
vm.expectRevert (
@@ -859,32 +877,38 @@ contract ReservoirPriceOracleTest is BaseTest {
859
877
address lToken0 = address (0x1 );
860
878
address lToken1 = address (0x1 );
861
879
address [] memory lRoute = new address [](2 );
880
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](1 );
881
+ lBpDiffForMaxReward[0 ] = Constants.BP_SCALE;
862
882
lRoute[0 ] = lToken0;
863
883
lRoute[1 ] = lToken1;
864
884
865
885
// act & assert
866
886
vm.expectRevert (OracleErrors.InvalidTokensProvided.selector );
867
- _oracle.setRoute (lToken0, lToken1, lRoute);
887
+ _oracle.setRoute (lToken0, lToken1, lRoute, lBpDiffForMaxReward );
868
888
}
869
889
870
890
function testSetRoute_NotSorted () external {
871
891
// arrange
872
892
address lToken0 = address (0x21 );
873
893
address lToken1 = address (0x2 );
874
894
address [] memory lRoute = new address [](2 );
895
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](1 );
896
+ lBpDiffForMaxReward[0 ] = Constants.BP_SCALE;
875
897
lRoute[0 ] = lToken0;
876
898
lRoute[1 ] = lToken1;
877
899
878
900
// act & assert
879
901
vm.expectRevert (OracleErrors.InvalidTokensProvided.selector );
880
- _oracle.setRoute (lToken0, lToken1, lRoute);
902
+ _oracle.setRoute (lToken0, lToken1, lRoute, lBpDiffForMaxReward );
881
903
}
882
904
883
905
function testSetRoute_InvalidRouteLength () external {
884
906
// arrange
885
907
address lToken0 = address (0x1 );
886
908
address lToken1 = address (0x2 );
887
909
address [] memory lTooLong = new address [](5 );
910
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](1 );
911
+ lBpDiffForMaxReward[0 ] = Constants.BP_SCALE;
888
912
lTooLong[0 ] = lToken0;
889
913
lTooLong[1 ] = address (0 );
890
914
lTooLong[2 ] = address (0 );
@@ -895,11 +919,11 @@ contract ReservoirPriceOracleTest is BaseTest {
895
919
896
920
// act & assert
897
921
vm.expectRevert (OracleErrors.InvalidRouteLength.selector );
898
- _oracle.setRoute (lToken0, lToken1, lTooLong);
922
+ _oracle.setRoute (lToken0, lToken1, lTooLong, lBpDiffForMaxReward );
899
923
900
924
// act & assert
901
925
vm.expectRevert (OracleErrors.InvalidRouteLength.selector );
902
- _oracle.setRoute (lToken0, lToken1, lTooShort);
926
+ _oracle.setRoute (lToken0, lToken1, lTooShort, lBpDiffForMaxReward );
903
927
}
904
928
905
929
function testSetRoute_InvalidRoute () external {
@@ -916,11 +940,14 @@ contract ReservoirPriceOracleTest is BaseTest {
916
940
lInvalidRoute2[1 ] = address (54 );
917
941
lInvalidRoute2[2 ] = lToken1;
918
942
943
+ uint16 [] memory lBpDiffForMaxReward = new uint16 [](2 );
944
+ lBpDiffForMaxReward[0 ] = lBpDiffForMaxReward[1 ] = Constants.BP_SCALE;
945
+
919
946
// act & assert
920
947
vm.expectRevert (OracleErrors.InvalidRoute.selector );
921
- _oracle.setRoute (lToken0, lToken1, lInvalidRoute1);
948
+ _oracle.setRoute (lToken0, lToken1, lInvalidRoute1, lBpDiffForMaxReward );
922
949
vm.expectRevert (OracleErrors.InvalidRoute.selector );
923
- _oracle.setRoute (lToken0, lToken1, lInvalidRoute2);
950
+ _oracle.setRoute (lToken0, lToken1, lInvalidRoute2, lBpDiffForMaxReward );
924
951
}
925
952
926
953
function testUpdateRewardGasAmount_NotOwner () external {
0 commit comments