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); }
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)); }
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); }
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)); }
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()); }