summaryrefslogtreecommitdiff
path: root/src/01/01a/priority_queue_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/01/01a/priority_queue_test.c')
-rw-r--r--src/01/01a/priority_queue_test.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/01/01a/priority_queue_test.c b/src/01/01a/priority_queue_test.c
index f443142..d9abfd7 100644
--- a/src/01/01a/priority_queue_test.c
+++ b/src/01/01a/priority_queue_test.c
@@ -57,16 +57,55 @@ Ensure(PriorityQueue, removes_the_node_with_the_lowest_priority){
assert_that(size(queue), is_equal_to(3));
assert_that(delete_min(queue), is_equal_to(min));
assert_that(queue->head, is_equal_to(mid));
+ assert_that(size(queue), is_equal_to(2));
destroy(queue);
};
+Ensure(PriorityQueue, when_removing_node_from_empty_queue) {
+ PriorityQueue *queue = initialize();
+
+ assert_that(delete_min(queue), is_equal_to(NULL));
+ assert_that(size(queue), is_equal_to(0));
+
+ destroy(queue);
+}
+
+Ensure(PriorityQueue, when_removing_it_decreases_the_size) {
+ PriorityQueue *queue = initialize();
+
+ add(queue, create_node(1, 0));
+ delete_min(queue);
+
+ assert_that(size(queue), is_equal_to(0));
+
+ destroy(queue);
+}
+
+Ensure(PriorityQueue, when_removing_the_last_node_it_decrements_the_count_correctly) {
+ PriorityQueue *queue = initialize();
+
+ add(queue, create_node(2, 200));
+ add(queue, create_node(1, 100));
+ add(queue, create_node(3, 300));
+
+ delete_min(queue);
+ delete_min(queue);
+ delete_min(queue);
+
+ assert_that(size(queue), is_equal_to(0));
+ destroy(queue);
+}
+
TestSuite *priority_queue_tests() {
TestSuite *suite = create_test_suite();
add_test_with_context(suite, PriorityQueue, returns_size);
add_test_with_context(suite, PriorityQueue, adds_a_node);
add_test_with_context(suite, PriorityQueue, removes_the_node_with_the_lowest_priority);
+ add_test_with_context(suite, PriorityQueue, when_removing_node_from_empty_queue);
+ add_test_with_context(suite, PriorityQueue, when_removing_it_decreases_the_size);
+ add_test_with_context(suite, PriorityQueue, when_removing_the_last_node_it_decrements_the_count_correctly);
return suite;
}