コード例 #1
0
        public void EnqueueDequeueTest(IPersistentQueue <int> empty)
        {
            int count = 100;

            IEnumerable <int> items = Enumerable.Range(0, count);

            IPersistentQueue <int> queue = empty;

            foreach (int item in items)
            {
                int countBefore = queue.Count;

                queue = queue.Enqueue(item);
                Assert.Equal(countBefore + 1, queue.Count);

                (int head, IPersistentQueue <int> tail) = queue.Dequeue();
                Assert.Equal(items.First(), head);
                Assert.Equal(countBefore, tail.Count);
            }

            foreach (int item in items)
            {
                int countBefore = queue.Count;

                int head;
                (head, queue) = queue.Dequeue();
                Assert.Equal(item, head);
            }

            CheckEmptyBehaviour(queue);
        }
コード例 #2
0
        public void EnumeratorTest()
        {
            int count = 100;

            IEnumerable <int> items = Enumerable.Range(0, count);

            IPersistentQueue <int> queue = PersistentQueue <int> .Empty;

            foreach (int item in items)
            {
                queue = queue.Enqueue(item);
            }

            foreach (IEnumerator enumerator in
                     new IEnumerator[] { queue.GetEnumerator(), ((IEnumerable)queue).GetEnumerator() })
            {
                foreach (int item in items)
                {
                    Assert.True(enumerator.MoveNext());
                    Assert.Equal(item, enumerator.Current);
                }
                Assert.False(enumerator.MoveNext());
            }
        }
コード例 #3
0
 public void EmptyQueueTest(IPersistentQueue <int> empty)
 {
     CheckEmptyBehaviour(empty);
     Assert.NotSame(empty, empty.Enqueue(1));
 }