public void ReadByte(int size) { var data = GenerateData(size); using (var memoryStream = new MemoryStream(data, writable: false)) using (var cachingStream = new CachingStream(memoryStream, Ownership.Owns)) { for (int i = 0; i < size; i++) { Assert.AreEqual(data[i], cachingStream.ReadByte()); } Assert.AreEqual(size, (int)cachingStream.Position); Assert.AreEqual(-1, cachingStream.ReadByte()); Assert.AreEqual(size, (int)cachingStream.Position); } }
public void SeekAndReadByte() { Random random = new Random(2); var data = GenerateData(123456); using (var memoryStream = new MemoryStream(data, writable: false)) using (var cachingStream = new CachingStream(memoryStream, Ownership.Owns)) { for (int i = 0; i < 100; i++) { int offset = random.Next(data.Length - 1); cachingStream.Position = offset; Assert.AreEqual(data[offset], cachingStream.ReadByte()); } } }
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)); } }