Пример #1
0
        public void MoveTo_CopiesContentToStream()
        {
            // Arrange
            var input = Enumerable.Repeat((byte)0xba, PagedByteBuffer.PageSize * 3 + 10).ToArray();

            using var buffer = new PagedByteBuffer(ArrayPool <byte> .Shared);
            buffer.Add(input, 0, input.Length);
            var stream = new MemoryStream();

            // Act
            buffer.MoveTo(stream);

            // Assert
            Assert.Equal(input, stream.ToArray());

            // Verify moving new content works.
            var newInput = Enumerable.Repeat((byte)0xcb, PagedByteBuffer.PageSize * 2 + 13).ToArray();

            buffer.Add(newInput, 0, newInput.Length);

            stream.SetLength(0);
            buffer.MoveTo(stream);

            Assert.Equal(newInput, stream.ToArray());
        }
Пример #2
0
        public void MoveTo_WithClear_ReturnsBuffers()
        {
            // Arrange
            var input     = new byte[] { 1, };
            var arrayPool = new Mock <ArrayPool <byte> >();
            var byteArray = new byte[PagedByteBuffer.PageSize];

            arrayPool.Setup(p => p.Rent(PagedByteBuffer.PageSize))
            .Returns(byteArray);
            arrayPool.Setup(p => p.Return(byteArray, false)).Verifiable();
            var memoryStream = new MemoryStream();

            using (var buffer = new PagedByteBuffer(arrayPool.Object))
            {
                // Act
                buffer.Add(input, 0, input.Length);
                buffer.MoveTo(memoryStream);

                // Assert
                Assert.Equal(input, memoryStream.ToArray());
            }

            arrayPool.Verify(p => p.Rent(It.IsAny <int>()), Times.Once());
            arrayPool.Verify(p => p.Return(It.IsAny <byte[]>(), It.IsAny <bool>()), Times.Once());
        }
        private static byte[] ReadBufferedContent(PagedByteBuffer buffer)
        {
            using var memoryStream = new MemoryStream();
            buffer.MoveTo(memoryStream);

            return(memoryStream.ToArray());
        }