Skip to content

Commit cb69f06

Browse files
committed
removes side-effects from tryOverpayment
1 parent edc4db7 commit cb69f06

File tree

3 files changed

+86
-112
lines changed

3 files changed

+86
-112
lines changed

src/test/app/LendingHelpers_test.cpp

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -668,74 +668,60 @@ class LendingHelpers_test : public beast::unit_test::suite
668668
std::cout << loanProperites.loanState.interestOutstanding()
669669
<< std::endl;
670670

671-
Number totalValueOutstanding =
672-
loanProperites.loanState.valueOutstanding;
673-
Number principalOutstanding =
674-
loanProperites.loanState.principalOutstanding;
675-
Number managementFeeOutstanding =
676-
loanProperites.loanState.managementFeeDue;
677671
Number periodicPayment = loanProperites.periodicPayment;
678672

679673
auto const ret = tryOverpayment(
680674
asset,
681675
loanScale,
682676
overpaymentComponents,
683-
totalValueOutstanding,
684-
principalOutstanding,
685-
managementFeeOutstanding,
677+
loanProperites.loanState,
686678
periodicPayment,
687-
paymentInterval,
688679
periodicRate,
689680
paymentsRemaining,
690681
managementFeeRate,
691682
env.journal);
692683

693684
BEAST_EXPECT(ret);
694685

695-
auto const& actualPaymentParts = *ret;
686+
auto const& [actualPaymentParts, newLoanProperties] = *ret;
687+
auto const newState = newLoanProperties.loanState;
696688

697689
BEAST_EXPECTS(
698690
actualPaymentParts.valueChange ==
699-
((totalValueOutstanding - principalOutstanding -
700-
managementFeeOutstanding)) -
701-
loanProperites.loanState.interestDue,
691+
newState.interestDue - loanProperites.loanState.interestDue,
702692
" valueChange mismatch: expected " +
703693
to_string(
704-
(totalValueOutstanding - principalOutstanding -
705-
managementFeeOutstanding) -
694+
newState.interestDue -
706695
loanProperites.loanState.interestDue) +
707696
", got " + to_string(actualPaymentParts.valueChange));
708697

709698
BEAST_EXPECTS(
710699
actualPaymentParts.feePaid ==
711700
loanProperites.loanState.managementFeeDue -
712-
managementFeeOutstanding,
701+
newState.managementFeeDue,
713702
" feePaid mismatch: expected " +
714703
to_string(
715704
loanProperites.loanState.managementFeeDue -
716-
managementFeeOutstanding) +
705+
newState.managementFeeDue) +
717706
", got " + to_string(actualPaymentParts.feePaid));
718707

719708
BEAST_EXPECTS(
720709
actualPaymentParts.principalPaid ==
721710
loanProperites.loanState.principalOutstanding -
722-
principalOutstanding,
711+
newState.principalOutstanding,
723712
" principalPaid mismatch: expected " +
724713
to_string(
725714
loanProperites.loanState.principalOutstanding -
726-
principalOutstanding) +
715+
newState.principalOutstanding) +
727716
", got " + to_string(actualPaymentParts.principalPaid));
728717

729718
BEAST_EXPECTS(
730719
actualPaymentParts.interestPaid ==
731-
loanProperites.loanState.interestDue -
732-
(totalValueOutstanding - principalOutstanding -
733-
managementFeeOutstanding),
720+
loanProperites.loanState.interestDue - newState.interestDue,
734721
" interestPaid mismatch: expected " +
735722
to_string(
736723
loanProperites.loanState.interestDue -
737-
(totalValueOutstanding - principalOutstanding -
738-
managementFeeOutstanding)) +
724+
newState.interestDue) +
739725
", got " + to_string(actualPaymentParts.interestPaid));
740726
}
741727

src/xrpld/app/misc/LendingHelpers.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -361,16 +361,13 @@ struct LoanStateDeltas
361361
nonNegative();
362362
};
363363

364-
Expected<LoanPaymentParts, TER>
364+
Expected<std::pair<LoanPaymentParts, LoanProperties>, TER>
365365
tryOverpayment(
366366
Asset const& asset,
367367
std::int32_t loanScale,
368368
ExtendedPaymentComponents const& overpaymentComponents,
369-
Number& totalValueOutstanding,
370-
Number& principalOutstanding,
371-
Number& managementFeeOutstanding,
372-
Number& periodicPayment,
373-
std::uint32_t paymentInterval,
369+
LoanState const& roundedLoanState,
370+
Number const& periodicPayment,
374371
Number const& periodicRate,
375372
std::uint32_t paymentRemaining,
376373
TenthBips16 const managementFeeRate,

0 commit comments

Comments
 (0)