Skip to content

Commit 77780f0

Browse files
committed
test: add cases for missed coverage
1 parent 9d47a05 commit 77780f0

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

test/unit/ReservoirPriceOracle.t.sol

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
OracleAverageQuery,
1212
ReservoirPriceOracle,
1313
IERC20,
14+
IERC4626,
1415
IPriceOracle,
1516
RoutesLib
1617
} from "src/ReservoirPriceOracle.sol";
@@ -19,6 +20,7 @@ import { EnumerableSetLib } from "lib/solady/src/utils/EnumerableSetLib.sol";
1920
import { Constants } from "src/libraries/Constants.sol";
2021
import { MockFallbackOracle } from "test/mock/MockFallbackOracle.sol";
2122
import { StubERC4626 } from "test/mock/StubERC4626.sol";
23+
import {Errors} from "../../lib/amm-core/test/integration/AaveErrors.sol";
2224

2325
contract ReservoirPriceOracleTest is BaseTest {
2426
using Utils for *;
@@ -95,6 +97,11 @@ contract ReservoirPriceOracleTest is BaseTest {
9597
_oracle.setRoute(address(_tokenA), address(_tokenB), lRoute, lRewardThreshold);
9698
}
9799

100+
function testName() external {
101+
// act & assert
102+
assertEq(_oracle.name(), "RESERVOIR PRICE ORACLE");
103+
}
104+
98105
function testWritePriceCache(uint256 aPrice) external {
99106
// arrange
100107
uint256 lPrice = bound(aPrice, 1, 1e36);
@@ -976,6 +983,11 @@ contract ReservoirPriceOracleTest is BaseTest {
976983
_oracle.updatePrice(address(_tokenB), address(_tokenC), address(0));
977984
}
978985

986+
function testUpdatePrice_NoPath() external {
987+
vm.expectRevert(OracleErrors.NoPath.selector);
988+
_oracle.updatePrice(address(_tokenD), address(_tokenC), address(0));
989+
}
990+
979991
function testSetRoute_SameToken() external {
980992
// arrange
981993
address lToken0 = address(0x1);
@@ -1108,4 +1120,28 @@ contract ReservoirPriceOracleTest is BaseTest {
11081120
vm.expectRevert(OracleErrors.AmountInTooLarge.selector);
11091121
_oracle.getQuote(lAmtIn, address(_tokenA), address(_tokenB));
11101122
}
1123+
1124+
function testGetQuote_ERC4626AssetFails() external {
1125+
// arrange
1126+
address lTargetContract = address(_tokenA); // just any address that doesn't impl the `asset()` function
1127+
1128+
// act & assert - the target should be called but should not fail despite not having the function. It should only fail when attempting to query the fallback
1129+
vm.expectCall(lTargetContract, abi.encodeCall(IERC4626.asset, ()));
1130+
vm.expectRevert(OracleErrors.NoPath.selector);
1131+
_oracle.getQuote(123, lTargetContract, address(_tokenD));
1132+
}
1133+
1134+
function testValidatePair_NoDesignatedPair() external {
1135+
// arrange
1136+
skip(1);
1137+
_pair.sync();
1138+
skip(_oracle.twapPeriod());
1139+
_pair.sync();
1140+
1141+
_oracle.undesignatePair(address(_tokenA), address(_tokenB));
1142+
1143+
// act & assert
1144+
vm.expectRevert(OracleErrors.NoDesignatedPair.selector);
1145+
_oracle.updatePrice(address(_tokenA), address(_tokenB), address(this));
1146+
}
11111147
}

0 commit comments

Comments
 (0)