public void OnNext_SubscribeObserverAndOnNextValid_ReturnsNonNullAndCallsFactory() { var baseDate = new DateTime(2018, 01, 01); var timeWindows = new TimeWindows("1", TimeSpan.FromDays(1)); var venueFilter = new HighVolumeVenueDecoratorFilter( timeWindows, this._baseService, this._highVolumeVenueFilter); var anObserver = A.Fake <IObserver <IUniverseEvent> >(); var onNext1 = A.Fake <IUniverseEvent>(); A.CallTo(() => onNext1.EventTime).Returns(baseDate); var onNext2 = A.Fake <IUniverseEvent>(); A.CallTo(() => onNext2.EventTime).Returns(baseDate); A.CallTo(() => onNext2.StateChange).Returns(UniverseStateEvent.Eschaton); var result = venueFilter.Subscribe(anObserver); venueFilter.OnNext(onNext1); venueFilter.OnNext(onNext2); A.CallTo(() => this._baseService.Subscribe(anObserver)).MustHaveHappenedOnceExactly(); Assert.IsNotNull(result); A.CallTo(() => this._baseService.OnNext(onNext1)).MustHaveHappenedOnceExactly(); A.CallTo(() => this._baseService.OnNext(onNext2)).MustHaveHappenedOnceExactly(); }
public void Subscribe_SubscribeObserver_ReturnsNonNullAndCallsFactory() { var timeWindows = new TimeWindows("1", TimeSpan.FromDays(1)); var venueFilter = new HighVolumeVenueDecoratorFilter( timeWindows, this._baseService, this._highVolumeVenueFilter); var anObserver = A.Fake <IObserver <IUniverseEvent> >(); var result = venueFilter.Subscribe(anObserver); A.CallTo(() => this._baseService.Subscribe(anObserver)).MustHaveHappenedOnceExactly(); Assert.IsNotNull(result); }
public void Subscribe_SubscribeNullObserver_ReturnsNullAndDoesNotCallFactory() { var timeWindows = new TimeWindows("1", TimeSpan.FromDays(1)); var venueFilter = new HighVolumeVenueDecoratorFilter( timeWindows, this._baseService, this._highVolumeVenueFilter); var result = venueFilter.Subscribe(null); A.CallTo( () => this._universeUnsubscriberFactory.Create( A <ConcurrentDictionary <IObserver <IUniverseEvent>, IObserver <IUniverseEvent> > > .Ignored, A <IObserver <IUniverseEvent> > .Ignored)).MustNotHaveHappened(); Assert.IsNull(result); }
public void WhenIRunTheHighVolumeVenueFilter() { this._filter = new HighVolumeVenueFilter( this._timeWindows, new DecimalRangeRuleFilter { Max = this._venueFilterApiParameters.Max, Min = this._venueFilterApiParameters.Min, Type = RuleFilterType.Include }, new UniverseEquityOrderFilterService(new NullLogger <UniverseEquityOrderFilterService>()), this._ruleCtx, new UniverseEquityMarketCacheFactory( new StubRuleRunDataRequestRepository(), new RuleRunDataRequestRepository( A.Fake <IConnectionStringFactory>(), new NullLogger <RuleRunDataRequestRepository>()), new NullLogger <UniverseEquityMarketCacheFactory>()), new UniverseFixedIncomeMarketCacheFactory( new StubRuleRunDataRequestRepository(), new RuleRunDataRequestRepository( A.Fake <IConnectionStringFactory>(), new NullLogger <RuleRunDataRequestRepository>()), new NullLogger <UniverseFixedIncomeMarketCacheFactory>()), RuleRunMode.ValidationRun, this._tradingHoursService, this._universeDataRequestsSubscriber, DataSource.AnyIntraday, new NullLogger <TradingHistoryStack>(), new NullLogger <HighVolumeVenueFilter>()); this._baseUniverseFilterService = A.Fake <IUniverseFilterService>(); var filterDecorator = new HighVolumeVenueDecoratorFilter( this._timeWindows, this._baseUniverseFilterService, this._filter); filterDecorator.Subscribe(this._observer); foreach (var universeEvent in this._universeSelectionState.SelectedUniverse.UniverseEvents) { filterDecorator.OnNext(universeEvent); } }