コード例 #1
0
        static void Main(string[] args)
        {
            Node node1 = new Node(1);
            Node node2 = new Node(2);
            Node node3 = new Node(3);
            Node node4 = new Node(4);

            Stack myStack = new Stack(null);

            QueueStack myQueue = new QueueStack(myStack);

            Console.WriteLine($"Enqueue: {node1.Value}");
            myQueue.Enqueue(node1);
            Console.WriteLine($"Enqueue: {node2.Value}");
            myQueue.Enqueue(node2);
            Console.WriteLine($"Enqueue: {node3.Value}");
            myQueue.Enqueue(node3);
            Console.WriteLine($"Enqueue: {node4.Value}");
            myQueue.Enqueue(node4);

            Console.WriteLine($"Deque: {myQueue.Dequeue().Value}");
            Console.WriteLine($"Deque: {myQueue.Dequeue().Value}");
            Console.WriteLine($"Deque: {myQueue.Dequeue().Value}");
            Console.WriteLine($"Deque: {myQueue.Dequeue().Value}");
        }
コード例 #2
0
        public void QueueStackIsEnptyWhenAllElementsAreRemoved()
        {
            var sut = new QueueStack <int>();

            sut.Push(1);
            sut.Push(2);
            Assert.Equal(2, sut.Pop());
            Assert.Equal(1, sut.Pop());
            Assert.True(sut.IsEmpty);
        }
コード例 #3
0
        public void QueueStackIncreasesCapacityOnDemand()
        {
            var sut = new QueueStack <int>();

            sut.Push(1);
            sut.Push(2);
            Assert.Equal(2, sut.Pop());
            Assert.Equal(1, sut.Pop());
            Assert.True(sut.IsEmpty);
        }
コード例 #4
0
        public void DequeueReturnsNullIfNoNodesInQeueue()
        {
            //Arrange
            Stack myStack = new Stack(null);

            QueueStack myQueue = new QueueStack(myStack);

            //Asssert
            Assert.Null(myQueue.Dequeue());
        }
コード例 #5
0
        public void EnqueueAddsNodeToTopOfStackA()
        {
            //Arrange
            Stack myStack = new Stack(new Node(1));

            QueueStack myQueue = new QueueStack(myStack);

            myQueue.Enqueue(new Node(2));

            //Asssert
            Assert.Equal(2, myQueue.A.Top.Value);
        }
コード例 #6
0
        public void QueueStackWorksInLifoOrder()
        {
            var sut = new QueueStack <int>();

            for (var i = 0; i < 100; i++)
            {
                sut.Push(i);
            }
            for (var i = 99; i >= 0; i--)
            {
                Assert.Equal(i, sut.Pop());
            }
        }
コード例 #7
0
        public void QueueStackWorksInLifoOrderWhenIntermittentPushesAccures()
        {
            var sut = new QueueStack <int>();

            sut.Push(1);
            sut.Push(2);
            sut.Push(3);
            Assert.Equal(3, sut.Pop());
            sut.Push(4);
            sut.Push(5);
            Assert.Equal(5, sut.Pop());
            Assert.Equal(4, sut.Pop());
            Assert.Equal(2, sut.Pop());
            Assert.Equal(1, sut.Pop());
        }
コード例 #8
0
        public void QueueFunctionsAsFIFO()
        {
            //Arrange
            Node node1 = new Node(1);
            Node node2 = new Node(2);

            Stack myStack = new Stack(node1);

            QueueStack myQueue = new QueueStack(myStack);

            myQueue.Enqueue(node2);

            //Asssert
            Assert.Equal(1, myQueue.Dequeue().Value);
        }
コード例 #9
0
        public void PopFromEmptyStackThrowsAnException()
        {
            var sut = new QueueStack <int>();

            Assert.Throws <ArgumentException>(() => sut.Pop());
        }
コード例 #10
0
        public void QueueStackCorrectlyReportsItsEmptiness()
        {
            var sut = new QueueStack <int>();

            Assert.True(sut.IsEmpty);
        }