From 5e350d995ed41a602f6e546bd837c97235b7f46c Mon Sep 17 00:00:00 2001 From: Martin Molinero Date: Wed, 18 Jun 2025 14:32:50 -0300 Subject: [PATCH] Improve brokerage test cases --- .../TemplateBrokerageTests.cs | 47 ++++++++++++------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/QuantConnect.TemplateBrokerage.Tests/TemplateBrokerageTests.cs b/QuantConnect.TemplateBrokerage.Tests/TemplateBrokerageTests.cs index d163aba..9b8f3b6 100644 --- a/QuantConnect.TemplateBrokerage.Tests/TemplateBrokerageTests.cs +++ b/QuantConnect.TemplateBrokerage.Tests/TemplateBrokerageTests.cs @@ -13,10 +13,12 @@ * limitations under the License. */ +using System; using NUnit.Framework; using QuantConnect.Tests; using QuantConnect.Interfaces; using QuantConnect.Securities; +using System.Collections.Generic; using QuantConnect.Tests.Brokerages; namespace QuantConnect.Brokerages.Template.Tests @@ -29,71 +31,82 @@ public partial class TemplateBrokerageTests : BrokerageTests protected override IBrokerage CreateBrokerage(IOrderProvider orderProvider, ISecurityProvider securityProvider) { - throw new System.NotImplementedException(); + throw new NotImplementedException(); } protected override bool IsAsync() { - throw new System.NotImplementedException(); + throw new NotImplementedException(); } protected override decimal GetAskPrice(Symbol symbol) { - throw new System.NotImplementedException(); + throw new NotImplementedException(); } /// /// Provides the data required to test each order type in various cases /// - private static TestCaseData[] OrderParameters() + private static TestCaseData[] OrderParameters(string testName) { - return new[] + var testCases = new List() { - new TestCaseData(new MarketOrderTestParameters(Symbols.BTCUSD)).SetName("MarketOrder"), - new TestCaseData(new LimitOrderTestParameters(Symbols.BTCUSD, 10000m, 0.01m)).SetName("LimitOrder"), - new TestCaseData(new StopMarketOrderTestParameters(Symbols.BTCUSD, 10000m, 0.01m)).SetName("StopMarketOrder"), - new TestCaseData(new StopLimitOrderTestParameters(Symbols.BTCUSD, 10000m, 0.01m)).SetName("StopLimitOrder"), - new TestCaseData(new LimitIfTouchedOrderTestParameters(Symbols.BTCUSD, 10000m, 0.01m)).SetName("LimitIfTouchedOrder") + new TestCaseData(new MarketOrderTestParameters(Symbols.BTCUSD)).SetName($"{testName}_MarketOrder_BTCUSD"), + new TestCaseData(new LimitOrderTestParameters(Symbols.BTCUSD, 10000m, 0.01m)).SetName($"{testName}_LimitOrder_BTCUSD"), + new TestCaseData(new StopMarketOrderTestParameters(Symbols.BTCUSD, 10000m, 0.01m)).SetName($"{testName}_StopMarketOrder_BTCUSD"), + new TestCaseData(new StopLimitOrderTestParameters(Symbols.BTCUSD, 10000m, 0.01m)).SetName($"{testName}_StopLimitOrder_BTCUSD"), + new TestCaseData(new LimitIfTouchedOrderTestParameters(Symbols.BTCUSD, 10000m, 0.01m)).SetName($"{testName}_LimitIfTouchedOrder_BTCUSD") }; + + var optionSymbol = Symbol.CreateOption(Symbols.SPY, Market.USA, OptionStyle.American, OptionRight.Call, 200m, new DateTime(2029, 12, 19)); + testCases.Add(new TestCaseData(new MarketOrderTestParameters(optionSymbol)).SetName($"{testName}_MarketOrder_SPY_OPTION")); + return testCases.ToArray(); } + private static TestCaseData[] CancelOrderParameters() => OrderParameters("Cancel"); + private static TestCaseData[] LongFromZeroOrderParameters() => OrderParameters("LongFromZero"); + private static TestCaseData[] CloseFromLongOrderParameters() => OrderParameters("CloseFromLong"); + private static TestCaseData[] ShortFromZeroOrderParameters() => OrderParameters("ShortFromZero"); + private static TestCaseData[] CloseFromShortOrderParameters() => OrderParameters("CloseFromShort"); + private static TestCaseData[] ShortFromLongOrderParameters() => OrderParameters("ShortFromLong"); + private static TestCaseData[] LongFromShortOrderParameters() => OrderParameters("LongFromShort"); - [Test, TestCaseSource(nameof(OrderParameters))] + [Test, TestCaseSource(nameof(CancelOrderParameters))] public override void CancelOrders(OrderTestParameters parameters) { base.CancelOrders(parameters); } - [Test, TestCaseSource(nameof(OrderParameters))] + [Test, TestCaseSource(nameof(LongFromZeroOrderParameters))] public override void LongFromZero(OrderTestParameters parameters) { base.LongFromZero(parameters); } - [Test, TestCaseSource(nameof(OrderParameters))] + [Test, TestCaseSource(nameof(CloseFromLongOrderParameters))] public override void CloseFromLong(OrderTestParameters parameters) { base.CloseFromLong(parameters); } - [Test, TestCaseSource(nameof(OrderParameters))] + [Test, TestCaseSource(nameof(ShortFromZeroOrderParameters))] public override void ShortFromZero(OrderTestParameters parameters) { base.ShortFromZero(parameters); } - [Test, TestCaseSource(nameof(OrderParameters))] + [Test, TestCaseSource(nameof(CloseFromShortOrderParameters))] public override void CloseFromShort(OrderTestParameters parameters) { base.CloseFromShort(parameters); } - [Test, TestCaseSource(nameof(OrderParameters))] + [Test, TestCaseSource(nameof(ShortFromLongOrderParameters))] public override void ShortFromLong(OrderTestParameters parameters) { base.ShortFromLong(parameters); } - [Test, TestCaseSource(nameof(OrderParameters))] + [Test, TestCaseSource(nameof(LongFromShortOrderParameters))] public override void LongFromShort(OrderTestParameters parameters) { base.LongFromShort(parameters);