Skip to content

Commit

Permalink
refactor: move duplicated tests into OracleWriterTest
Browse files Browse the repository at this point in the history
  • Loading branch information
xenide committed Mar 7, 2024
1 parent a7b6e3e commit 9812430
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 93 deletions.
8 changes: 4 additions & 4 deletions script/optimized-deployer-meta
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"constant_product_hash": "0x0d88f1315e17e158728b50a3b541d72fca6fb319bd3b40f5d77ec5bc14e1b5f0",
"factory_hash": "0xf26eca6c3685e02d8ed650af75358a3a77a4e56341aa2ab4eeaa0af7b72ff1a5",
"oracle_caller_hash": "0x1f76e9132423bbe7c6e8ab5fd2d1a5ac5f9ce2cfd6bafa7173fec4e7e2f8636f",
"stable_hash": "0x146377d2702444609b7597a3c2a665a566396eb86996b9d27c70daf1cc6eaff8"
"constant_product_hash": "0xc76b43fa1476112c559b63206e8bbf49b93a41e8d7ef98c987084af683e5ed45",
"factory_hash": "0xd20459c5a251f10047ce49e7c183cc2346cec22882957a7dfd55ed348dd4926f",
"oracle_caller_hash": "0x44e853c535a85438ba6f7bf16eb2be67a0a746783c671d4760f6f8dd15632382",
"stable_hash": "0xdaeb6328160335e59d03c244e4f057e14058ff4c1a6b32096ead8400b0d2619b"
}
8 changes: 4 additions & 4 deletions src/ReservoirDeployer.sol
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ contract ReservoirDeployer {
uint256 public step = 0;

// Bytecode hashes.
bytes32 public constant FACTORY_HASH = bytes32(0xf26eca6c3685e02d8ed650af75358a3a77a4e56341aa2ab4eeaa0af7b72ff1a5);
bytes32 public constant FACTORY_HASH = bytes32(0xd20459c5a251f10047ce49e7c183cc2346cec22882957a7dfd55ed348dd4926f);
bytes32 public constant CONSTANT_PRODUCT_HASH =
bytes32(0x0d88f1315e17e158728b50a3b541d72fca6fb319bd3b40f5d77ec5bc14e1b5f0);
bytes32 public constant STABLE_HASH = bytes32(0x146377d2702444609b7597a3c2a665a566396eb86996b9d27c70daf1cc6eaff8);
bytes32(0xc76b43fa1476112c559b63206e8bbf49b93a41e8d7ef98c987084af683e5ed45);
bytes32 public constant STABLE_HASH = bytes32(0xdaeb6328160335e59d03c244e4f057e14058ff4c1a6b32096ead8400b0d2619b);
bytes32 public constant ORACLE_CALLER_HASH =
bytes32(0x1f76e9132423bbe7c6e8ab5fd2d1a5ac5f9ce2cfd6bafa7173fec4e7e2f8636f);
bytes32(0x44e853c535a85438ba6f7bf16eb2be67a0a746783c671d4760f6f8dd15632382);

// Deployment addresses.
GenericFactory public factory;
Expand Down
40 changes: 0 additions & 40 deletions test/unit/ConstantProductPair.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -319,46 +319,6 @@ contract ConstantProductPairTest is BaseTest, IReservoirCallee {
assertEq(lIndex, 3);
}

function testWriteObservations() external {
// arrange
// swap 1
_stepTime(1);
_tokenA.mint(address(_constantProductPair), 1e17);
_constantProductPair.swap(1e17, true, address(this), "");

// swap 2
_stepTime(1);
_tokenA.mint(address(_constantProductPair), 1e17);
_constantProductPair.swap(1e17, true, address(this), "");

// sanity
(,,, uint256 lIndex) = _constantProductPair.getReserves();
assertEq(lIndex, 1);

Observation memory lObs = _oracleCaller.observation(_constantProductPair, 0);
assertTrue(lObs.logAccRawPrice == 0);
assertTrue(lObs.timestamp != 0);

lObs = _oracleCaller.observation(_constantProductPair, 1);
assertTrue(lObs.logAccRawPrice != 0);
assertTrue(lObs.timestamp != 0);

// act
_writeObservation(_constantProductPair, 0, int24(12), int24(-34), int88(56), int88(-78), uint32(666));

// assert
lObs = _oracleCaller.observation(_constantProductPair, 0);
assertEq(lObs.logInstantRawPrice, int24(12));
assertEq(lObs.logInstantClampedPrice, int24(-34));
assertEq(lObs.logAccRawPrice, int88(56));
assertEq(lObs.logAccClampedPrice, int88(-78));
assertEq(lObs.timestamp, uint32(666));

lObs = _oracleCaller.observation(_constantProductPair, 1);
assertTrue(lObs.logAccRawPrice != 0);
assertTrue(lObs.timestamp != 0);
}

function testOracle_OverflowAccPrice(uint32 aNewStartTime) public randomizeStartTime(aNewStartTime) {
// arrange - make the last observation close to overflowing
(,,, uint16 lIndex) = _constantProductPair.getReserves();
Expand Down
49 changes: 49 additions & 0 deletions test/unit/OracleWriter.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,55 @@ contract OracleWriterTest is BaseTest {
}
}

function testWriteObservations() external allPairs {
// arrange
// swap 1
_stepTime(1);
(uint256 lReserve0, uint256 lReserve1,,) = _pair.getReserves();
_tokenA.mint(address(_pair), 5e18);
_pair.swap(5e18, true, address(this), "");

// swap 2
_stepTime(1);
(lReserve0, lReserve1,,) = _pair.getReserves();
_tokenA.mint(address(_pair), 5e18);
_pair.swap(5e18, true, address(this), "");

// sanity
(,,, uint16 lIndex) = _pair.getReserves();
assertEq(lIndex, 1);

Observation memory lObs = _oracleCaller.observation(_pair, 0);
assertEq(lObs.logAccRawPrice, 0);
assertEq(lObs.logAccClampedPrice, 0);
assertNotEq(lObs.logInstantRawPrice, 0);
assertNotEq(lObs.logInstantClampedPrice, 0);
assertNotEq(lObs.timestamp, 0);

lObs = _oracleCaller.observation(_pair, 1);
assertNotEq(lObs.logAccRawPrice, 0);
assertNotEq(lObs.logAccClampedPrice, 0);
assertNotEq(lObs.logInstantRawPrice, 0);
assertNotEq(lObs.logInstantClampedPrice, 0);
assertNotEq(lObs.timestamp, 0);

// act
_writeObservation(_pair, 0, int24(123), int24(-456), int88(789), int56(-1011), uint32(666));

// assert
lObs = _oracleCaller.observation(_pair, 0);
assertEq(lObs.logInstantRawPrice, int24(123));
assertEq(lObs.logInstantClampedPrice, int24(-456));
assertEq(lObs.logAccRawPrice, int88(789));
assertEq(lObs.logAccClampedPrice, int88(-1011));
assertEq(lObs.timestamp, uint32(666));

lObs = _oracleCaller.observation(_pair, 1);
assertNotEq(lObs.logAccRawPrice, 0);
assertNotEq(lObs.logAccClampedPrice, 0);
assertNotEq(lObs.timestamp, 0);
}

function testObservation_NotOracleCaller(uint256 aIndex) external allPairs {
// assume
uint256 lIndex = bound(aIndex, 0, type(uint16).max);
Expand Down
45 changes: 0 additions & 45 deletions test/unit/StablePair.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -1546,51 +1546,6 @@ contract StablePairTest is BaseTest {
assertEq(lIndex, 3);
}

function testWriteObservations() external {
// arrange
// swap 1
_stepTime(1);
(uint256 lReserve0, uint256 lReserve1,,) = _stablePair.getReserves();
_tokenA.mint(address(_stablePair), 5e18);
_stablePair.swap(5e18, true, address(this), "");

// swap 2
_stepTime(1);
(lReserve0, lReserve1,,) = _stablePair.getReserves();
_tokenA.mint(address(_stablePair), 5e18);
_stablePair.swap(5e18, true, address(this), "");

// sanity
(,,, uint16 lIndex) = _stablePair.getReserves();
assertEq(lIndex, 1);

Observation memory lObs = _oracleCaller.observation(_stablePair, 0);
assertTrue(lObs.logAccRawPrice == 0);
assertTrue(lObs.logAccClampedPrice == 0);
assertTrue(lObs.timestamp != 0);

lObs = _oracleCaller.observation(_stablePair, 1);
assertTrue(lObs.logAccRawPrice != 0);
assertTrue(lObs.logAccClampedPrice != 0);
assertTrue(lObs.timestamp != 0);

// act
_writeObservation(_stablePair, 0, int24(123), int24(-456), int88(789), int56(-1011), uint32(666));

// assert
lObs = _oracleCaller.observation(_stablePair, 0);
assertEq(lObs.logInstantRawPrice, int24(123));
assertEq(lObs.logInstantClampedPrice, int24(-456));
assertEq(lObs.logAccRawPrice, int88(789));
assertEq(lObs.logAccClampedPrice, int88(-1011));
assertEq(lObs.timestamp, uint32(666));

lObs = _oracleCaller.observation(_stablePair, 1);
assertTrue(lObs.logAccRawPrice != 0);
assertTrue(lObs.logAccClampedPrice != 0);
assertTrue(lObs.timestamp != 0);
}

function testOracle_OverflowAccPrice(uint32 aNewStartTime) public randomizeStartTime(aNewStartTime) {
// assume
vm.assume(aNewStartTime >= 1);
Expand Down

0 comments on commit 9812430

Please sign in to comment.