public void AddFourRemoveFourThenAddFiveRemoveFiveAddFourRemoveFourAssertCorrectBehaviour()
        {
            var queue = new Queues <int>();

            for (int i = 0; i < 4; i++)
            {
                queue.Enqueue(i);
            }

            for (int i = 0; i < 4; i++)
            {
                Assert.AreEqual(i, queue.Dequeue());
            }

            for (int i = 0; i < 5; i++)
            {
                queue.Enqueue(i);
            }

            for (int i = 0; i < 5; i++)
            {
                Assert.AreEqual(i, queue.Dequeue());
            }

            for (int i = 0; i < 4; i++)
            {
                queue.Enqueue(i);
            }

            for (int i = 0; i < 4; i++)
            {
                Assert.AreEqual(i, queue.Dequeue());
            }
        }
        public void AddFour_RemoveTwo_AddFour_Assert_CorrectBehviour()
        {
            var queue = new Queues <int>();

            for (int i = 0; i < 4; i++)
            {
                queue.Enqueue(i);
            }

            for (int k = 0; k < 2; k++)
            {
                var item = queue.Dequeue();
                Assert.AreEqual(item, k);
            }

            for (int j = 5; j < 8; j++)
            {
                queue.Enqueue(j);
            }

            for (int k = 2; k < 4; k++)
            {
                var item = queue.Dequeue();
                Assert.AreEqual(item, k);
            }
        }
        public void AddThree_RemoveTwo_AddOne_Assert_CorrectBehviourForWrappedHead()
        {
            var queue = new Queues <int>();

            for (int i = 0; i < 3; i++)
            {
                queue.Enqueue(i);
            }

            for (int k = 0; k < 2; k++)
            {
                var item = queue.Dequeue();
                Assert.AreEqual(item, k);
            }

            //Add two more
            for (int j = 3; j < 5; j++)
            {
                queue.Enqueue(j);
            }

            for (int i = 2; i < 5; i++)
            {
                var item = queue.Dequeue();
                Assert.AreEqual(item, i);
            }
        }
        public void AddFiveRemoveFiveAddTenRemoveTenAddFour()
        {
            var queue = new Queues <int>();

            for (int i = 0; i < 5; i++)
            {
                queue.Enqueue(i);
            }

            for (int i = 0; i < 5; i++)
            {
                Assert.AreEqual(i, queue.Dequeue());
            }

            for (int i = 0; i < 10; i++)
            {
                queue.Enqueue(i);
            }

            for (int i = 0; i < 10; i++)
            {
                Assert.AreEqual(i, queue.Dequeue());
            }

            for (int i = 0; i < 4; i++)
            {
                queue.Enqueue(i);
            }

            for (int i = 0; i < 4; i++)
            {
                Assert.AreEqual(i, queue.Dequeue());
            }
        }
示例#5
0
        public void DequeueOnQueue()
        {
            Queues queue   = new Queues();
            Node   nodeOne = new Node(1);
            Node   nodeTwo = new Node(2);

            queue.Enqueue(nodeOne);
            queue.Enqueue(nodeTwo);
            Assert.True(queue.Dequeue().Value == nodeOne.Value);
            Assert.True(queue.Dequeue().Value == nodeTwo.Value);
            Assert.Throws <NullReferenceException>(() => queue.Dequeue());
        }
示例#6
0
        public IEnumerable <T> GetMaxValue()
        // Short way = return InOrder().Max();
        // reduce
        // return InOrder().Aggregate(max,next) => max > next ? max : next);
        {
            if (Root == null)
            {
                throw new Exception("Root is Null");
            }


            Queues <Node> nodeQueue = new Queues <Node>();
            T             max       = Root.Value;
            Node          current   = nodeQueue.Dequeue();

            if (current.Value.CompareTo(max) > 0)
            {
                max = current.Value;
            }
            if (current.Left != null)
            {
                nodeQueue.Enqueue(current.Left);
            }

            if (current.Right != null)
            {
                nodeQueue.Enqueue(current.Right);
            }


            yield return(max);
        }
示例#7
0
        public IEnumerable <T> BreadthFirstSearch()
        {
            if (Root is null)
            {
                yield break;
            }
            else
            {
                //Create queue
                Queues <Node> breadthTraversal = new Queues <Node>();
                breadthTraversal.Enqueue(Root);

                // check if tree is empty
                while (!breadthTraversal.IsEmpty())
                {
                    //dequeue root first
                    var front = breadthTraversal.Dequeue();
                    yield return(front.Value);


                    //move from left to right
                    if (front.Left != null)
                    {
                        breadthTraversal.Enqueue(front.Left);
                    }
                    if (front.Right != null)
                    {
                        breadthTraversal.Enqueue(front.Right);
                    }
                }
            }
        }
示例#8
0
        public void EmptyQueueAfterMultipleDequeues()
        {
            Queues <int> queue = new Queues <int>();

            queue.Enqueue(10);
            queue.Enqueue(11);
            queue.Enqueue(12);

            queue.Dequeue();
            queue.Dequeue();
            queue.Dequeue();

            bool expected = true;

            Assert.Equal(expected, queue.IsEmpty());
        }
示例#9
0
        public void EmptyQueueThrowsException()
        {
            Queues <int> queue = new Queues <int>();

            var dequeueResult = Assert.Throws <Exception>(() => queue.Dequeue());
            var peekResult    = Assert.Throws <Exception>(() => queue.Peek());

            string expected = ("The queue is empty");

            Assert.Equal(expected, dequeueResult.Message);
            Assert.Equal(expected, peekResult.Message);
        }
示例#10
0
        public void CanDequeueOutOfQueue()
        {
            Queues <int> queue = new Queues <int>();

            queue.Enqueue(10);
            queue.Enqueue(11);
            queue.Enqueue(12);

            Node <int> returned = queue.Dequeue();
            int        expected = 10;

            Assert.Equal(expected, returned.Value);
        }
        public void QueueDequeue()
        {
            {
                Node myNode1 = new Node(1);
                Node myNode2 = new Node(1);

                Queues Queue = new Queues(myNode1);
                Queue.Enqueue(myNode2);

                Queue.Dequeue();

                Assert.Equal(myNode2, Queue.Peek());
            }
        }
        public void AddFiveElementsAssertElementsAddedInOrder()
        {
            var queue = new Queues <int>();

            for (int i = 0; i < 5; i++)
            {
                queue.Enqueue(i);
            }

            for (int i = 0; i < 5; i++)
            {
                var item = queue.Dequeue();
                Assert.AreEqual(i, item);
            }
        }
        public void AddSixteenItems_RemoveNineItems_AssertCorrectBehaviourOfResize()
        {
            var queue = new Queues <int>();

            for (int i = 0; i < 16; i++)
            {
                queue.Enqueue(i);
            }

            for (int k = 15; k > 6; k--)
            {
                var item = queue.Dequeue();
            }

            Assert.AreEqual(7, queue.Count);
        }
示例#14
0
        public void DequeueOnEmptyQueue()
        {
            Queues queue = new Queues();

            Assert.Throws <NullReferenceException>(() => queue.Dequeue());
        }