public void PriorityQueue_FindAndReplace2_Normal()
        {
            var a        = 1;
            var b        = 2;
            var c        = 3;
            var comparer = new SortInt();

            _newPriorityQueue.Add(c, comparer);
            _newPriorityQueue.Add(b, comparer);
            _newPriorityQueue.Add(a, comparer);
            _newPriorityQueue.FindAndReplace(1, 55, (i, i1) => i == i1 ? 0 : -1, CompareInt);
            Assert.AreEqual(3, _newPriorityQueue.Count);
            Assert.AreEqual(2, _newPriorityQueue.First());
            Assert.AreEqual(55, _newPriorityQueue.Last());
        }
        public void PriorityQueue_FindAndReplace2_Missing()
        {
            var a        = 1;
            var b        = 2;
            var c        = 3;
            var comparer = new SortInt();

            _newPriorityQueue.Add(c, comparer);
            _newPriorityQueue.Add(b, comparer);
            _newPriorityQueue.Add(a, comparer);
            Assert.Throws <ArgumentException>(() => _newPriorityQueue.FindAndReplace(77, 55, (i, i1) => i == i1 ? 0 : -1, CompareInt));
            Assert.AreEqual(3, _newPriorityQueue.Count);
            Assert.AreEqual(1, _newPriorityQueue.First());
            Assert.AreEqual(3, _newPriorityQueue.Last());
        }
        public void PriorityQueue_PopLast_Normal()
        {
            var a        = 1;
            var b        = 2;
            var c        = 3;
            var comparer = new SortInt();

            _newPriorityQueue.Add(a, comparer);
            _newPriorityQueue.Add(c, comparer);
            _newPriorityQueue.Add(b, comparer);

            var item = _newPriorityQueue.PopLast();

            Assert.AreEqual(3, item);
            Assert.AreEqual(2, _newPriorityQueue.Count);
            Assert.AreEqual(1, _newPriorityQueue.First());
            Assert.AreEqual(2, _newPriorityQueue.Last());
        }