refactor(margin): 新增 MarginModes 统一保证金mode判断口径

现状: 同一集合{初始预付金,追加预付金}在代码里复制了至少6次
(ConsTrade.InterestMarginModels + 5处局部marginTypes/premiumModes)。
任何一处漏改(如新增保证金形态)都会导致口径分裂。

本次: Margin 模块新增 MarginModes 静态类, 作为单一判断来源。
- IReadOnlyCollection<int> All: 保证金mode集合
- bool Contains(int): 判断mode是否属于保证金
后续逐个替换散落的marginTypes/premiumModes/InterestMarginModels。

纯新增, 零生产代码改动。
验证: 5个单测全过, 全量485测试7失败(基线一致)。
This commit is contained in:
hjhan
2026-08-11 09:27:25 +08:00
parent 30ae93b8ca
commit 553e3d4c6d
2 changed files with 82 additions and 0 deletions
@@ -0,0 +1,48 @@
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
{
/// <summary>
/// MarginModes 统一判断口径测试。
/// 验证它和现有散落的 marginTypes/InterestMarginModels/premiumModes 内容一致。
/// </summary>
[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.));
}
/// <summary>守护:和 ConsTrade.InterestMarginModels 内容必须一致(迁移期对齐)。</summary>
[TestMethod]
public void ConsTradeInterestMarginModels内容一致()
{
var consTrade = new List<int> { (int)InterestModeEnum., (int)InterestModeEnum. };
CollectionAssert.AreEquivalent(consTrade, MarginModes.All.ToList());
}
}
}