Skip to content

Commit

Permalink
Changes after review: use min, clean up test actors
Browse files Browse the repository at this point in the history
  • Loading branch information
grandizzy committed Jan 18, 2023
1 parent f8ce41f commit e5ce2ac
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 38 deletions.
4 changes: 2 additions & 2 deletions src/libraries/external/Auctions.sol
Original file line number Diff line number Diff line change
Expand Up @@ -1013,9 +1013,9 @@ library Auctions {

vars.borrowerDebt -= vars.repaidDebt;

// due to rounding issues the repaid debt could be in same cases with 0.000000000000000001 greater than pool debt
// due to rounding issues the repaid debt could be in some cases with 0.000000000000000001 greater than pool debt
// check if repaid debt is greater than pool debt to prevent overflow
poolDebt_ = poolState_.debt > vars.repaidDebt ? poolState_.debt - vars.repaidDebt : 0;
poolDebt_ = poolState_.debt - Maths.min(vars.repaidDebt, poolState_.debt);

// check that taking from loan doesn't leave borrower debt under min debt amount
_revertOnMinDebt(loans_, poolDebt_, vars.borrowerDebt, poolState_.quoteDustLimit);
Expand Down
62 changes: 26 additions & 36 deletions tests/forge/ERC20Pool/ERC20PoolLiquidationsTake.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -1895,32 +1895,22 @@ contract ERC20PoolLiquidationsTakeTest is ERC20HelperContract {
contract ERC20PoolLiquidationsTakeAndRepayAllDebtInPoolTest is ERC20HelperContract {

address internal _lender;
address internal _borrower0;
address internal _borrower1;
address internal _kicker0;
address internal _kicker1;
address internal _taker0;
address internal _taker4;
address internal _borrower;
address internal _kicker;
address internal _taker;

function setUp() external {
_lender = makeAddr("lender");
_borrower0 = makeAddr("borrower0");
_borrower1 = makeAddr("borrower1");
_kicker0 = makeAddr("kicker0");
_kicker1 = makeAddr("kicker1");
_taker0 = makeAddr("taker0");
_taker4 = makeAddr("taker4");

_mintQuoteAndApproveTokens(_lender, 1_000_000 * 1e18);
_mintQuoteAndApproveTokens(_borrower0, 1_000_000 * 1e18);
_mintQuoteAndApproveTokens(_borrower1, 1_000_000 * 1e18);
_mintQuoteAndApproveTokens(_kicker0, 1_000_000 * 1e18);
_mintQuoteAndApproveTokens(_kicker1, 1_000_000 * 1e18);
_mintQuoteAndApproveTokens(_taker0, 1_000_000 * 1e18);
_mintQuoteAndApproveTokens(_taker4, 1_000_000 * 1e18);

_mintCollateralAndApproveTokens(_borrower0, 150_000 * 1e18);
_mintCollateralAndApproveTokens(_borrower1, 150_000 * 1e18);
_lender = makeAddr("lender");
_borrower = makeAddr("borrower");
_kicker = makeAddr("kicker");
_taker = makeAddr("taker");

_mintQuoteAndApproveTokens(_lender, 1_000_000 * 1e18);
_mintQuoteAndApproveTokens(_borrower, 1_000_000 * 1e18);
_mintQuoteAndApproveTokens(_kicker, 1_000_000 * 1e18);
_mintQuoteAndApproveTokens(_taker, 1_000_000 * 1e18);

_mintCollateralAndApproveTokens(_borrower, 150_000 * 1e18);

_addInitialLiquidity({
from: _lender,
Expand All @@ -1936,16 +1926,16 @@ contract ERC20PoolLiquidationsTakeAndRepayAllDebtInPoolTest is ERC20HelperContra

function testTakeAuctionRepaidAmountGreaterThanPoolDebt() external tearDown {
_repayDebtNoLupCheck({
from: _borrower0,
borrower: _borrower0,
from: _borrower,
borrower: _borrower,
amountToRepay: 0,
amountRepaid: 0,
collateralToPull: 0
});

_drawDebtNoLupCheck({
from: _borrower0,
borrower: _borrower0,
from: _borrower,
borrower: _borrower,
amountToBorrow: 635.189921955815900534 * 1e18,
limitIndex: 7000,
collateralToPledge: 0.428329945169804100 * 1e18
Expand All @@ -1954,16 +1944,16 @@ contract ERC20PoolLiquidationsTakeAndRepayAllDebtInPoolTest is ERC20HelperContra
skip(3276);

_repayDebtNoLupCheck({
from: _borrower0,
borrower: _borrower0,
from: _borrower,
borrower: _borrower,
amountToRepay: type(uint256).max,
amountRepaid: 635.803983894118939950 * 1e18,
collateralToPull: 0.428329945169804100 * 1e18
});

_drawDebtNoLupCheck({
from: _borrower0,
borrower: _borrower0,
from: _borrower,
borrower: _borrower,
amountToBorrow: 100 * 1e18,
limitIndex: 7000,
collateralToPledge: 0.067433366047580170 * 1e18
Expand All @@ -1973,8 +1963,8 @@ contract ERC20PoolLiquidationsTakeAndRepayAllDebtInPoolTest is ERC20HelperContra
skip(86400 * 200);

_kick({
from: _kicker1,
borrower: _borrower0,
from: _kicker,
borrower: _borrower,
debt: 104.162540773774892916 * 1e18,
collateral: 0.067433366047580170 * 1e18,
bond: 1.028765834802714992 * 1e18,
Expand All @@ -1987,8 +1977,8 @@ contract ERC20PoolLiquidationsTakeAndRepayAllDebtInPoolTest is ERC20HelperContra
// the calculated repaid amount is with 1 WAD greater than the pool debt
// check that take works and doesn't overflow
_take({
from: _taker0,
borrower: _borrower0,
from: _taker,
borrower: _borrower,
maxCollateral: 0.067433366047580170 * 1e18,
bondChange: 1.028765834802714992 * 1e18,
givenAmount: 111.455789568155429077 * 1e18,
Expand Down

0 comments on commit e5ce2ac

Please sign in to comment.