Ejemplo n.º 1
0
        public void EnqueueDequeueTest()
        {
            _pq.Clear();
            var item1 = new TestHeapItem(0f, 0f);
            var item2 = new TestHeapItem(0f, 2f);
            var item3 = new TestHeapItem(0f, 5f);
            var item4 = new TestHeapItem(0f, 4f);
            var item5 = new TestHeapItem(0f, 8f);

            _pq.Enqueue(item3);
            _pq.Enqueue(item2);
            _pq.Enqueue(item1);
            _pq.Enqueue(item4);
            _pq.Enqueue(item5);

            Assert.AreEqual(5, _pq.Count);
            Assert.True(_pq.IsHeapValid());

            Assert.AreEqual(item1, _pq.Dequeue());
            Assert.AreEqual(item2, _pq.Peek());
            Assert.True(_pq.IsHeapValid());
            Assert.AreEqual(4, _pq.Count);
            Assert.True(_pq.HasNext);

            Assert.AreEqual(item2, _pq.Dequeue());
            Assert.AreEqual(item4, _pq.Peek());
            Assert.True(_pq.IsHeapValid());
            Assert.AreEqual(3, _pq.Count);
            Assert.True(_pq.HasNext);

            Assert.AreEqual(item4, _pq.Dequeue());
            Assert.AreEqual(item3, _pq.Peek());
            Assert.True(_pq.IsHeapValid());
            Assert.AreEqual(2, _pq.Count);
            Assert.True(_pq.HasNext);

            Assert.AreEqual(item3, _pq.Dequeue());
            Assert.AreEqual(item5, _pq.Peek());
            Assert.True(_pq.IsHeapValid());
            Assert.AreEqual(1, _pq.Count);
            Assert.True(_pq.HasNext);

            Assert.AreEqual(item5, _pq.Dequeue());
            Assert.AreEqual(null, _pq.Peek());
            Assert.True(_pq.IsHeapValid());
            Assert.AreEqual(0, _pq.Count);
            Assert.False(_pq.HasNext);
        }
Ejemplo n.º 2
0
        public void ContainsTest()
        {
            _pq.Clear();
            var item1 = new TestHeapItem(0f, 0f);
            var item2 = new TestHeapItem(0f, 1f);
            var item3 = new TestHeapItem(0f, 2f);
            var item4 = new TestHeapItem(0f, 3f);
            var item5 = new TestHeapItem(0f, 4f);
            var item6 = new TestHeapItem(11f, 100f);

            _pq.Enqueue(item3);
            _pq.Enqueue(item2);
            _pq.Enqueue(item1);
            _pq.Enqueue(item4);
            _pq.Enqueue(item5);


            Assert.True(_pq.Contains(item1));
            Assert.True(_pq.Contains(item2));
            Assert.True(_pq.Contains(item3));
            Assert.True(_pq.Contains(item4));
            Assert.True(_pq.Contains(item5));
            Assert.False(_pq.Contains(item6));

            Assert.AreEqual(5, _pq.Count);
            Assert.True(_pq.IsHeapValid());

            Assert.AreEqual(item1, _pq.Dequeue());
            Assert.True(_pq.IsHeapValid());
            Assert.False(_pq.Contains(item1));

            Assert.AreEqual(item2, _pq.Dequeue());
            Assert.True(_pq.IsHeapValid());
            Assert.False(_pq.Contains(item2));

            Assert.AreEqual(item3, _pq.Dequeue());
            Assert.True(_pq.IsHeapValid());
            Assert.False(_pq.Contains(item3));

            Assert.AreEqual(item4, _pq.Dequeue());
            Assert.True(_pq.IsHeapValid());
            Assert.False(_pq.Contains(item4));

            Assert.AreEqual(item5, _pq.Dequeue());
            Assert.True(_pq.IsHeapValid());
            Assert.False(_pq.Contains(item5));
        }
