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