public void processEntirePipeline_SimpleAsyncConsumer_TargetAlways1() { //arrange _config.InputDataKind = KindOfTextData.Raw; _config.IntakeSupplier = _inLine; //has SourceNo assigned in a round-robin fashion //default (no) transformation _config.RouterType = RouterType.SourceToTarget; _config.OutputDataKind = KindOfTextData.Raw; _config.AsyncOutput = true; _config.SetAsyncOutputConsumer(l => { _resultingLines.Add(l); return(Task.FromResult(0)); }); var orchestrator = new EtlOrchestrator(_config); //act var counts = orchestrator.ExecuteAsync().Result; //assert counts.CompletionStatus.Should().Be(CompletionStatus.IntakeDepleted); counts.RowsRead.Should().Be(8); counts.ClustersRead.Should().Be(8); counts.RowsWritten.Should().Be(8); counts.ClustersWritten.Should().Be(8); _resultingLines.Count.Should().Be(9); //includes end-of-data mark _resultingLines[0].Should().Be("Line 01"); _resultingLines[1].Should().Be("Line 02"); _resultingLines[2].Should().Be("Line 03"); _resultingLines[3].Should().Be("Line 04"); _resultingLines[4].Should().Be("Line 05"); _resultingLines[5].Should().Be("Line 06"); _resultingLines[6].Should().Be("Line 07"); _resultingLines[7].Should().Be("Line 08"); _resultingLines[8].Should().BeNull(); }