From 92517efa0b92dff9855ca1b3c311815a3decca55 Mon Sep 17 00:00:00 2001 From: Vito <5780819+Tapanito@users.noreply.github.com> Date: Thu, 6 Aug 2026 19:03:50 +0200 Subject: [PATCH] test: Count the dust reservoir in O3's conservation sum --- src/test/app/lending/VaultRounding_test.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/test/app/lending/VaultRounding_test.cpp b/src/test/app/lending/VaultRounding_test.cpp index 0f0e5231a2..84fddc98e5 100644 --- a/src/test/app/lending/VaultRounding_test.cpp +++ b/src/test/app/lending/VaultRounding_test.cpp @@ -365,17 +365,26 @@ private: // pseudo-account or the broker's owner (LoanPay.cpp's // sendBrokerFeeToOwner), depending on cover sufficiency. Track // every account real cash could land on. + // + // The dust reservoir must be included too: the payer parts with + // the raw (unrounded) amount, and every unit of that raw amount + // has to land *somewhere* on the ledger — either in main + // custody (the four balances above) or in the reservoir. Without + // it, this sum only balances on branches where the borrower is + // debited the rounded amount instead of the raw one. auto const before = env.balance(ctx.borrower, ctx.asset).number() + env.balance(pseudo, ctx.asset).number() + env.balance(brokerPseudo, ctx.asset).number() + - env.balance(ctx.lender, ctx.asset).number(); + env.balance(ctx.lender, ctx.asset).number() + + readVaultDust(env, ctx.broker.vaultKeylet()); payLoanInFull(env, ctx.borrower, ctx.asset.raw(), ctx.tinyLoanKeylet); auto const after = env.balance(ctx.borrower, ctx.asset).number() + env.balance(pseudo, ctx.asset).number() + env.balance(brokerPseudo, ctx.asset).number() + - env.balance(ctx.lender, ctx.asset).number(); + env.balance(ctx.lender, ctx.asset).number() + + readVaultDust(env, ctx.broker.vaultKeylet()); BEAST_EXPECT(before == after); });