public void GivenLazyTransformStream_WhenExecutingWriteMethods_NotSupportedExceptionThrown() { using (var lazyTransformStream = new LazyTransformReadOnlyStream <byte[]>(new byte[0], ReverseByteArray)) { Assert.Throws <NotSupportedException>(() => lazyTransformStream.SetLength(1)); Assert.Throws <NotSupportedException>(() => lazyTransformStream.Write(new byte[0], 1, 0)); } }
public void GivenLazyTransformStream_WhenTransformingAnInputStream_InputStreamIsNotReadUntilLazyStreamIsRead() { using (var inputStream = _recyclableMemoryStreamManager.GetStream("GivenLazyTransformStream_WhenTransformingAnInputStream_InputStreamIsNotReadUntilLazyStreamIsRead.TestData", TestData, 0, TestData.Length)) using (var lazyTransform = new LazyTransformReadOnlyStream <Stream>(inputStream, ReadAndCreateNewStream)) { Assert.Equal(0, inputStream.Position); Assert.Equal(TestData.Length, lazyTransform.Length); Assert.Equal(TestData.Length, inputStream.Position); } }
public void GivenLazyTransformStream_WhenConstructed_CanReadSeekButCannotWrite() { Assert.Throws <ArgumentNullException>(() => new LazyTransformReadOnlyStream <string>(string.Empty, null)); using (var lazyTransformStream = new LazyTransformReadOnlyStream <byte[]>(new byte[0], ReverseByteArray)) { Assert.True(lazyTransformStream.CanRead); Assert.True(lazyTransformStream.CanSeek); Assert.False(lazyTransformStream.CanWrite); } }
public void GivenLazyTransformStream_WhenTransformedDataHasDifferentLength_ReturnsTheCorrectStreamLength() { using (var lazyTransformStream = new LazyTransformReadOnlyStream <byte[]>(TestData, DoubleByteArray)) { Assert.Equal(TestData.Length * 2, lazyTransformStream.Length); var readBuffer = new byte[lazyTransformStream.Length]; lazyTransformStream.Read(readBuffer, 0, readBuffer.Length); Assert.Equal(readBuffer.Length, lazyTransformStream.Position); } }
private static GCWatch GetGCWatch <T>(T inputData, Func <T, Stream> transformFunction) { var lazyTransform = new LazyTransformReadOnlyStream <T>(inputData, transformFunction); var result = new GCWatch(lazyTransform); // Read the entire stream var outputBuffer = new byte[lazyTransform.Length]; lazyTransform.Read(outputBuffer, 0, outputBuffer.Length); return(result); }
public void GivenReverseStreamFunction_WhenUsingLazyTransformStream_StreamIsReversed() { using (var lazyTransform = new LazyTransformReadOnlyStream <byte[]>(TestData, ReverseByteArray)) { Assert.Equal(TestData.Length, lazyTransform.Length); var resultBuffer = new byte[TestData.Length]; Assert.Equal(TestData.Length, lazyTransform.Read(resultBuffer, 0, TestData.Length)); for (var i = 0; i < TestData.Length; i++) { Assert.Equal(TestData[i], resultBuffer[TestData.Length - 1 - i]); } } }
public void GivenLazyTransformStream_WhenSeeking_IsSetToCorrectStreamPosition() { using (var lazyTransformStream = new LazyTransformReadOnlyStream <byte[]>(TestData, DoubleByteArray)) { Assert.True(lazyTransformStream.CanSeek); Assert.Equal(TestData.Length * 2, lazyTransformStream.Length); Assert.Equal(0, lazyTransformStream.Position); lazyTransformStream.Seek(2, SeekOrigin.Current); Assert.Equal(2, lazyTransformStream.Position); lazyTransformStream.Seek(lazyTransformStream.Length - 1, SeekOrigin.Begin); Assert.Equal(lazyTransformStream.Length - 1, lazyTransformStream.Position); lazyTransformStream.Seek(0, SeekOrigin.Begin); Assert.Equal(0, lazyTransformStream.Position); lazyTransformStream.Seek(-1, SeekOrigin.End); Assert.Equal(lazyTransformStream.Length - 1, lazyTransformStream.Position); } }