refactor(return-leg): 新增 DividendCalc 分红增值税后计算 + 修复 MtmCalc 参数类型
DividendCalc: 增值税后票息 = payment/(1+tax)*(1-tax), 原 SwapEodPositionService 4处重复此公式(1804/1894/1906/2095)。 本次先建纯函数+测试, 4处inline替换下次做。 附带修复: MtmCalc shortRatio 参数从 decimal 改为 int (原代码6处声明中5处是int, 仅1696是decimal, 统一为int)。 1696行 shortRatio 声明同步改为 int。 验证: 编译0错误, DividendCalc 4个测试全过, 全量507测试7失败(基线一致)。
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using YLErp.Modules.SwapModule.ReturnLegs;
|
||||
|
||||
namespace UnitTestProject.Modules.SwapModule.ReturnLegs
|
||||
{
|
||||
[TestClass]
|
||||
public class DividendCalcTest
|
||||
{
|
||||
[TestMethod]
|
||||
public void AfterTax_零税率_等于原值()
|
||||
{
|
||||
Assert.AreEqual(1000m, DividendCalc.AfterTax(1000m, 0m));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void AfterTax_6pct增值税()
|
||||
{
|
||||
// 1000 / 1.06 * 0.94 = 886.79...
|
||||
Assert.AreEqual(886.79m, DividendCalc.AfterTax(1000m, 0.06m));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void AfterTax_负票息()
|
||||
{
|
||||
// -500 / 1.06 * 0.94 = -443.40
|
||||
Assert.AreEqual(-443.40m, DividendCalc.AfterTax(-500m, 0.06m));
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void AfterTaxRaw_不四舍五入()
|
||||
{
|
||||
var raw = DividendCalc.AfterTaxRaw(1000m, 0.06m);
|
||||
Assert.AreNotEqual(886.79m, raw, "Raw 版本不四舍五入");
|
||||
Assert.IsTrue(raw > 886.79m && raw < 886.80m);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user