public void CachingStreamReadsEntireBookTest() { const int bufferSize = 4096; using (var sourceStream = TestHelpers.GetResourceStream(ResourceName)) { using (var cachingStream = new CachingStream(sourceStream)) { using (var notcachingStream = TestHelpers.GetResourceStream(ResourceName)) { while (true) { var bufferedTempBuffer = new byte[bufferSize]; var notBufferedTempBuffer = new byte[bufferSize]; var bytesReadFromcachingStream = cachingStream.Read(bufferedTempBuffer, 0, bufferedTempBuffer.Length); var bytesReadFromNiotcachingStream = notcachingStream.Read(notBufferedTempBuffer, 0, notBufferedTempBuffer.Length); Assert.AreEqual(bytesReadFromcachingStream, bytesReadFromNiotcachingStream); Assert.IsTrue(bufferedTempBuffer.SequenceEqual(notBufferedTempBuffer)); if (bytesReadFromcachingStream == 0) { break; } } Assert.AreEqual(cachingStream.Length, notcachingStream.Length); Assert.AreEqual(cachingStream.Position, notcachingStream.Position); } } } }
public void SeekAndReadAfterEnd(int position) { var data = GenerateData(1000); using (var memoryStream = new MemoryStream(data, writable: false)) using (var cachingStream = new CachingStream(memoryStream, Ownership.Owns)) { cachingStream.Position = position; byte[] buffer = new byte[10]; Assert.AreEqual(0, cachingStream.Read(buffer, 0, buffer.Length)); } }
public void Dispose() { var data = GenerateData(1000); using (var memoryStream = new MemoryStream(data, writable: false)) using (var cachingStream = new CachingStream(memoryStream, Ownership.Owns)) { cachingStream.Dispose(); Assert.Throws <ObjectDisposedException>(() => { cachingStream.Flush(); }); Assert.Throws <ObjectDisposedException>(() => { var temp = cachingStream.Length; }); Assert.Throws <ObjectDisposedException>(() => { var temp = cachingStream.Position; }); Assert.Throws <ObjectDisposedException>(() => { cachingStream.Position = 1; }); Assert.Throws <ObjectDisposedException>(() => cachingStream.ReadByte()); Assert.Throws <ObjectDisposedException>(() => cachingStream.Read(new byte[10], 0, 1)); Assert.Throws <ObjectDisposedException>(() => cachingStream.Seek(1, SeekOrigin.Begin)); } }
public void CachingStreamSeeksCurrentTest() { using (var stream = TestHelpers.GetResourceStream(ResourceName)) { using (var cachingStream = new CachingStream(stream)) { var tempBuffer = new byte[100]; var bytesRead = cachingStream.Read(tempBuffer, 0, tempBuffer.Length); Assert.AreEqual(tempBuffer.Length, bytesRead); var position = cachingStream.Position; Assert.AreEqual(position, cachingStream.Seek(0, SeekOrigin.Current)); position = cachingStream.Position; Assert.AreEqual(position + 100, cachingStream.Seek(100, SeekOrigin.Current)); position = cachingStream.Position; Assert.AreEqual(position - 55, cachingStream.Seek(-55, SeekOrigin.Current)); } } }
public void SeekCurrent() { using (var stream = GetResourceStream(ResourceName)) { using (var bufferedStream = new CachingStream(stream)) { var tempBuffer = new byte[100]; var bytesRead = bufferedStream.Read(tempBuffer, 0, tempBuffer.Length); Assert.AreEqual(tempBuffer.Length, bytesRead); var position = bufferedStream.Position; Assert.AreEqual(position, bufferedStream.Seek(0, SeekOrigin.Current)); position = bufferedStream.Position; Assert.AreEqual(position + 100, bufferedStream.Seek(100, SeekOrigin.Current)); position = bufferedStream.Position; Assert.AreEqual(position - 55, bufferedStream.Seek(-55, SeekOrigin.Current)); } } }
public void ReadEntireBook() { const int bufferSize = 4096; using (var sourceStream = GetResourceStream(ResourceName)) { using (var bufferedStream = new CachingStream(sourceStream)) { using (var notBufferedStream = GetResourceStream(ResourceName)) { while (true) { var bufferedTempBuffer = new byte[bufferSize]; var notBufferedTempBuffer = new byte[bufferSize]; var bytesReadFromBufferedStream = bufferedStream.Read(bufferedTempBuffer, 0, bufferedTempBuffer.Length); var bytesReadFromNiotBufferedStream = notBufferedStream.Read(notBufferedTempBuffer, 0, notBufferedTempBuffer.Length); Assert.AreEqual(bytesReadFromBufferedStream, bytesReadFromNiotBufferedStream); Assert.IsTrue(bufferedTempBuffer.SequenceEqual(notBufferedTempBuffer)); if (bytesReadFromBufferedStream == 0) { break; } } Assert.AreEqual(bufferedStream.Length, notBufferedStream.Length); Assert.AreEqual(bufferedStream.Position, notBufferedStream.Position); } } } }