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)); }
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); }
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); }
/// <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); }
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); }