public async Task Call_DocumentProcessor_for_each_observed_document() { var sut = new ConcurrentPipelineObserver(_documentProcessor, _onPipelineCompleted, _onPipelineError, 1); _source.Subscribe(sut); await _tcs.Task; await _documentProcessor.Received(_maxConcurrency).RunAsync(_testDocument); }
public async Task Call_onError_handler_if_observable_throws() { var innerException = new Exception(); var sut = new ConcurrentPipelineObserver(_documentProcessor, _onPipelineCompleted, _onPipelineError, 1); Observable.Throw <Document>(innerException).Subscribe(sut); var pipelineException = await Assert.ThrowsAsync <PipelineException>(async() => await _tcs.Task); Assert.Same(innerException, pipelineException.InnerException); }
public async Task Call_onComplete_handler_once_only() { var callCount = 0; void OnPipelineCompleted() { callCount++; _tcs.TrySetResult(true); } var sut = new ConcurrentPipelineObserver(_documentProcessor, OnPipelineCompleted, _onPipelineError, _maxConcurrency); _source.Subscribe(sut); await _tcs.Task; Assert.Equal(1, callCount); }