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(); 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"); // } //} } } }