Skip to content

Commit

Permalink
Fix tags deserialization (#7736)
Browse files Browse the repository at this point in the history
- Fix tags deserialization, adding unit test
  • Loading branch information
Martin-Molinero authored Jan 30, 2024
1 parent d4ba8cc commit 645aa73
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
4 changes: 2 additions & 2 deletions Common/AlgorithmConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public class AlgorithmConfiguration
/// List of tags associated with the algorithm
/// </summary>
[JsonProperty(PropertyName = "Tags")]
public IReadOnlySet<string> Tags;
public ISet<string> Tags;

/// <summary>
/// The algorithm's account currency
Expand Down Expand Up @@ -102,7 +102,7 @@ public class AlgorithmConfiguration
/// <summary>
/// Initializes a new instance of the <see cref="AlgorithmConfiguration"/> class
/// </summary>
public AlgorithmConfiguration(string name, IReadOnlySet<string> tags, string accountCurrency, BrokerageName brokerageName,
public AlgorithmConfiguration(string name, ISet<string> tags, string accountCurrency, BrokerageName brokerageName,
AccountType accountType, IReadOnlyDictionary<string, string> parameters, DateTime startDate, DateTime endDate,
DateTime? outOfSampleMaxEndDate, int outOfSampleDays = 0, int tradingDaysPerYear = 0)
{
Expand Down
20 changes: 18 additions & 2 deletions Tests/Common/AlgorithmConfigurationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public void CreatesConfiguration(string currency, BrokerageName brokerageName, A
}

[Test]
public void JsonSerialization()
public void JsonRoundtrip()
{
var algorithm = new QCAlgorithm();
algorithm.SetName("Backtest name");
Expand All @@ -66,7 +66,23 @@ public void JsonSerialization()

var serialized = JsonConvert.SerializeObject(algorithmConfiguration);

Assert.AreEqual($"{{\"Name\":\"Backtest name\",\"Tags\":[\"tag1\",\"tag2\"],\"AccountCurrency\":\"GBP\",\"Brokerage\":32,\"AccountType\":1,\"Parameters\":{{\"a\":\"A\",\"b\":\"B\"}},\"OutOfSampleMaxEndDate\":\"2023-01-01T00:00:00\",\"OutOfSampleDays\":30,\"StartDate\":\"1998-01-01 00:00:00\",\"EndDate\":\"{algorithm.EndDate.ToString(DateFormat.UI)}\",\"TradingDaysPerYear\":252}}", serialized);
Assert.AreEqual($"{{\"Name\":\"Backtest name\",\"Tags\":[\"tag1\",\"tag2\"],\"AccountCurrency\":\"GBP\",\"Brokerage\":32," +
$"\"AccountType\":1,\"Parameters\":{{\"a\":\"A\",\"b\":\"B\"}},\"OutOfSampleMaxEndDate\":\"2023-01-01T00:00:00\"," +
$"\"OutOfSampleDays\":30,\"StartDate\":\"1998-01-01 00:00:00\",\"EndDate\":\"{algorithm.EndDate.ToString(DateFormat.UI)}\",\"TradingDaysPerYear\":252}}", serialized);

var deserialize = JsonConvert.DeserializeObject<AlgorithmConfiguration>(serialized);

Assert.AreEqual(algorithmConfiguration.Name, deserialize.Name);
Assert.AreEqual(algorithmConfiguration.Parameters, deserialize.Parameters);
Assert.AreEqual(algorithmConfiguration.AccountCurrency, deserialize.AccountCurrency);
Assert.AreEqual(algorithmConfiguration.AccountType, deserialize.AccountType);
Assert.AreEqual(algorithmConfiguration.BrokerageName, deserialize.BrokerageName);
Assert.AreEqual(new DateTime(2024, 01, 29, 23, 59, 59), deserialize.EndDate);
Assert.AreEqual(algorithmConfiguration.OutOfSampleDays, deserialize.OutOfSampleDays);
Assert.AreEqual(algorithmConfiguration.TradingDaysPerYear, deserialize.TradingDaysPerYear);
Assert.AreEqual(algorithmConfiguration.OutOfSampleMaxEndDate, deserialize.OutOfSampleMaxEndDate);
Assert.AreEqual(algorithmConfiguration.StartDate, deserialize.StartDate);
Assert.AreEqual(algorithmConfiguration.Tags, deserialize.Tags);
}

private static TestCaseData[] AlgorithmConfigurationTestCases => new[]
Expand Down

0 comments on commit 645aa73

Please sign in to comment.