public async Task Complete_HasRemainder_WriteRemainder() { // Arrange var initialData = Encoding.UTF8.GetBytes("Hello world"); var testPipe = new Pipe(); var w = new Base64PipeWriter(testPipe.Writer); // Act var buffer = w.GetMemory(initialData.Length); initialData.CopyTo(buffer); w.Advance(initialData.Length); w.Complete(); // Assert var result = await testPipe.Reader.ReadAsync().AsTask().DefaultTimeout(); Assert.AreEqual(16, result.Buffer.Length); var base64Data = Encoding.UTF8.GetBytes(Convert.ToBase64String(initialData)); CollectionAssert.AreEqual(base64Data, result.Buffer.ToArray()); }
public async Task Advance_SmallDataMultipleWrites_Success(int size) { // Arrange var initialData = Encoding.UTF8.GetBytes("Hello world"); var testPipe = new Pipe(); var w = new Base64PipeWriter(testPipe.Writer); // Act foreach (var b in Split(initialData, size)) { var buffer = w.GetMemory(b.Length); for (var i = 0; i < b.Length; i++) { buffer.Span[i] = b[i]; } w.Advance(b.Length); } w.Complete(); // Assert var result = await testPipe.Reader.ReadAsync().AsTask().DefaultTimeout(); Assert.Greater(result.Buffer.Length, 0); var base64Data = Encoding.UTF8.GetBytes(Convert.ToBase64String(initialData)); var resultData = result.Buffer.ToArray(); CollectionAssert.AreEqual(base64Data, resultData); }
public async Task Advance_SmallDataIncompleteWrites_Success() { // Arrange var initialData1 = Encoding.UTF8.GetBytes("Hello"); var initialData2 = Encoding.UTF8.GetBytes("world"); var testPipe = new Pipe(); var w = new Base64PipeWriter(testPipe.Writer); // Act var buffer = w.GetMemory(initialData1.Length); initialData1.CopyTo(buffer); w.Advance(initialData1.Length); buffer = w.GetMemory(initialData2.Length); initialData2.CopyTo(buffer); w.Advance(initialData2.Length); w.Complete(); // Assert var result = await testPipe.Reader.ReadAsync().AsTask().DefaultTimeout(); Assert.Greater(result.Buffer.Length, 0); var base64Data = Encoding.UTF8.GetBytes(Convert.ToBase64String(initialData1.Concat(initialData2).ToArray())); CollectionAssert.AreEqual(base64Data, result.Buffer.ToArray()); }
public async Task WriteMessageAsync_MultipleMessagesNoFlush_WriteMessages() { // Arrange var ms = new MemoryStream(); var pipeWriter = new Base64PipeWriter(PipeWriter.Create(ms)); // Act await pipeWriter.WriteMessageAsync(new EchoRequest { Message = "test" }, HttpContextServerCallContextHelper.CreateServerCallContext(), MarshallerEchoRequest.ContextualSerializer, canFlush : false); await pipeWriter.WriteMessageAsync(new EchoRequest { Message = "test" }, HttpContextServerCallContextHelper.CreateServerCallContext(), MarshallerEchoRequest.ContextualSerializer, canFlush : false); await pipeWriter.WriteMessageAsync(new EchoRequest { Message = "test" }, HttpContextServerCallContextHelper.CreateServerCallContext(), MarshallerEchoRequest.ContextualSerializer, canFlush : false); pipeWriter.Complete(); // Assert var base64 = Encoding.UTF8.GetString(ms.ToArray()); Assert.AreEqual("AAAAAAYKBHRlc3QAAAAABgoEdGVzdAAAAAAGCgR0ZXN0", base64); }