public void ArchiveEmptyCollection_OneItemToArchive_OneToKeep_ReturnsOne() { var stack = new EquityInterDayHistoryStack(); var date = DateTime.UtcNow; var firstBar = date - TimeSpan.FromDays(2); var tb = this.GetTimeBar(); var tb2 = this.GetTimeBar(); var timeBarCollection = new EquityInterDayTimeBarCollection( new Market("1", "xlon", "London Stock Exchange", MarketTypes.STOCKEXCHANGE), firstBar, new[] { tb, tb2 }); var timeBarCollection2 = new EquityInterDayTimeBarCollection( new Market("1", "xlon", "London Stock Exchange", MarketTypes.STOCKEXCHANGE), DateTime.UtcNow, new[] { tb, tb2 }); stack.Add(timeBarCollection, firstBar); stack.Add(timeBarCollection2, date); var stackContents = stack.ActiveMarketHistory(); Assert.AreEqual(2, stackContents.Count); stack.ArchiveExpiredActiveItems(date); var stackContentsAfterExpire = stack.ActiveMarketHistory(); Assert.AreEqual(1, stackContentsAfterExpire.Count); Assert.AreEqual(timeBarCollection2, stackContentsAfterExpire.Pop()); }
public void DoesPush_IfDateDoesMatch_MultipleTimeBars() { var stack = new EquityInterDayHistoryStack(); var date = DateTime.UtcNow; var tb = this.GetTimeBar(); var tb2 = this.GetTimeBar(); var timeBarCollection = new EquityInterDayTimeBarCollection( new Market("1", "xlon", "London Stock Exchange", MarketTypes.STOCKEXCHANGE), DateTime.UtcNow - TimeSpan.FromMinutes(1), new[] { tb, tb2 }); var timeBarCollection2 = new EquityInterDayTimeBarCollection( new Market("1", "xlon", "London Stock Exchange", MarketTypes.STOCKEXCHANGE), DateTime.UtcNow, new[] { tb, tb2 }); stack.Add(timeBarCollection, date); stack.Add(timeBarCollection2, date); var stackContents = stack.ActiveMarketHistory(); Assert.AreEqual(2, stackContents.Count); Assert.AreEqual(timeBarCollection2, stackContents.Pop()); Assert.AreEqual(timeBarCollection, stackContents.Pop()); }
public void Add(EquityInterDayTimeBarCollection value) { if (value == null) { this._logger.LogInformation("UniverseEquityInterDayCache was asked to add null. returning"); return; } this._logger.LogInformation( $"UniverseEquityInterDayCache adding {value.Epoch} - {value.Exchange?.MarketIdentifierCode}"); if (this._latestExchangeFrameBook.ContainsKey(value.Exchange.MarketIdentifierCode)) { this._latestExchangeFrameBook.Remove(value.Exchange.MarketIdentifierCode); this._latestExchangeFrameBook.Add(value.Exchange.MarketIdentifierCode, value); } else { this._latestExchangeFrameBook.Add(value.Exchange.MarketIdentifierCode, value); } if (!this._marketHistory.ContainsKey(value.Exchange.MarketIdentifierCode)) { var history = new EquityInterDayHistoryStack(); history.Add(value, value.Epoch); this._marketHistory.TryAdd(value.Exchange.MarketIdentifierCode, history); } else { this._marketHistory.TryGetValue(value.Exchange.MarketIdentifierCode, out var history); history?.Add(value, value.Epoch); history?.ArchiveExpiredActiveItems(value.Epoch); } }
public void DoesPush_SetAMarket_OnExchangeCall() { var stack = new EquityInterDayHistoryStack(); var date = DateTime.UtcNow; var tb = this.GetTimeBar(); var venue = new Market("1", "xlon", "London Stock Exchange", MarketTypes.STOCKEXCHANGE); var timeBarCollection = new EquityInterDayTimeBarCollection(venue, DateTime.UtcNow, new[] { tb }); stack.Add(timeBarCollection, date); var exch = stack.Exchange(); Assert.AreEqual(exch, venue); }
public void DoesNotPush_IfDateDoesNotMatch() { var stack = new EquityInterDayHistoryStack(); var date = DateTime.UtcNow - TimeSpan.FromDays(3); var tb = this.GetTimeBar(); var timeBarCollection = new EquityInterDayTimeBarCollection( new Market("1", "xlon", "London Stock Exchange", MarketTypes.STOCKEXCHANGE), DateTime.UtcNow, new[] { tb }); stack.Add(timeBarCollection, date); var stackContents = stack.ActiveMarketHistory(); Assert.IsEmpty(stackContents); }
public void DoesPush_IfDateDoesMatch() { var stack = new EquityInterDayHistoryStack(); var date = DateTime.UtcNow; var tb = this.GetTimeBar(); var timeBarCollection = new EquityInterDayTimeBarCollection( new Market("1", "xlon", "London Stock Exchange", MarketTypes.STOCKEXCHANGE), DateTime.UtcNow, new[] { tb }); stack.Add(timeBarCollection, date); var stackContents = stack.ActiveMarketHistory(); Assert.AreEqual(1, stackContents.Count); Assert.AreEqual(timeBarCollection, stackContents.Peek()); }
public void Add_DoesNotThrow_ForNull() { var stack = new EquityInterDayHistoryStack(); Assert.DoesNotThrow(() => stack.Add(null, DateTime.UtcNow)); }