Files
zszq-trs/UnitTestProject/Modules/TradeModule/TradeAccumulatorServiceTest.cs
2024-05-09 14:06:26 +08:00

61 lines
2.4 KiB
C#

using Qdp.Foundation.Implementations;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YLErp.Abstract.DataProviders;
using YLErp.Modules.DictionaryModule;
using YLErp.Modules.TradeModule.AccumulatorOptionModule;
namespace YLErp.Modules.TradeModule
{
[TestClass]
public class TradeAccumulatorServiceTest
{
[TestMethod]
public void TestConvertForward()
{
var dictionarySerivice = new DictionarySerivice();
var dic = dictionarySerivice.GetForwardDateDic();
var dicModel = dic.FirstOrDefault(l => l.Value == "标的交割月前一交易日");
var basedb = DbContextFactory.GetErpBaseContext();
var date = new DateTime(2023, 5, 17);
DateTime exerciseDate = default;
if (dicModel.Value != null)
{
var model = basedb.DictionaryItems.Find(dicModel.Key);
var lastMonth = Convert.ToInt32(model.Name);
if (model.ShortName.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries).Any())
{
var lastDay = Convert.ToInt32(model.ShortName.Split(",")[0]);
var typeEnum = (ForwardDateTypeEnum)Convert.ToInt32(model.ShortName.Split(",")[1]);
var isbefore = true;
if (Convert.ToInt32(model.ShortName.Split(",")[1]) > 0)
{
isbefore = model.ShortName.Split(",")[2] == "0";
}
exerciseDate = dictionarySerivice.GetForwardDateType(date, lastMonth, lastDay, typeEnum, isbefore);
}
}
Assert.AreEqual(exerciseDate, new DateTime(2023, 4, 18));
}
[TestMethod]
public void TestConvertForward2()
{
var db = DbContextFactory.GetYLDbContext();
var td = db.trade.FirstOrDefault(n => n.TradeNumber == "CW20230002OP230320002X");
Assert.IsNotNull(td);
var tdAcc = db.trade_accumulator_option.FirstOrDefault(n => n.TradeId == td.id);
Assert.IsNotNull(tdAcc);
var valueDate = new DateTime(2023, 03, 21);
var result = TradeAccumulatorService.CheckAccumulatorPayoff(td, tdAcc, valueDate, -300, tdAcc.AccumuTradeAmount);
Assert.IsNotNull(result.ForwardTrade);
}
}
}