public async Task Completes_With_Last_Read() { var pipe = new Pipe(); var encryptor = new UniformPipelineWriter(pipe.Writer); encryptor.Writer.Write(Samples.MinimalPacket); encryptor.Writer.Complete(); await Task.Delay(100); var result = await pipe.Reader.ReadAsync(); Assert.IsTrue(result.IsCompleted); }
public async Task Completes_After_Read_Async_Is_Called() { var pipe = new Pipe(); var encryptor = new UniformPipelineWriter(pipe.Writer); bool completed = false; pipe.Reader.OnWriterCompleted((e, o) => completed = true, null); var reading = pipe.Reader.ReadAsync(); encryptor.Writer.Complete(); var result = await reading; await Task.Delay(10); Assert.IsTrue(completed && result.IsCompleted); }
public async Task Handles_Partial_Packet_Writes() { var pipe = new Pipe(); var encryptor = new UniformPipelineWriter(pipe.Writer); encryptor.Writer.Write(new Span <byte>(Samples.UnencryptedC1Packet, 0, 3)); await encryptor.Writer.FlushAsync(); var read = pipe.Reader.ReadAsync(); await Task.Delay(50); Assert.IsFalse(read.IsCompleted); encryptor.Writer.Write(new Span <byte>(Samples.UnencryptedC1Packet, 3, Samples.UnencryptedC1Packet.Length - 3)); await encryptor.Writer.FlushAsync(); await Task.Delay(50); Assert.IsTrue(read.IsCompleted); }