public void TestWritingBeyondEndBoundary() { using (var memory = new MemoryStream()) { var buffer = new byte[] { (byte)'A' }; memory.Write(buffer, 0, buffer.Length); memory.Position = 0; using (var bounded = new BoundStream(memory, 0, 2, true)) { buffer = new byte[] { (byte)'b', (byte)'c', (byte)'d' }; Assert.Throws <IOException> (() => bounded.Write(buffer, 0, buffer.Length)); } } }
public void TestCanReadWriteSeek() { var buffer = new byte[1024]; using (var bounded = new BoundStream(new CanReadWriteSeekStream(true, false, false, false), 0, -1, false)) { Assert.IsTrue(bounded.CanRead); Assert.IsFalse(bounded.CanWrite); Assert.IsFalse(bounded.CanSeek); Assert.IsFalse(bounded.CanTimeout); Assert.Throws <NotImplementedException> (() => bounded.Read(buffer, 0, buffer.Length)); Assert.Throws <NotSupportedException> (() => bounded.Write(buffer, 0, buffer.Length)); Assert.Throws <NotSupportedException> (() => bounded.Seek(0, SeekOrigin.End)); } using (var bounded = new BoundStream(new CanReadWriteSeekStream(false, true, false, false), 0, -1, false)) { Assert.IsFalse(bounded.CanRead); Assert.IsTrue(bounded.CanWrite); Assert.IsFalse(bounded.CanSeek); Assert.IsFalse(bounded.CanTimeout); Assert.Throws <NotSupportedException> (() => bounded.Read(buffer, 0, buffer.Length)); Assert.Throws <NotImplementedException> (() => bounded.Write(buffer, 0, buffer.Length)); Assert.Throws <NotSupportedException> (() => bounded.Seek(0, SeekOrigin.End)); } using (var bounded = new BoundStream(new CanReadWriteSeekStream(false, false, true, false), 0, -1, false)) { Assert.IsFalse(bounded.CanRead); Assert.IsFalse(bounded.CanWrite); Assert.IsTrue(bounded.CanSeek); Assert.IsFalse(bounded.CanTimeout); Assert.Throws <NotSupportedException> (() => bounded.Read(buffer, 0, buffer.Length)); Assert.Throws <NotSupportedException> (() => bounded.Write(buffer, 0, buffer.Length)); Assert.Throws <NotImplementedException> (() => bounded.Seek(0, SeekOrigin.End)); } }