Files
zszq-trs/YLErpUnitTest/Modules/MarginModule/BasicCalcTest.cs
T
2024-05-09 14:06:26 +08:00

77 lines
2.8 KiB
C#

using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using YLErp.BLL.Calculation;
using YLErp.Modules.CalculationModule;
using YLErp.Modules.DataProviderModule;
namespace YLErp.Modules.MarginModule.MarginTests
{
[TestClass]
public class BasicCalcTest : UnitTestBase
{
[TestMethod("测试CalculatorHelper计算")]
public void TestOldNew()
{
var req = new CalculateRisksForTradesReqV1
{
userId = "1",
addVolRateDic = null,
isAddVolPercent = false,
isEodSettle = false,
isUseTradeVol = PS.Config.IsTradeVol,
overrideVolsForTrade = null,
PreciseTimeMode = true,
pricingRequest = QdpModule.QdpPricingRequest.PV_ONLY,
valueDate = DateTime.Today,
volType = "交易"
};
using (var db = DbContextFactory.GetYLDbContext())
{
req.tradeList = db.trade.Where(t => t.ValidState != ConsGlobal.InValid && t.ClientId > 0
&& t.TradeType != "结构化交易" && t.TradeStatus == "确认成交" && t.SpotPrice != null)
.OrderByDescending(n => n.id).Take(10).ToList();
}
var priceDic = new Dictionary<string, double>();
foreach (var t in req.tradeList)
{
if (!priceDic.ContainsKey(t.UnderlyingCode))
{
priceDic[t.UnderlyingCode] = t.SpotPrice.Value * 1.08;
}
}
req.priceProvider = (ManualPriceProvider)priceDic;
var resultNew = CalculatorHelper.CalculateRisksForTrades(req);
var resultNewDic = resultNew.Results.ToDictionary(n => n.Trade.id);
//var resultOld = CalculatorHelperOld.CalculateRisksForTrades(
// req.userId, req.settleDate, req.tradeList, priceDic, req.pricingRequest,
// req.addVolRateDic, req.isEndOfDate, req.volType, req.overrideVolsForTrade, req.isUseTradeVol,
// req.PreciseTimeMode, req.isAddVolPercent);
Assert.AreEqual(resultNew.Results.Count, req.tradeList.Count());
//Assert.AreEqual(resultOld.Results.Count, req.tradeList.Count());
//foreach (var ro in resultOld.Results)
//{
// if (resultNewDic.TryGetValue(ro.Trade.id, out var rn))
// {
// Assert.IsTrue(Math.Abs((ro.ValueResult.Pv) - (rn.ValueResult.Pv)) < 1e-6);
// }
// else
// {
// Assert.Fail();
// System.Diagnostics.Debug.WriteLine("没有计算出PV");
// }
//}
}
}
}