using System.Linq; using System.Collections.Generic; using Microsoft.VisualStudio.TestTools.UnitTesting; using YLErp.DBModels; using YLErp.Modules.SwapModule.Margin; namespace UnitTestProject.Modules.SwapModule.Margin { /// /// MarginModes 统一判断口径测试。 /// 验证 MarginModes 由框架常量 ConsTrade.InterestMarginModels 派生,内容一致。 /// [TestClass] public class MarginModesTest { [TestMethod] public void All_只含初始预付金和追加预付金() { CollectionAssert.AreEquivalent( new[] { (int)InterestModeEnum.初始预付金, (int)InterestModeEnum.追加预付金 }, MarginModes.All.ToList()); } [TestMethod] public void Contains_初始预付金_返回true() => Assert.IsTrue(MarginModes.Contains((int)InterestModeEnum.初始预付金)); [TestMethod] public void Contains_追加预付金_返回true() => Assert.IsTrue(MarginModes.Contains((int)InterestModeEnum.追加预付金)); [TestMethod] public void Contains_融资腿mode_返回false() { Assert.IsFalse(MarginModes.Contains((int)InterestModeEnum.固定值)); Assert.IsFalse(MarginModes.Contains((int)InterestModeEnum.合约名义本金规模)); Assert.IsFalse(MarginModes.Contains((int)InterestModeEnum.标的期初全价)); } /// 回归护栏:MarginModes 由 ConsTrade.InterestMarginModels 派生,内容须一致(防止有人又独立重写集合导致口径分裂)。 [TestMethod] public void 与ConsTradeInterestMarginModels内容一致() { var consTrade = new List { (int)InterestModeEnum.初始预付金, (int)InterestModeEnum.追加预付金 }; CollectionAssert.AreEquivalent(consTrade, MarginModes.All.ToList()); } } }