diff --git a/UnitTestProject/Modules/SwapModule/DealInterestsScenarioTest.cs b/UnitTestProject/Modules/SwapModule/DealInterestsScenarioTest.cs index f1a2be29..14bf0381 100644 --- a/UnitTestProject/Modules/SwapModule/DealInterestsScenarioTest.cs +++ b/UnitTestProject/Modules/SwapModule/DealInterestsScenarioTest.cs @@ -829,7 +829,14 @@ namespace YLErp.Modules.SwapModule 500m, 0m, new List { closeFlow }, 500m, false); AssertDecimal(Principal * FixedRate / AnnualDays, result.TdInterestIncome, - "算尾部分平仓的当日新计利息应包含已平仓部分"); + "算尾部分平仓的当日新计利息应包含已平仓部分(按全额本金计提)"); + + // 补充:算尾部分平仓的待实现利息总额应满足递推 + // InterestIncomeSum = 前日待实现 + 当日新计(全额本金,含被平仓部分) - 当日实现 + // 钉死"算尾 → 被平仓部分多1天利息 → 进入待实现总额"的完整链条 + decimal expectedIncomeSum = previousEod.InterestIncomeSum + result.TdInterestIncome - result.TdCloseInterest; + AssertDecimal(expectedIncomeSum, result.InterestIncomeSum, + "算尾部分平仓:InterestIncomeSum 应=前日待实现+当日新计(含被平仓部分)-当日实现"); } [TestMethod] @@ -848,7 +855,14 @@ namespace YLErp.Modules.SwapModule 500m, 0m, new List { closeFlow }, 500m, false); AssertDecimal(500m * FixedRate / AnnualDays, result.TdInterestIncome, - "不算尾部分平仓的当日新计利息只应包含剩余持仓部分"); + "不算尾部分平仓的当日新计利息只应包含剩余持仓部分(按剩余本金计提)"); + + // 补充对照:不算尾时待实现利息总额同样满足递推,但当日新计只含剩余持仓 + // 与 CalcLast 测试对照:不算尾的 TdInterestIncome 更小(差额=被平仓部分1天利息), + // 因此 InterestIncomeSum 也相应更小——证明算尾/不算尾的差异确实传导到待实现总额 + decimal expectedIncomeSum = previousEod.InterestIncomeSum + result.TdInterestIncome - result.TdCloseInterest; + AssertDecimal(expectedIncomeSum, result.InterestIncomeSum, + "不算尾部分平仓:InterestIncomeSum 应=前日待实现+当日新计(仅剩余持仓)-当日实现"); } [TestMethod]