diff options
Diffstat (limited to 'src/01/01a/priority_queue_test.c')
| -rw-r--r-- | src/01/01a/priority_queue_test.c | 39 |
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; } |
