public void GetByteRange_WhenBufferIsSmallerThanRequestedCount_Throws() { // Arrange var bytes = Enumerable.Range(0, 255).Select(i => (byte)i).ToArray(); var rangeByteBuffer = new RangeByteBuffer(new MemoryByteBuffer(bytes), 0, 255); // Act + Assert var buffer = new byte[10]; Assert.Throws <ArgumentException>(() => rangeByteBuffer.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); var buffer = new RangeByteBuffer(new MemoryByteBuffer(bytes), 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(); var buffer = new RangeByteBuffer(new MemoryByteBuffer(bytes), 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); }
public override IByteBuffer GetFrame(int frame) { int offset = UncompressedFrameSize * frame; IByteBuffer buffer = new RangeByteBuffer(Element.Buffer, (uint)offset, (uint)UncompressedFrameSize); if (BytesAllocated == 1 && Syntax.Endian == Endian.Little) { buffer = new SwapByteBuffer(buffer, 2); } else if (Syntax.Endian == Endian.Big) { buffer = new SwapByteBuffer(buffer, 2); } return(buffer); }
public override IByteBuffer GetFrame(int frame) { if (frame < 0 || frame >= NumberOfFrames) { throw new IndexOutOfRangeException("Requested frame out of range!"); } int offset = UncompressedFrameSize * frame; IByteBuffer buffer = new RangeByteBuffer(Element.Buffer, (uint)offset, (uint)UncompressedFrameSize); // mainly for GE Private Implicit VR Big Endian if (Syntax.SwapPixelData) { buffer = new SwapByteBuffer(buffer, 2); } return(buffer); }
public void CopyToStream_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); var buffer = new RangeByteBuffer(new MemoryByteBuffer(bytes), offset, count); var expected = new ArraySegment <byte>(bytes, offset, count); // Act buffer.CopyToStream(outputMs); // Assert var actual = outputMs.ToArray(); Assert.Equal(expected.Count, actual.Length); Assert.Equal(expected, actual); }
public override IByteBuffer GetFrame(int frame) { if (frame < 0 || frame >= NumberOfFrames) { throw new IndexOutOfRangeException("Requested frame out of range!"); } int offset = UncompressedFrameSize * frame; IByteBuffer buffer = new RangeByteBuffer(Element.Buffer, (uint)offset, (uint)UncompressedFrameSize); //TODO: trace down the need for this additional byte swap if (Syntax.Endian == Endian.Big && !Syntax.SwapPixelData) { buffer = new SwapByteBuffer(buffer, 2); } // mainly for GE Private Implicit VR Little Endian if (Syntax.SwapPixelData) { buffer = new SwapByteBuffer(buffer, 2); } return(buffer); }