public async void ShouldResetInternalBufferPositionsAfterOneChunkSpanningMessageIsRead()
            {
                var size = Constants.MaxChunkSize * 3;
                var data = IOExtensions.GenerateBoltMessage(size);

                var logger = new Mock <ILogger>();
                var reader = new ChunkReader(new MemoryStream(data.ToArray()), logger.Object);

                var count = await reader.ReadNextMessagesAsync(new MemoryStream());

                count.Should().Be(1);
                logger.Verify(l => l.Trace(It.IsRegex("^\\d+ bytes left in chunk buffer.*compacting\\.$"), It.IsAny <object[]>()), Times.AtLeast(size / Constants.ChunkBufferSize));
            }
            public void ShouldResetInternalBufferPositionsAfterOneLargeMessageIsRead()
            {
                var size = Constants.ChunkBufferSize - Constants.ChunkBufferResetPositionsWatermark;
                var data = IOExtensions.GenerateBoltMessage(size);

                var logger = new Mock <ILogger>();
                var reader = new ChunkReader(new MemoryStream(data.ToArray()), logger.Object);

                var count = reader.ReadNextMessages(new MemoryStream());

                count.Should().Be(1);
                logger.Verify(l => l.Trace(It.IsRegex("^\\d+ bytes left in chunk buffer.*compacting\\.$"), It.IsAny <object[]>()), Times.Once);
            }