public async void ShouldWriteToUnderlyingStreamUponSendAsync() { var buffer = new byte[1024]; var stream = new MemoryStream(); var writer = new ChunkWriter(stream); // Write data writer.OpenChunk(); writer.Write(buffer, 0, buffer.Length); writer.CloseChunk(); stream.Length.Should().Be(0); await writer.SendAsync(); stream.Length.Should().Be(buffer.Length + 2); }
public async void ShouldLogDataOnSendAsync() { var buffer = Enumerable.Range(0, 10).Select(i => (byte)i).ToArray(); var stream = new MemoryStream(); var logger = LoggingHelper.GetTraceEnabledLogger(); var writer = new ChunkWriter(stream, logger.Object); // Write data writer.OpenChunk(); writer.Write(buffer, 0, buffer.Length); writer.CloseChunk(); logger.Verify(x => x.Trace("C: {0}", It.IsAny <string>()), Times.Never); await writer.SendAsync(); logger.Verify(x => x.Trace("C: {0}", It.IsAny <string>()), Times.Once); }
public async void ShouldCloseTheChunkWithCorrectSizeAsync(int chunkSize) { var buffer = Enumerable.Range(0, chunkSize).Select(i => i % byte.MaxValue).Select(i => (byte)i).ToArray(); var stream = new MemoryStream(); var writer = new ChunkWriter(stream); // Write data writer.OpenChunk(); writer.Write(buffer, 0, buffer.Length); writer.CloseChunk(); // End Of Message Marker writer.OpenChunk(); writer.CloseChunk(); // Write To Underlying Stream await writer.SendAsync(); var constructed = await ConstructMessage(stream.ToArray()); constructed.Should().HaveCount(chunkSize); constructed.Should().Equal(buffer); }