mintAmounts

This commit is contained in:
tim
2025-10-01 15:02:11 -04:00
parent 5ce14ab2e1
commit 40e1d25e72
4 changed files with 36 additions and 37 deletions

View File

@@ -324,7 +324,7 @@ contract PartyPoolTest is Test {
token2.approve(address(pool), type(uint256).max);
// Inspect the deposit amounts that the pool will require (these are rounded up)
uint256[] memory deposits = pool.mintDepositAmounts(1);
uint256[] memory deposits = pool.mintAmounts(1);
// Basic sanity: deposits array length must match token count and not all zero necessarily
assertEq(deposits.length, 3);
@@ -366,7 +366,7 @@ contract PartyPoolTest is Test {
uint256 totalLpBefore = pool.totalSupply();
// Compute required deposits and perform mint for 1 wei
uint256[] memory deposits = pool.mintDepositAmounts(1);
uint256[] memory deposits = pool.mintAmounts(1);
// Sum deposits as deposited_value
uint256 depositedValue = 0;
@@ -400,14 +400,14 @@ contract PartyPoolTest is Test {
vm.stopPrank();
}
/// @notice mintDepositAmounts should round up deposit amounts to protect the pool.
/// @notice mintAmounts should round up deposit amounts to protect the pool.
function testMintDepositAmountsRoundingUp() public view {
uint256 totalLp = pool.totalSupply();
assertTrue(totalLp > 0, "precondition: total supply > 0");
// Request half of LP supply
uint256 want = totalLp / 2;
uint256[] memory deposits = pool.mintDepositAmounts(want);
uint256[] memory deposits = pool.mintAmounts(want);
// We expect each deposit to be roughly half the pool balance, but due to rounding up it should satisfy:
// deposits[i] * 2 >= cached balance (i.e., rounding up)
@@ -424,7 +424,7 @@ contract PartyPoolTest is Test {
assertTrue(totalLp > 0, "precondition: LP > 0");
// Compute amounts required to redeem entire supply (should be current balances)
uint256[] memory withdrawAmounts = pool.burnReceiveAmounts(totalLp);
uint256[] memory withdrawAmounts = pool.burnAmounts(totalLp);
// Sanity: withdrawAmounts should equal pool balances (or very close due to rounding)
for (uint i = 0; i < withdrawAmounts.length; i++) {
@@ -514,7 +514,7 @@ contract PartyPoolTest is Test {
}
/// @notice Verify mintDepositAmounts matches the actual token transfers performed by mint()
/// @notice Verify mintAmounts matches the actual token transfers performed by mint()
function testMintDepositAmountsMatchesMint_3TokenPool() public {
// Use a range of LP requests (tiny to large fraction)
uint256 totalLp = pool.totalSupply();
@@ -528,7 +528,7 @@ contract PartyPoolTest is Test {
if (req == 0) req = 1;
// Compute expected deposit amounts via view
uint256[] memory expected = pool.mintDepositAmounts(req);
uint256[] memory expected = pool.mintAmounts(req);
// Ensure alice has tokens and approve pool
vm.startPrank(alice);
@@ -542,7 +542,7 @@ contract PartyPoolTest is Test {
uint256 a2Before = token2.balanceOf(alice);
// Perform mint (may revert for zero-request; ensure req>0 above)
// Guard: if mintDepositAmounts returned all zeros, skip (nothing to transfer)
// Guard: if mintAmounts returned all zeros, skip (nothing to transfer)
bool allZero = (expected[0] == 0 && expected[1] == 0 && expected[2] == 0);
if (!allZero) {
uint256 lpBefore = pool.balanceOf(alice);
@@ -561,7 +561,7 @@ contract PartyPoolTest is Test {
}
}
/// @notice Verify mintDepositAmounts matches the actual token transfers performed by mint() for 10-token pool
/// @notice Verify mintAmounts matches the actual token transfers performed by mint() for 10-token pool
function testMintDepositAmountsMatchesMint_10TokenPool() public {
uint256 totalLp = pool10.totalSupply();
uint256[] memory requests = new uint256[](4);
@@ -573,7 +573,7 @@ contract PartyPoolTest is Test {
uint256 req = requests[k];
if (req == 0) req = 1;
uint256[] memory expected = pool10.mintDepositAmounts(req);
uint256[] memory expected = pool10.mintAmounts(req);
// Approve all tokens from alice
vm.startPrank(alice);
@@ -624,7 +624,7 @@ contract PartyPoolTest is Test {
}
}
/// @notice Verify burnReceiveAmounts matches actual transfers performed by burn() for 3-token pool
/// @notice Verify burnAmounts matches actual transfers performed by burn() for 3-token pool
function testBurnReceiveAmountsMatchesBurn_3TokenPool() public {
// Use address(this) as payer (holds initial LP from setUp)
uint256 totalLp = pool.totalSupply();
@@ -651,7 +651,7 @@ contract PartyPoolTest is Test {
}
// Recompute withdraw amounts via view after any top-up
uint256[] memory expected = pool.burnReceiveAmounts(req);
uint256[] memory expected = pool.burnAmounts(req);
// If expected withdraws are all zero (rounding edge), skip this iteration
if (expected[0] == 0 && expected[1] == 0 && expected[2] == 0) {
@@ -677,7 +677,7 @@ contract PartyPoolTest is Test {
}
}
/// @notice Verify burnReceiveAmounts matches actual transfers performed by burn() for 10-token pool
/// @notice Verify burnAmounts matches actual transfers performed by burn() for 10-token pool
function testBurnReceiveAmountsMatchesBurn_10TokenPool() public {
uint256 totalLp = pool10.totalSupply();
uint256[] memory burns = new uint256[](4);
@@ -708,7 +708,7 @@ contract PartyPoolTest is Test {
vm.stopPrank();
}
uint256[] memory expected = pool10.burnReceiveAmounts(req);
uint256[] memory expected = pool10.burnAmounts(req);
// If expected withdraws are all zero (rounding edge), skip this iteration
bool allZero = true;
@@ -1361,8 +1361,8 @@ contract PartyPoolTest is Test {
token2.approve(address(poolCustom), type(uint256).max);
// Get required deposit amounts for both pools
uint256[] memory depositsDefault = poolDefault.mintDepositAmounts(lpRequestDefault);
uint256[] memory depositsCustom = poolCustom.mintDepositAmounts(lpRequestCustom);
uint256[] memory depositsDefault = poolDefault.mintAmounts(lpRequestDefault);
uint256[] memory depositsCustom = poolCustom.mintAmounts(lpRequestCustom);
// Deposits should be identical (same proportion of identical balances)
assertEq(depositsDefault[0], depositsCustom[0], "Token0 deposits should be identical");