public void RemoveSecurity() { DataManager dataManager; var algorithm = new AlgorithmStub(out dataManager, equities: new List <string> { "SPY" }, forex: new List <string> { "EURUSD" }); algorithm.SetFinishedWarmingUp(); algorithm.Transactions.SetOrderProcessor(new FakeOrderProcessor()); algorithm.AddData <CustomMockedFileBaseData>("CustomMockedFileBaseData"); var customMockedFileBaseData = SymbolCache.GetSymbol("CustomMockedFileBaseData"); FuncDataQueueHandler dataQueueHandler; var feed = RunDataFeed(algorithm, out dataQueueHandler, dataManager); var emittedData = false; var currentSubscriptionCount = 0; var securityChanges = 0; ConsumeBridge(algorithm, feed, TimeSpan.FromSeconds(5), true, ts => { securityChanges += ts.SecurityChanges.Count; Assert.IsFalse(dataQueueHandler.Subscriptions.Contains(customMockedFileBaseData)); if (!emittedData) { currentSubscriptionCount = dataQueueHandler.Subscriptions.Count; Assert.IsTrue(dataQueueHandler.Subscriptions.Contains(Symbols.SPY)); Assert.IsTrue(dataQueueHandler.Subscriptions.Contains(Symbols.EURUSD)); algorithm.RemoveSecurity(Symbols.SPY); emittedData = true; } else { Assert.AreEqual(currentSubscriptionCount - 1, dataQueueHandler.Subscriptions.Count); Assert.IsFalse(dataQueueHandler.Subscriptions.Contains(Symbols.SPY)); Assert.IsTrue(dataQueueHandler.Subscriptions.Contains(Symbols.EURUSD)); } }); Assert.IsTrue(emittedData); Assert.AreEqual(4, securityChanges + algorithm.SecurityChangesRecord.Count); Assert.AreEqual(Symbols.SPY, algorithm.SecurityChangesRecord.First().RemovedSecurities.First().Symbol); }