Ejemplo n.º 3
0
        public void EnqueueDequeueOrderTest()
        {
            _pq.Clear();
            var item1 = new TestHeapItem(1f, 0f);
            var item2 = new TestHeapItem(2f, 0f);
            var item3 = new TestHeapItem(3f, 1f);
            var item4 = new TestHeapItem(4f, 1f);
            var item5 = new TestHeapItem(5f, 1f);

            _pq.Enqueue(item1);
            _pq.Enqueue(item2);
            _pq.Enqueue(item3);
            _pq.Enqueue(item4);
            _pq.Enqueue(item5);

            Assert.AreEqual(5, _pq.Count);
            Assert.True(_pq.IsHeapValid());

            Assert.AreEqual(item1, _pq.Dequeue());
            Assert.True(_pq.IsHeapValid());
            Assert.AreEqual(4, _pq.Count);
            Assert.True(_pq.HasNext);

            Assert.AreEqual(item2, _pq.Dequeue());
            Assert.True(_pq.IsHeapValid());
            Assert.AreEqual(3, _pq.Count);
            Assert.True(_pq.HasNext);

            Assert.AreEqual(item3, _pq.Dequeue());
            Assert.True(_pq.IsHeapValid());
            Assert.AreEqual(2, _pq.Count);
            Assert.True(_pq.HasNext);

            Assert.AreEqual(item4, _pq.Dequeue());
            Assert.True(_pq.IsHeapValid());
            Assert.AreEqual(1, _pq.Count);
            Assert.True(_pq.HasNext);

            Assert.AreEqual(item5, _pq.Dequeue());
            Assert.True(_pq.IsHeapValid());
            Assert.AreEqual(0, _pq.Count);
            Assert.False(_pq.HasNext);
        }
Ejemplo n.º 4
0
        public void RemoveTest()
        {
            _pq.Clear();
            var item1 = new TestHeapItem(0f, 0f);
            var item2 = new TestHeapItem(0f, 1f);
            var item3 = new TestHeapItem(0f, 2f);
            var item4 = new TestHeapItem(0f, 3f);
            var item5 = new TestHeapItem(0f, 4f);

            _pq.Enqueue(item3);
            _pq.Enqueue(item2);
            _pq.Enqueue(item1);
            _pq.Enqueue(item4);
            _pq.Enqueue(item5);

            Assert.AreEqual(5, _pq.Count);
            Assert.True(_pq.IsHeapValid());

            _pq.Remove(item1);
            Assert.True(_pq.IsHeapValid());
            Assert.False(_pq.Contains(item1));

            _pq.Remove(item2);
            Assert.True(_pq.IsHeapValid());
            Assert.False(_pq.Contains(item2));

            _pq.Remove(item3);
            Assert.True(_pq.IsHeapValid());
            Assert.False(_pq.Contains(item3));

            _pq.Remove(item4);
            Assert.True(_pq.IsHeapValid());
            Assert.False(_pq.Contains(item4));

            _pq.Remove(item5);
            Assert.True(_pq.IsHeapValid());
            Assert.False(_pq.Contains(item5));
        }
Ejemplo n.º 5
0
        public void UpdatePriorityTest()
        {
            _pq.Clear();
            var item1 = new TestHeapItem(0f, 0f);
            var item2 = new TestHeapItem(0f, 1f);
            var item3 = new TestHeapItem(0f, 2f);
            var item4 = new TestHeapItem(0f, 3f);
            var item5 = new TestHeapItem(0f, 4f);

            _pq.Enqueue(item3);
            _pq.Enqueue(item2);
            _pq.Enqueue(item1);
            _pq.Enqueue(item4);
            _pq.Enqueue(item5);

            Assert.AreEqual(item1, _pq.Peek());

            item5.Priority = -1f;
            _pq.UpdatePriority(item5);
            Assert.AreEqual(item5, _pq.Peek());

            item4.Priority = -2f;
            _pq.UpdatePriority(item4);
            Assert.AreEqual(item4, _pq.Peek());

            item3.Priority = -3f;
            _pq.UpdatePriority(item3);
            Assert.AreEqual(item3, _pq.Peek());

            item2.Priority = -4f;
            _pq.UpdatePriority(item2);
            Assert.AreEqual(item2, _pq.Peek());

            item1.Priority = -5f;
            _pq.UpdatePriority(item1);
            Assert.AreEqual(item1, _pq.Peek());
        }