コード例 #1
0
        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));
        }