77 lines
2.8 KiB
C#
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");
|
|
// }
|
|
//}
|
|
}
|
|
}
|
|
}
|