public void Outgoing_TCP_stream_must_be_able_to_read_a_sequence_of_ByteStrings()
{
var server = new Server(this);
var testInput = Enumerable.Range(0, 255).Select(i => ByteString.Create(new[] { Convert.ToByte(i) }));
var expectedOutput = ByteString.Create(Enumerable.Range(0, 255).Select(Convert.ToByte).ToArray());
var idle = new TcpWriteProbe(this); //Just register an idle upstream
var resultFuture =
Source.FromPublisher(idle.PublisherProbe)
.Via(Sys.TcpStream().OutgoingConnection(server.Address))
.RunAggregate(ByteString.Empty, (acc, input) => acc + input, Materializer);
var serverConnection = server.WaitAccept();
foreach (var input in testInput)
serverConnection.Write(input);
serverConnection.ConfirmedClose();
resultFuture.Wait(TimeSpan.FromSeconds(3)).Should().BeTrue();
resultFuture.Result.ShouldBeEquivalentTo(expectedOutput);
}