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 IHighVolumeVenueDecoratorFilter Build( TimeWindows timeWindows, IUniverseFilterService baseService, DecimalRangeRuleFilter venueVolumeFilterSetting, ISystemProcessOperationRunRuleContext ruleRunContext, IUniverseDataRequestsSubscriber dataRequestSubscriber, DataSource dataSource, RuleRunMode ruleRunMode) { var filterRule = new HighVolumeVenueFilter( timeWindows, venueVolumeFilterSetting, this._equityOrderFilterService, ruleRunContext, this._equityMarketCacheFactory, this._fixedIncomeMarketCacheFactory, ruleRunMode, this._marketTradingHoursService, dataRequestSubscriber, dataSource, this._tradingHistoryLogger, this._venueLogger); var filter = new HighVolumeVenueDecoratorFilter(timeWindows, baseService, filterRule); return(filter); }
public void OnCompleted_DelegatesCallToSubscriber() { var timeWindows = new TimeWindows("1", TimeSpan.FromDays(1)); var venueFilter = new HighVolumeVenueDecoratorFilter( timeWindows, this._baseService, this._highVolumeVenueFilter); venueFilter.OnCompleted(); A.CallTo(() => this._baseService.OnCompleted()).MustHaveHappenedOnceExactly(); }
public void Version_DelegatesCallToDecoratee() { var timeWindows = new TimeWindows("1", TimeSpan.FromDays(1)); var venueFilter = new HighVolumeVenueDecoratorFilter( timeWindows, this._baseService, this._highVolumeVenueFilter); var result = venueFilter.Version; A.CallTo(() => this._baseService.Version).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); } }