Skip to content

Commit c728fd3

Browse files
committed
feat: add optional flag to skip round trip shares validation
1 parent c2969a6 commit c728fd3

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

ERC4626.prop.sol

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ abstract contract ERC4626Prop is Test {
4747

4848
bool internal _vaultMayBeEmpty;
4949
bool internal _unlimitedAmount;
50+
bool internal _skipRoundTripShares;
5051

5152
//
5253
// asset
@@ -271,15 +272,15 @@ abstract contract ERC4626Prop is Test {
271272
if (!_vaultMayBeEmpty) vm.assume(IERC20(_vault_).totalSupply() > 0);
272273
vm.prank(caller); uint shares1 = vault_deposit(assets, caller);
273274
vm.prank(caller); uint shares2 = vault_withdraw(assets, caller, caller);
274-
assertApproxGeAbs(shares2, shares1, _delta_);
275+
if (!_skipRoundTripShares) assertApproxGeAbs(shares2, shares1, _delta_);
275276
}
276277

277278
// deposit(redeem(s)) <= s
278279
function prop_RT_redeem_deposit(address caller, uint shares) public checkNoFreeProfit(caller) {
279280
vm.prank(caller); uint assets = vault_redeem(shares, caller, caller);
280281
if (!_vaultMayBeEmpty) vm.assume(IERC20(_vault_).totalSupply() > 0);
281282
vm.prank(caller); uint shares2 = vault_deposit(assets, caller);
282-
assertApproxLeAbs(shares2, shares, _delta_);
283+
if (!_skipRoundTripShares) assertApproxLeAbs(shares2, shares, _delta_);
283284
}
284285

285286
// a = redeem(s)
@@ -297,7 +298,7 @@ abstract contract ERC4626Prop is Test {
297298
if (!_vaultMayBeEmpty) vm.assume(IERC20(_vault_).totalSupply() > 0);
298299
vm.prank(caller); uint assets = vault_mint(shares, caller);
299300
vm.prank(caller); uint shares2 = vault_withdraw(assets, caller, caller);
300-
assertApproxGeAbs(shares2, shares, _delta_);
301+
if (!_skipRoundTripShares) assertApproxGeAbs(shares2, shares, _delta_);
301302
}
302303

303304
// a = mint(s)
@@ -325,7 +326,7 @@ abstract contract ERC4626Prop is Test {
325326
vm.prank(caller); uint shares1 = vault_withdraw(assets, caller, caller);
326327
if (!_vaultMayBeEmpty) vm.assume(IERC20(_vault_).totalSupply() > 0);
327328
vm.prank(caller); uint shares2 = vault_deposit(assets, caller);
328-
assertApproxLeAbs(shares2, shares1, _delta_);
329+
if (!_skipRoundTripShares) assertApproxLeAbs(shares2, shares1, _delta_);
329330
}
330331

331332
//

0 commit comments

Comments
 (0)