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