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); }
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()); } }
public void EmptyQueueTest(IPersistentQueue <int> empty) { CheckEmptyBehaviour(empty); Assert.NotSame(empty, empty.Enqueue(1)); }