public void InjectedSynchronizerIsResolved() { var config = new EngineConfiguration(); var expected = new NullSynchronizer(); config.SetSynchronizerFactory((c) => expected); var actual = config.CreateSynchronizer(); Assert.AreSame(expected,actual); }
public void AppliesDividendsOnce() { // init algorithm var algorithm = new AlgorithmStub(); algorithm.SetLiveMode(true); var dividend = new Dividend(Symbols.SPY, DateTime.UtcNow, 10m, 100m); var feed = new TestDividendDataFeed(); var marketHoursDatabase = MarketHoursDatabase.FromDataFolder(); var symbolPropertiesDataBase = SymbolPropertiesDatabase.FromDataFolder(); var dataManager = new DataManager(feed, new UniverseSelection(feed, algorithm, new SecurityService(algorithm.Portfolio.CashBook, marketHoursDatabase, symbolPropertiesDataBase, algorithm)), algorithm.Settings, algorithm.TimeKeeper, marketHoursDatabase); var synchronizer = new NullSynchronizer(algorithm, dividend); algorithm.SubscriptionManager.SetDataManager(dataManager); algorithm.AddSecurities(equities: new List <string> { "SPY" }); algorithm.Securities[Symbols.SPY].Holdings.SetHoldings(100m, 1); algorithm.PostInitialize(); var initializedCash = algorithm.Portfolio.CashBook["USD"].Amount; // init algorithm manager var manager = new AlgorithmManager(true); var job = new LiveNodePacket { UserId = 1, ProjectId = 2, DeployId = $"{nameof(PaperBrokerageTests)}.{nameof(AppliesDividendsOnce)}" }; var results = new LiveTradingResultHandler(); var transactions = new BacktestingTransactionHandler(); var brokerage = new PaperBrokerage(algorithm, job); // initialize results and transactions results.Initialize(job, new EventMessagingHandler(), new Api.Api(), feed, new BrokerageSetupHandler(), transactions); results.SetAlgorithm(algorithm); transactions.Initialize(algorithm, brokerage, results); // run algorithm manager manager.Run(job, algorithm, dataManager, synchronizer, transactions, results, new BacktestingRealTimeHandler(), new AlgorithmManagerTests.NullLeanManager(), new AlgorithmManagerTests.NullAlphaHandler(), new CancellationToken() ); var postDividendCash = algorithm.Portfolio.CashBook["USD"].Amount; Assert.AreEqual(initializedCash + dividend.Distribution, postDividendCash); }