diff options
author | Maciej Piechotka <uzytkownik2@gmail.com> | 2011-04-08 15:24:27 +0200 |
---|---|---|
committer | Maciej Piechotka <uzytkownik2@gmail.com> | 2011-04-08 15:25:43 +0200 |
commit | 1821ee977015cef8f7f111854e6a8a9447898f01 (patch) | |
tree | 7a9e583d500a54a3a2a8a1b8c14c783c0a33b062 | |
parent | 35c40b1873064c744fab646fbe8df6b12ba2c621 (diff) | |
download | libgee-1821ee977015cef8f7f111854e6a8a9447898f01.tar.gz |
Fix adding second element to priority queue, fixes bug #647162
-rw-r--r-- | gee/priorityqueue.vala | 2 | ||||
-rw-r--r-- | tests/testpriorityqueue.vala | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/gee/priorityqueue.vala b/gee/priorityqueue.vala index 74337a0..6a6f8bf 100644 --- a/gee/priorityqueue.vala +++ b/gee/priorityqueue.vala @@ -107,6 +107,8 @@ public class Gee.PriorityQueue<G> : Gee.AbstractQueue<G> { _r_prime = new Type2Node<G> (element); _r_prime.parent = _r; _r.type2_child = _r_prime; + if (_compare (_r_prime, _r) < 0) + _swap_data (_r_prime, _r); } else { // Form a tree with a single node N of type I consisting of element e Type1Node<G> node = new Type1Node<G> (element); diff --git a/tests/testpriorityqueue.vala b/tests/testpriorityqueue.vala index 9c82ab2..cbeac2f 100644 --- a/tests/testpriorityqueue.vala +++ b/tests/testpriorityqueue.vala @@ -114,5 +114,15 @@ public class PriorityQueueTests : QueueTests { assert (test_queue.poll () == "twelve"); assert (test_queue.peek () == "two"); assert (test_queue.poll () == "two"); + + // Add decreasing elements + assert (test_queue.offer ("2")); + assert (test_queue.offer ("1")); + + + assert (test_queue.peek () == "1"); + assert (test_queue.poll () == "1"); + assert (test_queue.peek () == "2"); + assert (test_queue.poll () == "2"); } } |