62 lines
2.4 KiB
C#
62 lines
2.4 KiB
C#
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||
using YLErp.Helpers;
|
||
using YLErp.Model;
|
||
|
||
namespace UnitTestProject.Modules
|
||
{
|
||
/// <summary>
|
||
/// EQD-6953 疑似到期债券值域闸门:IsMaturedDegenerate / IsResultAbsurd 分支覆盖。
|
||
/// 场景来源:UAT 060203.IB(2006年国债,2026估值日已无剩余现金流)——
|
||
/// jquantlib 对空现金流求解得 ytm=0、净/全价均为面值100,errCode=0"成功但退化"。
|
||
/// 与前端 swapCalc.js::getBondCalcErrorMessage 的同款闸门保持一致口径。
|
||
/// </summary>
|
||
[TestClass]
|
||
public class BondCalcHeplerTest
|
||
{
|
||
[TestMethod]
|
||
public void 到期退化值_三条件同时成立_命中()
|
||
{
|
||
var r = new CalBondResult { cleanPrice = 100m, dirtyPrice = 100m, ytm = 0m };
|
||
Assert.IsTrue(BondCalcHepler.IsMaturedDegenerate(r));
|
||
}
|
||
|
||
[TestMethod]
|
||
public void 正常券_不命中_按UAT实测180205IB()
|
||
{
|
||
var r = new CalBondResult { cleanPrice = 97.43300000000002m, dirtyPrice = 100.00001369863016m, ytm = 6.738278242318886m };
|
||
Assert.IsFalse(BondCalcHepler.IsMaturedDegenerate(r));
|
||
}
|
||
|
||
[TestMethod]
|
||
public void ytm为0但净价非面值_不命中_真实零息平价券场景()
|
||
{
|
||
var r = new CalBondResult { cleanPrice = 99.5m, dirtyPrice = 100m, ytm = 0m };
|
||
Assert.IsFalse(BondCalcHepler.IsMaturedDegenerate(r));
|
||
}
|
||
|
||
[TestMethod]
|
||
public void 价格为面值但ytm非0_不命中_正常息票平价券场景()
|
||
{
|
||
var r = new CalBondResult { cleanPrice = 100m, dirtyPrice = 100.5m, ytm = 3.2m };
|
||
Assert.IsFalse(BondCalcHepler.IsMaturedDegenerate(r));
|
||
}
|
||
|
||
[TestMethod]
|
||
public void ytm为null_不命中()
|
||
{
|
||
var r = new CalBondResult { cleanPrice = 100m, dirtyPrice = 100m, ytm = null };
|
||
Assert.IsFalse(BondCalcHepler.IsMaturedDegenerate(r));
|
||
}
|
||
|
||
[TestMethod]
|
||
public void IsResultAbsurd_到期退化值_命中并带原因()
|
||
{
|
||
var r = new CalBondResult { cleanPrice = 100m, dirtyPrice = 100m, ytm = 0m };
|
||
var ok = typeof(BondCalcHepler)
|
||
.GetMethod("IsResultAbsurd", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static)
|
||
.Invoke(null, new object[] { r, null });
|
||
Assert.IsTrue((bool)ok);
|
||
}
|
||
}
|
||
}
|