利率债TRS保证金期限档位切换为<5y/5y-10y/10y-30y/>30y
,确认书字段调整
This commit is contained in:
@@ -9,54 +9,45 @@ namespace YLErp.UnitTestProject.Modules.UnderlyingModule
|
||||
[TestMethod]
|
||||
public void GetApplicableMarginTerm_RuleTable_AllCases()
|
||||
{
|
||||
// <=2年,应返回2年
|
||||
var code1 = "UNLIMITED_2Y";
|
||||
// <=5年,应返回<5y
|
||||
var code1 = "UNLIMITED_UNDER5Y";
|
||||
var maturity1 = new DateTime(2030, 1, 1);
|
||||
var underlying1 = CreateTestUnderlying(code1, null, maturity1);
|
||||
var valueDate1 = maturity1.AddYears(-1); // 剩余1年
|
||||
var result1 = UnderlyingHelper.GetApplicableMarginTerm(code1, valueDate1);
|
||||
Assert.AreEqual(ConsMarginTerm.TwoYear, result1, "<=2年 应为2年");
|
||||
Assert.AreEqual(ConsMarginTerm.UnderFiveYear, result1, "<=5年 应为<5y");
|
||||
|
||||
// (2,5]年,应返回5年
|
||||
var code2 = "UNLIMITED_5Y";
|
||||
// (5,10]年,应返回5y-10y
|
||||
var code2 = "UNLIMITED_5Y_10Y";
|
||||
var maturity2 = new DateTime(2030, 1, 1);
|
||||
var underlying2 = CreateTestUnderlying(code2, null, maturity2);
|
||||
var valueDate2 = maturity2.AddYears(-3); // 剩余3年
|
||||
var valueDate2 = maturity2.AddYears(-7); // 剩余7年
|
||||
var result2 = UnderlyingHelper.GetApplicableMarginTerm(code2, valueDate2);
|
||||
Assert.AreEqual(ConsMarginTerm.FiveYear, result2, "(2,5]年 应为5年");
|
||||
Assert.AreEqual(ConsMarginTerm.FiveToTenYear, result2, "(5,10]年 应为5y-10y");
|
||||
|
||||
// (5,10]年,应返回10年
|
||||
var code3 = "UNLIMITED_10Y";
|
||||
var maturity3 = new DateTime(2030, 8, 2);
|
||||
// (10,30]年,应返回10y-30y
|
||||
var code3 = "UNLIMITED_10Y_30Y";
|
||||
var maturity3 = new DateTime(2050, 1, 1);
|
||||
var underlying3 = CreateTestUnderlying(code3, null, maturity3);
|
||||
var valueDate3 = maturity3.AddYears(-7); // 剩余13年
|
||||
var valueDate3_2 = DateTime.Now.Date; // 剩余10年
|
||||
var result3 = UnderlyingHelper.GetApplicableMarginTerm(code3, valueDate3_2);
|
||||
Assert.AreEqual(ConsMarginTerm.TenYear, result3, "(5,10]年 应为10年");
|
||||
var valueDate3 = maturity3.AddYears(-20); // 剩余20年
|
||||
var result3 = UnderlyingHelper.GetApplicableMarginTerm(code3, valueDate3);
|
||||
Assert.AreEqual(ConsMarginTerm.TenToThirtyYear, result3, "(10,30]年 应为10y-30y");
|
||||
|
||||
// (10,30]年,应返回30年
|
||||
var code4 = "UNLIMITED_30Y";
|
||||
var maturity4 = new DateTime(2050, 1, 1);
|
||||
// >30年,应返回>30y
|
||||
var code4 = "OVER_30Y";
|
||||
var maturity4 = new DateTime(2060, 1, 1);
|
||||
var underlying4 = CreateTestUnderlying(code4, null, maturity4);
|
||||
var valueDate4 = maturity4.AddYears(-28); // 剩余28年
|
||||
var valueDate4 = maturity4.AddYears(-31); // 剩余31年
|
||||
var result4 = UnderlyingHelper.GetApplicableMarginTerm(code4, valueDate4);
|
||||
Assert.AreEqual(ConsMarginTerm.ThirtyYear, result4, "(10,30]年 应为30年");
|
||||
Assert.AreEqual(ConsMarginTerm.OverThirtyYear, result4, ">30年 应为>30y");
|
||||
|
||||
// >30年,应返回30年以上
|
||||
var code5 = "OVER_30Y";
|
||||
var maturity5 = new DateTime(2060, 1, 1);
|
||||
// 无效的到期日,应为<5y(兜底默认)
|
||||
var code5 = "INVALID_TERM";
|
||||
DateTime? maturity5 = null;
|
||||
var underlying5 = CreateTestUnderlying(code5, null, maturity5);
|
||||
var valueDate5 = maturity5.AddYears(-31); // 剩余31年
|
||||
var valueDate5 = DateTime.Now.Date;
|
||||
var result5 = UnderlyingHelper.GetApplicableMarginTerm(code5, valueDate5);
|
||||
Assert.AreEqual(ConsMarginTerm.OverThirtyYear, result5, ">30年 应为30年以上");
|
||||
|
||||
// 无效的到期日,应为默认
|
||||
var code6 = "INVALID_TERM";
|
||||
DateTime? maturity6 = null;
|
||||
var underlying6 = CreateTestUnderlying(code6, null, maturity6);
|
||||
var valueDate6 = DateTime.Now.Date;
|
||||
var result6 = UnderlyingHelper.GetApplicableMarginTerm(code6, valueDate6);
|
||||
Assert.AreEqual(ConsMarginTerm.Default, result6, "无效的到期日 应为默认");
|
||||
Assert.AreEqual(ConsMarginTerm.UnderFiveYear, result5, "无效的到期日 应为<5y");
|
||||
}
|
||||
|
||||
#region 辅助方法
|
||||
|
||||
Reference in New Issue
Block a user