Skip to content

Commit ec30941

Browse files
committed
test from MiloTruck
1 parent a8cf496 commit ec30941

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

test/FactoryTest.t.sol

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// SPDX-License-Identifier: GPL-2.0-or-later
22
pragma solidity ^0.8.24;
33

4+
import {stdError} from "forge-std/Test.sol";
45
import {IPoolManager} from "@uniswap/v4-core/src/interfaces/IPoolManager.sol";
56
import {PoolManagerDeployer} from "./utils/PoolManagerDeployer.sol";
67
import {Hooks} from "@uniswap/v4-core/src/libraries/Hooks.sol";
@@ -247,4 +248,57 @@ contract FactoryTest is EulerSwapTestBase {
247248
vm.expectRevert(EulerSwap.Locked.selector);
248249
EulerSwap(eulerSwapImpl).getReserves();
249250
}
251+
252+
253+
254+
address alice = makeAddr("alice");
255+
address bob = makeAddr("bob");
256+
257+
function test_multipleUninstalls() public {
258+
// Parameters for deployPool()
259+
IEulerSwap.Params memory params = IEulerSwap.Params({
260+
vault0: address(eTST),
261+
vault1: address(eTST2),
262+
eulerAccount: address(0),
263+
equilibriumReserve0: 1e18,
264+
equilibriumReserve1: 1e18,
265+
priceX: 1e18,
266+
priceY: 1e18,
267+
concentrationX: 0,
268+
concentrationY: 0,
269+
fee: 0,
270+
protocolFee: 0,
271+
protocolFeeRecipient: address(0)
272+
});
273+
IEulerSwap.InitialState memory initialState = IEulerSwap.InitialState({
274+
currReserve0: 1e18,
275+
currReserve1: 1e18
276+
});
277+
bytes32 salt = bytes32(0);
278+
279+
// Deploy pool for Alice
280+
params.eulerAccount = alice;
281+
address alicePool = eulerSwapFactory.computePoolAddress(params, salt);
282+
vm.startPrank(alice);
283+
evc.setAccountOperator(alice, alicePool, true);
284+
eulerSwapFactory.deployPool(params, initialState, salt);
285+
286+
// Deploy pool for Bob
287+
params.eulerAccount = bob;
288+
address bobPool = eulerSwapFactory.computePoolAddress(params, salt);
289+
vm.startPrank(bob);
290+
evc.setAccountOperator(bob, bobPool, true);
291+
eulerSwapFactory.deployPool(params, initialState, salt);
292+
293+
// Uninstall pool for Alice
294+
vm.startPrank(alice);
295+
evc.setAccountOperator(alice, alicePool, false);
296+
eulerSwapFactory.uninstallPool();
297+
298+
// Uninstalling pool for Bob reverts due to an OOB access of the allPools array
299+
vm.startPrank(bob);
300+
evc.setAccountOperator(bob, bobPool, false);
301+
vm.expectRevert(stdError.indexOOBError);
302+
eulerSwapFactory.uninstallPool();
303+
}
250304
}

0 commit comments

Comments
 (0)