Example #1
0
        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));
            }
        }