public void UniverseSelectionAddAndRemove() { _algorithm.SetLiveMode(true); _algorithm.UniverseSettings.Resolution = Resolution.Hour; _algorithm.UniverseSettings.MinimumTimeInUniverse = TimeSpan.Zero; var added = false; var first = true; var tokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(15)); foreach (var timeSlice in _synchronizer.StreamData(tokenSource.Token)) { if (!added) { added = true; _algorithm.AddUniverse(SecurityType.Equity, "AUniverse", Resolution.Second, Market.USA, _algorithm.UniverseSettings, time => { return(first ? new[] { "SPY" } : new[] { "AAPL" }); } ); } else if (!timeSlice.IsTimePulse) { if (first) { Assert.IsTrue(_algorithm.SubscriptionManager.SubscriptionDataConfigService .GetSubscriptionDataConfigs(Symbols.SPY, includeInternalConfigs: true).Any(config => config.Resolution == Resolution.Second)); Assert.IsFalse(_algorithm.SubscriptionManager.SubscriptionDataConfigService.GetSubscriptionDataConfigs(Symbols.AAPL, includeInternalConfigs: true).Any()); first = false; } else { Assert.IsTrue(_algorithm.SubscriptionManager.SubscriptionDataConfigService .GetSubscriptionDataConfigs(Symbols.AAPL, includeInternalConfigs: true).Any(config => config.Resolution == Resolution.Second)); Assert.IsFalse(_algorithm.SubscriptionManager.SubscriptionDataConfigService.GetSubscriptionDataConfigs(Symbols.SPY, includeInternalConfigs: true).Any()); break; } } _algorithm.OnEndOfTimeStep(); } Assert.IsFalse(tokenSource.IsCancellationRequested); }