Esempio n. 1
0
        public void GetByteRange_WhenBufferIsSmallerThanRequestedCount_Throws()
        {
            // Arrange
            var bytes = Enumerable.Range(0, 255).Select(i => (byte)i).ToArray();

            Write(bytes);
            var fileByteBuffer = new FileByteBuffer(_fileReference, 0, 255);

            // Act + Assert
            var buffer = new byte[10];

            Assert.Throws <ArgumentException>(() => fileByteBuffer.GetByteRange(0, 20, buffer));
        }
Esempio n. 2
0
        public void Data_CompareWithInitializer_ExactMatch(int offset, int count)
        {
            // Arrange
            var bytes    = Enumerable.Range(0, 255).Select(i => (byte)i).ToArray();
            var expected = new ArraySegment <byte>(bytes, offset, count);

            Write(bytes);

            var buffer = new FileByteBuffer(_fileReference, offset, count);

            // Act
            var actual = buffer.Data;

            // Assert
            Assert.Equal(expected.Count, actual.Length);
            Assert.Equal(expected, actual);
        }
Esempio n. 3
0
        public void GetByteRange_CompareWithInitializer_ExactMatch(int ctorOffset, int ctorCount, int byteRangeOffset, int byteRangeCount)
        {
            // Arrange
            var bytes = Enumerable.Range(0, 255).Select(i => (byte)i).ToArray();

            Write(bytes);
            var buffer   = new FileByteBuffer(_fileReference, ctorOffset, ctorCount);
            var expected = new ArraySegment <byte>(bytes, ctorOffset + byteRangeOffset, Math.Min(ctorCount, byteRangeCount));

            // Act
            var actual = new byte[Math.Min(ctorCount, byteRangeCount)];

            buffer.GetByteRange(byteRangeOffset, byteRangeCount, actual);

            // Assert
            Assert.Equal(expected.Count, actual.Length);
            Assert.Equal(expected, actual);
        }
Esempio n. 4
0
        /// <summary>
        /// Gets a byte buffer of specified length from the current position and moves to subsequent position.
        /// </summary>
        /// <param name="count">Number of bytes to read.</param>
        /// <returns>Byte buffer containing the read bytes.</returns>
        public IByteBuffer GetBuffer(uint count)
        {
            IByteBuffer buffer = null;

            if (count == 0)
            {
                buffer = EmptyBuffer.Value;
            }
            else if (count >= this.LargeObjectSize)
            {
                buffer = new FileByteBuffer(_file, _stream.Position, count);
                _stream.Seek((int)count, SeekOrigin.Current);
            }
            else
            {
                buffer = new MemoryByteBuffer(GetBytes((int)count));
            }
            return(buffer);
        }
Esempio n. 5
0
        public async Task CopyToStreamAsync_ShouldWorkCorrectly(int total, int offset, int count)
        {
            // Arrange
            var bytes = Enumerable.Range(0, total).Select(i => (byte)i).ToArray();

            using var outputMs = new MemoryStream(bytes.Length);
            Write(bytes);
            var fileByteBuffer = new FileByteBuffer(_fileReference, offset, count);
            var expected       = new ArraySegment <byte>(bytes, offset, count);

            // Act
            await fileByteBuffer.CopyToStreamAsync(outputMs, CancellationToken.None);

            // Assert
            var actual = outputMs.ToArray();

            Assert.Equal(expected.Count, actual.Length);
            Assert.Equal(expected, actual);
        }