public void TestProperties() { // invalid properties using (var stack = new StreamStack()) { Assert.IsFalse(stack.CanSeek); Assert.IsFalse(stack.CanRead); Assert.IsFalse(stack.CanWrite); AssertException(() => { var x = stack.Position; }); AssertException(() => stack.Position = 10); AssertException(() => { var x = stack.Length; }); AssertException(() => stack.SetLength(10)); Assert.IsNull(stack.Top); } // valid properties using (var stack = new StreamStack()) { var top = new MemoryStream(); stack.Push(top); Assert.IsTrue(stack.CanRead); Assert.IsTrue(stack.CanWrite); Assert.AreEqual(stack.Top, top); } using (var stack = new StreamStack()) { stack.Push(new MemoryStream(new Byte[10], false)); Assert.IsTrue(stack.CanRead); Assert.IsFalse(stack.CanWrite); } }