public void TestRemainingCapacity()
        {
            LinkedBlockingDeque <String> q = PopulatedDeque(SIZE);

            for (int i = 0; i < SIZE; ++i)
            {
                Assert.AreEqual(i, q.RemainingCapacity());
                Assert.AreEqual(SIZE - i, q.Size());
                q.Remove();
            }
            for (int i = 0; i < SIZE; ++i)
            {
                Assert.AreEqual(SIZE - i, q.RemainingCapacity());
                Assert.AreEqual(i, q.Size());
                q.Add(i.ToString());
            }
        }
        private LinkedBlockingDeque <String> PopulatedDeque(int n)
        {
            LinkedBlockingDeque <String> q = new LinkedBlockingDeque <String>(n);

            Assert.IsTrue(q.IsEmpty());
            for (int i = 0; i < n; i++)
            {
                Assert.IsTrue(q.Offer(i.ToString()));
            }
            Assert.IsFalse(q.IsEmpty());
            Assert.AreEqual(0, q.RemainingCapacity());
            Assert.AreEqual(n, q.Size());
            return(q);
        }