using System.Reflection; using YLErp.DBModels; namespace YLErp.Modules.SwapModule { [TestClass] public class InitUnwindTradingFeeTest { private static decimal InvokeCalcInitTradingFee(swap_position position, UnwindData unwindData) { var method = typeof(SwapDealService).GetMethod( "CalcInitTradingFee", BindingFlags.NonPublic | BindingFlags.Static); Assert.IsNotNull(method, "未找到 CalcInitTradingFee 私有静态方法"); return (decimal)method.Invoke(null, new object[] { position, unwindData }); } [TestMethod] public void 百分比模式_按平仓名义本金计算并四舍五入到两位() { var position = new swap_position { PosiFeeType = 0, PosiTradingFeeUnit = 0.1234m }; var unwindData = new UnwindData { CloseNotionalValue = 1_000_000m, CloseQty = 8888m }; var fee = InvokeCalcInitTradingFee(position, unwindData); Assert.AreEqual(1234.00m, fee); } [TestMethod] public void 单位数量模式_按平仓数量计算并四舍五入到两位() { var position = new swap_position { PosiFeeType = 1, PosiTradingFeeUnit = 1.235m }; var unwindData = new UnwindData { CloseNotionalValue = 1_000_000m, CloseQty = 10m }; var fee = InvokeCalcInitTradingFee(position, unwindData); Assert.AreEqual(12.35m, fee); } [TestMethod] public void 空入参_返回零() { Assert.AreEqual(0m, InvokeCalcInitTradingFee(null, new UnwindData())); Assert.AreEqual(0m, InvokeCalcInitTradingFee(new swap_position(), null)); } } }