public void TestInsertAndDelete() { var values = new List <int> { 31, 30, 28, 29, 26, 19, 27, 21, 20, 10, 25, 18, 11, 24, 15, 17, 6, 12, 13, 1, 7, 16, 9, 3, 2, 4, 8, 23, 22, 5, 14 }; var q = new MinPriorityQueue <int, int>(); int count = 0; foreach (var v in values) { q.Insert(v + 100, v + 200, v); count++; Assert.AreEqual(count, q.Count); AssertMinHeap(q); AssertIndices(q); } Assert.False(q.Remove(19)); Assert.True(q.Any(node => node.Key == 119)); Assert.True(q.Any(node => node.Value == 219)); Assert.True(q.Any(node => node.Priority == 19)); Assert.True(q.Remove(119)); AssertMinHeap(q); AssertIndices(q); Assert.False(q.Any(node => node.Key == 119)); Assert.False(q.Any(node => node.Value == 219)); Assert.False(q.Any(node => node.Priority == 19)); Assert.False(q.Remove(119)); }