Skip to content

Commit cf88644

Browse files
committed
test: refactor tests to make it work
1 parent 33d0980 commit cf88644

File tree

3 files changed

+62
-33
lines changed

3 files changed

+62
-33
lines changed

src/libraries/Constants.sol

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@ library Constants {
1212
uint256 public constant WAD = 1e18;
1313
uint256 public constant MAX_SUPPORTED_PRICE = type(uint128).max;
1414
uint256 public constant MAX_AMOUNT_IN = type(uint128).max;
15-
uint256 public constant BP_SCALE = 1e4;
15+
uint16 public constant BP_SCALE = 1e4;
1616
}

test/unit/ReservoirPriceOracle.t.sol

Lines changed: 58 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ contract ReservoirPriceOracleTest is BaseTest {
5252
require(lAccesses.length == 1, "incorrect number of accesses");
5353

5454
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);
5657
require(lData.getDecimalDifference() == lDecimalDiff, "decimal diff incorrect");
5758
require(lData.isSimplePrice(), "flag incorrect");
5859
vm.store(address(_oracle), lAccesses[0], lData);
@@ -81,11 +82,12 @@ contract ReservoirPriceOracleTest is BaseTest {
8182
function setUp() external {
8283
// define route
8384
address[] memory lRoute = new address[](2);
85+
uint16[] memory lBpDiffForMaxReward = new uint16[](1);
8486
lRoute[0] = address(_tokenA);
8587
lRoute[1] = address(_tokenB);
8688

8789
_oracle.designatePair(address(_tokenB), address(_tokenA), _pair);
88-
_oracle.setRoute(address(_tokenA), address(_tokenB), lRoute);
90+
_oracle.setRoute(address(_tokenA), address(_tokenB), lRoute, lBpDiffForMaxReward);
8991
}
9092

9193
function testWritePriceCache(uint256 aPrice) external {
@@ -144,11 +146,14 @@ contract ReservoirPriceOracleTest is BaseTest {
144146
_writePriceCache(address(_tokenC), address(_tokenD), lPriceCD);
145147

146148
address[] memory lRoute = new address[](4);
149+
uint16[] memory lBpDiffForMaxReward = new uint16[](3);
150+
lBpDiffForMaxReward[0] = lBpDiffForMaxReward[1] = lBpDiffForMaxReward[2] = Constants.BP_SCALE;
151+
147152
lRoute[0] = address(_tokenA);
148153
lRoute[1] = address(_tokenB);
149154
lRoute[2] = address(_tokenC);
150155
lRoute[3] = address(_tokenD);
151-
_oracle.setRoute(address(_tokenA), address(_tokenD), lRoute);
156+
_oracle.setRoute(address(_tokenA), address(_tokenD), lRoute, lBpDiffForMaxReward);
152157

153158
uint256 lAmountIn = 789e6;
154159

@@ -171,11 +176,13 @@ contract ReservoirPriceOracleTest is BaseTest {
171176
_writePriceCache(address(_tokenC), address(_tokenD), lPriceCD);
172177

173178
address[] memory lRoute = new address[](4);
179+
uint16[] memory lBpDiffForMaxReward = new uint16[](3);
180+
lBpDiffForMaxReward[0] = lBpDiffForMaxReward[1] = lBpDiffForMaxReward[2] = Constants.BP_SCALE;
174181
lRoute[0] = address(_tokenA);
175182
lRoute[1] = address(_tokenB);
176183
lRoute[2] = address(_tokenC);
177184
lRoute[3] = address(_tokenD);
178-
_oracle.setRoute(address(_tokenA), address(_tokenD), lRoute);
185+
_oracle.setRoute(address(_tokenA), address(_tokenD), lRoute, lBpDiffForMaxReward);
179186

180187
uint256 lAmountIn = 789e6;
181188

@@ -211,9 +218,13 @@ contract ReservoirPriceOracleTest is BaseTest {
211218
lRoute[1] = address(lTokenB);
212219
lRoute[2] = address(lTokenC);
213220

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);
215225
_writePriceCache(address(lTokenA), address(lTokenB), 1e18);
216226
_writePriceCache(address(lTokenC), address(lTokenB), 1e18);
227+
}
217228

218229
// act
219230
uint256 lAmtCOut = _oracle.getQuote(10 ** lTokenADecimals, address(lTokenA), address(lTokenC));
@@ -252,9 +263,10 @@ contract ReservoirPriceOracleTest is BaseTest {
252263
_oracle.designatePair(address(lTokenA), address(lTokenB), lPair);
253264

254265
address[] memory lRoute = new address[](2);
266+
uint16[] memory lBpDiffForMaxReward = new uint16[](1);
255267
(lRoute[0], lRoute[1]) =
256268
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);
258270
_writePriceCache(lRoute[0], lRoute[1], lPrice); // price written could be tokenB/tokenA or tokenA/tokenB depending on the fuzz addresses
259271

260272
// act
@@ -312,7 +324,8 @@ contract ReservoirPriceOracleTest is BaseTest {
312324
lTokenA < lTokenC ? (address(lTokenA), address(lTokenC)) : (address(lTokenC), address(lTokenA));
313325
lRoute[1] = address(lTokenB);
314326

315-
_oracle.setRoute(lRoute[0], lRoute[2], lRoute);
327+
uint16[] memory lBpDiffMaxReward = new uint16[](2);
328+
_oracle.setRoute(lRoute[0], lRoute[2], lRoute, lBpDiffMaxReward);
316329
_writePriceCache(
317330
address(lTokenA) < address(lTokenB) ? address(lTokenA) : address(lTokenB),
318331
address(lTokenA) < address(lTokenB) ? address(lTokenB) : address(lTokenA),
@@ -402,17 +415,6 @@ contract ReservoirPriceOracleTest is BaseTest {
402415
assertEq(lAmtOut / 1e12, lAmtIn * lRate / 1e18);
403416
}
404417

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-
416418
function testUpdateTwapPeriod(uint256 aNewPeriod) external {
417419
// assume
418420
uint64 lNewPeriod = uint64(bound(aNewPeriod, 1, 1 hours));
@@ -554,11 +556,13 @@ contract ReservoirPriceOracleTest is BaseTest {
554556
address lIntermediate2 = address(_tokenD);
555557
address lEnd = address(_tokenB);
556558
address[] memory lRoute = new address[](4);
559+
uint16[] memory lBpDiffForMaxReward = new uint16[](3);
560+
lBpDiffForMaxReward[0] = lBpDiffForMaxReward[1] = lBpDiffForMaxReward[2] = Constants.BP_SCALE;
557561
lRoute[0] = lStart;
558562
lRoute[1] = lIntermediate1;
559563
lRoute[2] = lIntermediate2;
560564
lRoute[3] = lEnd;
561-
_oracle.setRoute(lStart, lEnd, lRoute);
565+
_oracle.setRoute(lStart, lEnd, lRoute, lBpDiffForMaxReward);
562566

563567
ReservoirPair lAC = ReservoirPair(_createPair(address(_tokenA), address(_tokenC), 0));
564568
ReservoirPair lCD = ReservoirPair(_createPair(address(_tokenC), address(_tokenD), 0));
@@ -606,13 +610,15 @@ contract ReservoirPriceOracleTest is BaseTest {
606610
address lToken0 = address(_tokenB);
607611
address lToken1 = address(_tokenC);
608612
address[] memory lRoute = new address[](2);
613+
uint16[] memory lBpDiffForMaxReward = new uint16[](1);
614+
lBpDiffForMaxReward[0] = Constants.BP_SCALE;
609615
lRoute[0] = lToken0;
610616
lRoute[1] = lToken1;
611617

612618
// act
613619
vm.expectEmit(false, false, false, false);
614620
emit Route(lToken0, lToken1, lRoute);
615-
_oracle.setRoute(lToken0, lToken1, lRoute);
621+
_oracle.setRoute(lToken0, lToken1, lRoute, lBpDiffForMaxReward);
616622

617623
// assert
618624
address[] memory lQueriedRoute = _oracle.route(lToken0, lToken1);
@@ -628,13 +634,15 @@ contract ReservoirPriceOracleTest is BaseTest {
628634
address lToken0 = address(_tokenB);
629635
address lToken1 = address(_tokenC);
630636
address[] memory lRoute = new address[](4);
637+
uint16[] memory lBpDiffForMaxReward = new uint16[](3);
638+
lBpDiffForMaxReward[0] = lBpDiffForMaxReward[1] = lBpDiffForMaxReward[2] = Constants.BP_SCALE;
631639
lRoute[0] = lToken0;
632640
lRoute[1] = address(_tokenA);
633641
lRoute[2] = address(_tokenD);
634642
lRoute[3] = lToken1;
635643

636644
// act
637-
_oracle.setRoute(lToken0, lToken1, lRoute);
645+
_oracle.setRoute(lToken0, lToken1, lRoute, lBpDiffForMaxReward);
638646

639647
// assert
640648
address[] memory lQueriedRoute = _oracle.route(lToken0, lToken1);
@@ -667,6 +675,9 @@ contract ReservoirPriceOracleTest is BaseTest {
667675
lIntermediateRoute3[0] = lIntermediate2;
668676
lIntermediateRoute3[1] = lEnd;
669677

678+
uint16[] memory lBpDiffForMaxReward = new uint16[](3);
679+
lBpDiffForMaxReward[0] = lBpDiffForMaxReward[1] = lBpDiffForMaxReward[2] = Constants.BP_SCALE;
680+
670681
// act
671682
vm.expectEmit(false, false, false, true);
672683
emit Route(lIntermediate2, lEnd, lIntermediateRoute3);
@@ -677,7 +688,8 @@ contract ReservoirPriceOracleTest is BaseTest {
677688
emit Route(lIntermediate2, lIntermediate1, lIntermediateRoute2);
678689
vm.expectEmit(false, false, false, true);
679690
emit Route(lStart, lEnd, lRoute);
680-
_oracle.setRoute(lStart, lEnd, lRoute);
691+
692+
_oracle.setRoute(lStart, lEnd, lRoute, lBpDiffForMaxReward);
681693

682694
// assert
683695
assertEq(_oracle.route(lStart, lEnd), lRoute);
@@ -691,9 +703,11 @@ contract ReservoirPriceOracleTest is BaseTest {
691703
address lToken0 = address(_tokenB);
692704
address lToken1 = address(_tokenC);
693705
address[] memory lRoute = new address[](2);
706+
uint16[] memory lBpDiffForMaxReward = new uint16[](1);
707+
lBpDiffForMaxReward[0] = Constants.BP_SCALE;
694708
lRoute[0] = lToken0;
695709
lRoute[1] = lToken1;
696-
_oracle.setRoute(lToken0, lToken1, lRoute);
710+
_oracle.setRoute(lToken0, lToken1, lRoute, lBpDiffForMaxReward);
697711
address[] memory lQueriedRoute = _oracle.route(lToken0, lToken1);
698712
assertEq(lQueriedRoute, lRoute);
699713
_writePriceCache(lToken0, lToken1, 1e18);
@@ -713,11 +727,13 @@ contract ReservoirPriceOracleTest is BaseTest {
713727
function testClearRoute_AllWordsCleared() external {
714728
// arrange
715729
address[] memory lRoute = new address[](4);
730+
uint16[] memory lBpDiffForMaxReward = new uint16[](3);
731+
lBpDiffForMaxReward[0] = lBpDiffForMaxReward[1] = lBpDiffForMaxReward[2] = Constants.BP_SCALE;
716732
lRoute[0] = address(_tokenA);
717733
lRoute[1] = address(_tokenC);
718734
lRoute[2] = address(_tokenB);
719735
lRoute[3] = address(_tokenD);
720-
_oracle.setRoute(address(_tokenA), address(_tokenD), lRoute);
736+
_oracle.setRoute(address(_tokenA), address(_tokenD), lRoute, lBpDiffForMaxReward);
721737
address[] memory lQueriedRoute = _oracle.route(address(_tokenA), address(_tokenD));
722738
assertEq(lQueriedRoute, lRoute);
723739
bytes32 lSlot1 = address(_tokenA).calculateSlot(address(_tokenD));
@@ -838,11 +854,13 @@ contract ReservoirPriceOracleTest is BaseTest {
838854
lPair.sync();
839855

840856
address[] memory lRoute = new address[](2);
857+
uint16[] memory lBpDiffForMaxReward = new uint16[](1);
858+
lBpDiffForMaxReward[0] = Constants.BP_SCALE;
841859
lRoute[0] = address(_tokenB);
842860
lRoute[1] = address(_tokenC);
843861

844862
_oracle.designatePair(address(_tokenB), address(_tokenC), lPair);
845-
_oracle.setRoute(address(_tokenB), address(_tokenC), lRoute);
863+
_oracle.setRoute(address(_tokenB), address(_tokenC), lRoute, lBpDiffForMaxReward);
846864

847865
// act & assert
848866
vm.expectRevert(
@@ -859,32 +877,38 @@ contract ReservoirPriceOracleTest is BaseTest {
859877
address lToken0 = address(0x1);
860878
address lToken1 = address(0x1);
861879
address[] memory lRoute = new address[](2);
880+
uint16[] memory lBpDiffForMaxReward = new uint16[](1);
881+
lBpDiffForMaxReward[0] = Constants.BP_SCALE;
862882
lRoute[0] = lToken0;
863883
lRoute[1] = lToken1;
864884

865885
// act & assert
866886
vm.expectRevert(OracleErrors.InvalidTokensProvided.selector);
867-
_oracle.setRoute(lToken0, lToken1, lRoute);
887+
_oracle.setRoute(lToken0, lToken1, lRoute, lBpDiffForMaxReward);
868888
}
869889

870890
function testSetRoute_NotSorted() external {
871891
// arrange
872892
address lToken0 = address(0x21);
873893
address lToken1 = address(0x2);
874894
address[] memory lRoute = new address[](2);
895+
uint16[] memory lBpDiffForMaxReward = new uint16[](1);
896+
lBpDiffForMaxReward[0] = Constants.BP_SCALE;
875897
lRoute[0] = lToken0;
876898
lRoute[1] = lToken1;
877899

878900
// act & assert
879901
vm.expectRevert(OracleErrors.InvalidTokensProvided.selector);
880-
_oracle.setRoute(lToken0, lToken1, lRoute);
902+
_oracle.setRoute(lToken0, lToken1, lRoute, lBpDiffForMaxReward);
881903
}
882904

883905
function testSetRoute_InvalidRouteLength() external {
884906
// arrange
885907
address lToken0 = address(0x1);
886908
address lToken1 = address(0x2);
887909
address[] memory lTooLong = new address[](5);
910+
uint16[] memory lBpDiffForMaxReward = new uint16[](1);
911+
lBpDiffForMaxReward[0] = Constants.BP_SCALE;
888912
lTooLong[0] = lToken0;
889913
lTooLong[1] = address(0);
890914
lTooLong[2] = address(0);
@@ -895,11 +919,11 @@ contract ReservoirPriceOracleTest is BaseTest {
895919

896920
// act & assert
897921
vm.expectRevert(OracleErrors.InvalidRouteLength.selector);
898-
_oracle.setRoute(lToken0, lToken1, lTooLong);
922+
_oracle.setRoute(lToken0, lToken1, lTooLong, lBpDiffForMaxReward);
899923

900924
// act & assert
901925
vm.expectRevert(OracleErrors.InvalidRouteLength.selector);
902-
_oracle.setRoute(lToken0, lToken1, lTooShort);
926+
_oracle.setRoute(lToken0, lToken1, lTooShort, lBpDiffForMaxReward);
903927
}
904928

905929
function testSetRoute_InvalidRoute() external {
@@ -916,11 +940,14 @@ contract ReservoirPriceOracleTest is BaseTest {
916940
lInvalidRoute2[1] = address(54);
917941
lInvalidRoute2[2] = lToken1;
918942

943+
uint16[] memory lBpDiffForMaxReward = new uint16[](2);
944+
lBpDiffForMaxReward[0] = lBpDiffForMaxReward[1] = Constants.BP_SCALE;
945+
919946
// act & assert
920947
vm.expectRevert(OracleErrors.InvalidRoute.selector);
921-
_oracle.setRoute(lToken0, lToken1, lInvalidRoute1);
948+
_oracle.setRoute(lToken0, lToken1, lInvalidRoute1, lBpDiffForMaxReward);
922949
vm.expectRevert(OracleErrors.InvalidRoute.selector);
923-
_oracle.setRoute(lToken0, lToken1, lInvalidRoute2);
950+
_oracle.setRoute(lToken0, lToken1, lInvalidRoute2, lBpDiffForMaxReward);
924951
}
925952

926953
function testUpdateRewardGasAmount_NotOwner() external {

test/unit/libraries/RoutesLib.t.sol

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ pragma solidity ^0.8.0;
44
import { Test, console2, stdError } from "forge-std/Test.sol";
55

66
import { RoutesLib } from "src/libraries/RoutesLib.sol";
7+
import { Constants } from "src/libraries/Constants.sol";
78

89
contract RoutesLibTest is Test {
910
using RoutesLib for bytes32;
@@ -40,11 +41,12 @@ contract RoutesLibTest is Test {
4041
uint256 lPrice = bound(aPrice, 1, 1e36);
4142

4243
// act
43-
bytes32 lResult = int256(aDiff).packSimplePrice(lPrice);
44+
bytes32 lResult = int256(aDiff).packSimplePrice(lPrice, Constants.BP_SCALE);
4445

4546
// assert
4647
assertEq(lResult[0], RoutesLib.FLAG_SIMPLE_PRICE);
4748
assertEq(lResult[1], bytes1(uint8(aDiff)));
49+
assertEq(lResult.getBpDiffForMaxReward(), Constants.BP_SCALE);
4850
assertEq(lResult.getPrice(), lPrice);
4951
}
5052
}

0 commit comments

Comments
 (0)