@@ -121,15 +121,38 @@ contract MarketTest is IntegrationTest {
121121 }
122122
123123 function testAcceptCapMaxQueueLengthExceeded () public {
124- for (uint256 i = 3 ; i < ConstantsLib.MAX_QUEUE_LENGTH - 1 ; ++ i) {
125- _setCap (allMarkets[i], CAP);
124+ // Fill the withdraw queue up to MAX_QUEUE_LENGTH by enabling fresh markets.
125+ // setUp already enabled some markets (idle + markets 0..2), so top up the remainder.
126+ uint256 toFill = ConstantsLib.MAX_QUEUE_LENGTH - vault.withdrawQueueLength ();
127+ for (uint256 i; i < toFill; ++ i) {
128+ MarketParams memory mp = _createFreshMarket (i);
129+ vm.prank (CURATOR_ADDR);
130+ vault.setCap (mp, CAP);
126131 }
132+ assertEq (vault.withdrawQueueLength (), ConstantsLib.MAX_QUEUE_LENGTH);
127133
128- MarketParams memory marketParams = allMarkets[ConstantsLib.MAX_QUEUE_LENGTH];
129-
130- vm.startPrank (CURATOR_ADDR);
134+ // Enabling one more market pushes the withdraw queue past the max.
135+ MarketParams memory extra = _createFreshMarket (toFill);
136+ vm.prank (CURATOR_ADDR);
131137 vm.expectRevert (ErrorsLib.MaxQueueLengthExceeded.selector );
132- vault.setCap (marketParams, CAP);
138+ vault.setCap (extra, CAP);
139+ }
140+
141+ /// @dev Creates and enables a fresh Moolah market with a unique, low lltv that cannot
142+ /// collide with the markets created in setUp (lltv = 0.8e18 / (i + 1)).
143+ function _createFreshMarket (uint256 salt ) internal returns (MarketParams memory mp ) {
144+ uint256 lltv = salt + 1 ;
145+ mp = MarketParams ({
146+ loanToken: address (loanToken),
147+ collateralToken: address (collateralToken),
148+ oracle: address (oracle),
149+ irm: address (irm),
150+ lltv: lltv
151+ });
152+
153+ vm.startPrank (MOOLAH_OWNER);
154+ moolah.enableLltv (lltv);
155+ moolah.createMarket (mp);
133156 vm.stopPrank ();
134157 }
135158
0 commit comments