public void Queue_Generic_Dequeue_AllElements(int count)
        {
            PooledQueue <T> queue    = GenericQueueFactory(count);
            List <T>        elements = queue.ToList();

            foreach (T element in elements)
            {
                Assert.Equal(element, queue.Dequeue());
            }
        }
        public void Queue_Generic_TrimExcess_Repeatedly(int count)
        {
            PooledQueue <T> queue    = GenericQueueFactory(count);;
            List <T>        expected = queue.ToList();

            queue.TrimExcess();
            queue.TrimExcess();
            queue.TrimExcess();
            Assert.True(queue.SequenceEqual(expected));
        }
        public void Queue_Generic_TryDequeue_AllElements(int count)
        {
            PooledQueue <T> queue    = GenericQueueFactory(count);
            List <T>        elements = queue.ToList();

            foreach (T element in elements)
            {
                Assert.True(queue.TryDequeue(out T result));
                Assert.Equal(element, result);
            }
        }
        public void Queue_Generic_TrimExcess_AfterRemovingOneElement(int count)
        {
            if (count > 0)
            {
                PooledQueue <T> queue    = GenericQueueFactory(count);;
                List <T>        expected = queue.ToList();
                queue.TrimExcess();
                T removed = queue.Dequeue();
                expected.Remove(removed);
                queue.TrimExcess();

                Assert.True(queue.SequenceEqual(expected));
            }
        }