Ejemplo n.º 1
0
        public void QueueViaStacksTest()
        {
            var myQueue = new QueueViaStacks <int>();

            // not possible to dequeue from an empty queue
            Assert.Equal(0, myQueue.Length);
            Assert.Throws <System.InvalidOperationException>(() => myQueue.Dequeue());

            // items are added by enqueue
            for (int i = 0; i < 3; i++)
            {
                myQueue.Enqueue(i);
            }

            Assert.Equal(3, myQueue.Length);

            // valid values are dequeued
            Assert.Equal(0, myQueue.Dequeue());
            Assert.Equal(1, myQueue.Dequeue());
            Assert.Equal(1, myQueue.Length);

            // enqueing new value doesn't break the dequeue
            myQueue.Enqueue(3);
            Assert.Equal(2, myQueue.Dequeue());

            // peek returns value without removing it from the queue
            Assert.Equal(1, myQueue.Length);
            Assert.Equal(3, myQueue.Peek());
            Assert.Equal(1, myQueue.Length);

            // clear removes all values from the queue
            myQueue.Clear();
            Assert.Equal(0, myQueue.Length);
        }
Ejemplo n.º 2
0
 private static void CollectionsEqual(int[] expected, QueueViaStacks <int> actual)
 {
     Assert.Equal(expected.Length, actual.Count());
     foreach (var item in expected)
     {
         Assert.Equal(item, actual.Remove());
     }
 }
Ejemplo n.º 3
0
        public void QueueViaStacks_Pop_WhenEmpty_ThrowsEmptyQueueException()
        {
            // Arrange
            var    queueViaStacks = new QueueViaStacks <int>();
            Action action         = () => { queueViaStacks.Pop(); };

            // Act && Assert
            action.Should().Throw <EmptyQueueException>().WithMessage("Queue is Empty");
        }
Ejemplo n.º 4
0
        private static QueueViaStacks <int> CreateQueueViaStacksFromArray(int[] input)
        {
            QueueViaStacks <int> queue = new QueueViaStacks <int>();

            foreach (var item in input)
            {
                queue.Add(item);
            }
            return(queue);
        }
Ejemplo n.º 5
0
        public void ReturnValuesInFIFOOrderingAfterModifications()
        {
            QueueViaStacks <int> queue = CreateQueueViaStacksFromArray(new [] { 9, 6, 1, 2 });

            Assert.Equal(9, queue.Peek());
            Assert.Equal(9, queue.Remove());
            Assert.Equal(6, queue.Remove());
            queue.Add(3);
            queue.Add(4);
            CollectionsEqual(new [] { 1, 2, 3, 4 }, queue);
        }
Ejemplo n.º 6
0
        public void QueueViaStacks_IsEmpty_WhenEmpty_ReturnsTrue()
        {
            // Arrange
            var queueViaStacks = new QueueViaStacks <int>();

            // Act
            var isEmpty = queueViaStacks.IsEmpty();

            // Assert
            isEmpty.Should().BeTrue();
        }
Ejemplo n.º 7
0
        public void QueueViaStacks_Peek_WhenNotEmpty_ReturnsOldestElements()
        {
            // Arrange
            var queueViaStacks = new QueueViaStacks <int>();

            queueViaStacks.Push(1);
            queueViaStacks.Push(2);
            queueViaStacks.Push(3);
            queueViaStacks.Push(4);
            queueViaStacks.Push(5);

            // Act&Assert
            queueViaStacks.Peek().Should().Be(1);
            queueViaStacks.Push(6);
            queueViaStacks.Pop();
            queueViaStacks.Peek().Should().Be(2);
        }
Ejemplo n.º 8
0
        public void ReturnValuesInFIFOOrdering(int[] input)
        {
            QueueViaStacks <int> queue = CreateQueueViaStacksFromArray(input);

            CollectionsEqual(input, queue);
        }