public void TestCanReadWriteSeekTimeout() { var buffer = new byte[1024]; using (var filtered = new FilteredStream(new CanReadWriteSeekStream(true, false, false, false))) { Assert.IsTrue(filtered.CanRead); Assert.IsFalse(filtered.CanWrite); Assert.IsFalse(filtered.CanSeek); Assert.IsFalse(filtered.CanTimeout); Assert.Throws <NotImplementedException> (() => filtered.Read(buffer, 0, buffer.Length)); Assert.Throws <NotSupportedException> (() => filtered.Write(buffer, 0, buffer.Length)); Assert.Throws <NotSupportedException> (() => filtered.Seek(0, SeekOrigin.End)); } using (var filtered = new FilteredStream(new CanReadWriteSeekStream(false, true, false, false))) { Assert.IsFalse(filtered.CanRead); Assert.IsTrue(filtered.CanWrite); Assert.IsFalse(filtered.CanSeek); Assert.IsFalse(filtered.CanTimeout); Assert.Throws <NotSupportedException> (() => filtered.Read(buffer, 0, buffer.Length)); Assert.Throws <NotImplementedException> (() => filtered.Write(buffer, 0, buffer.Length)); Assert.Throws <NotSupportedException> (() => filtered.Seek(0, SeekOrigin.End)); } using (var filtered = new FilteredStream(new CanReadWriteSeekStream(false, false, true, false))) { Assert.IsFalse(filtered.CanRead); Assert.IsFalse(filtered.CanWrite); Assert.IsFalse(filtered.CanSeek); // FilteredStream can never seek Assert.IsFalse(filtered.CanTimeout); Assert.Throws <NotSupportedException> (() => filtered.Read(buffer, 0, buffer.Length)); Assert.Throws <NotSupportedException> (() => filtered.Write(buffer, 0, buffer.Length)); Assert.Throws <NotSupportedException> (() => filtered.Seek(0, SeekOrigin.End)); // FilteredStream can never seek } }