public void SetLength() { var s = new ReusableStream(16); Assert.AreEqual(0, s.Length); Assert.AreEqual(0, s.UnreadByteCount); Assert.AreEqual(16, s.Capacity); s.SetLength(4); Assert.AreEqual(4, s.Length); Assert.AreEqual(4, s.UnreadByteCount); Assert.AreEqual(16, s.Capacity); s.ReadInt32(); Assert.AreEqual(4, s.Length); Assert.AreEqual(0, s.UnreadByteCount); Assert.AreEqual(16, s.Capacity); s.SetLength(16); Assert.AreEqual(16, s.Length); Assert.AreEqual(12, s.UnreadByteCount); Assert.AreEqual(16, s.Capacity); s.SetLength(17); Assert.AreEqual(17, s.Length); Assert.AreEqual(13, s.UnreadByteCount); Assert.IsTrue(s.Capacity >= 17); s.SetLength(0); Assert.AreEqual(0, s.Length); Assert.AreEqual(0, s.UnreadByteCount); Assert.IsTrue(s.Capacity >= 17); Assert.Throws <ArgumentOutOfRangeException>(() => s.SetLength(-1)); }