public async Task CompletesWithLastRead() { var pipe = new Pipe(); var decryptor = new PipelinedDecryptor(pipe.Reader); pipe.Writer.Write(new byte[] { 0xC1, 0x03, 0x01 }); pipe.Writer.Complete(); var result = await decryptor.Reader.ReadAsync().ConfigureAwait(false); Assert.That(result.IsCompleted, Is.True); }
public async Task CompletesAfterReadAsyncIsCalled() { var pipe = new Pipe(); var decryptor = new PipelinedDecryptor(pipe.Reader); var reading = decryptor.Reader.ReadAsync().ConfigureAwait(false); await pipe.Writer.CompleteAsync().ConfigureAwait(false); var result = await reading; await Task.Delay(10).ConfigureAwait(false); Assert.That(result.IsCompleted, Is.True); }
/// <summary> /// Decrypts the specified encrypted packet and compares the result it with the specified decrypted packet. /// </summary> /// <param name="encryptedPacket">The encrypted packet.</param> /// <param name="decryptedPacket">The expected decrypted packet.</param> /// <returns>The task.</returns> private async Task Decrypt(byte[] encryptedPacket, byte[] decryptedPacket) { var pipe = new Pipe(); var decryptor = new PipelinedDecryptor(pipe.Reader); pipe.Writer.Write(encryptedPacket); await pipe.Writer.FlushAsync().ConfigureAwait(false); var readResult = await decryptor.Reader.ReadAsync().ConfigureAwait(false); var result = readResult.Buffer.ToArray(); Assert.That(result, Is.EquivalentTo(decryptedPacket)); }
public async Task CompletesAfterReadAsyncIsCalled() { var pipe = new Pipe(); var decryptor = new PipelinedDecryptor(pipe.Reader); var completed = false; decryptor.Reader.OnWriterCompleted((e, o) => completed = true, null); var reading = decryptor.Reader.ReadAsync(); pipe.Writer.Complete(); var result = await reading; Assert.That(completed && result.IsCompleted, Is.True); }