diff options
| -rw-r--r-- | assignments/01/priority_queue.c | 14 | ||||
| -rw-r--r-- | assignments/01/priority_queue.h | 3 | ||||
| -rw-r--r-- | assignments/01/priority_queue_test.c | 16 |
3 files changed, 21 insertions, 12 deletions
diff --git a/assignments/01/priority_queue.c b/assignments/01/priority_queue.c index aa7fb6b..b06e983 100644 --- a/assignments/01/priority_queue.c +++ b/assignments/01/priority_queue.c @@ -17,7 +17,7 @@ Node *create_node(int priority, int data) { return node; } -int count(PriorityQueue *queue) { +int size(PriorityQueue *queue) { return queue->size; } @@ -62,3 +62,15 @@ void inspect(PriorityQueue *queue) { } printf("*******\n"); } + +void destroy(PriorityQueue *queue) { + Node *current = queue->head; + Node *tmp; + + while(current) { + tmp = current; + current = current->next; + if (tmp) + free(tmp); + } +} diff --git a/assignments/01/priority_queue.h b/assignments/01/priority_queue.h index 5cb48b9..8406e77 100644 --- a/assignments/01/priority_queue.h +++ b/assignments/01/priority_queue.h @@ -13,7 +13,8 @@ typedef struct { PriorityQueue *initialize(); Node *create_node(int priority, int data); -int count(PriorityQueue *queue); +int size(PriorityQueue *queue); void add(PriorityQueue *queue, Node *node); Node *delete_min(PriorityQueue *queue); void inspect(PriorityQueue *queue); +void destroy(PriorityQueue *queue); diff --git a/assignments/01/priority_queue_test.c b/assignments/01/priority_queue_test.c index fdb3eaa..532daf6 100644 --- a/assignments/01/priority_queue_test.c +++ b/assignments/01/priority_queue_test.c @@ -20,8 +20,8 @@ AfterEach(PriorityQueue){ } Ensure(PriorityQueue, returns_size) { PriorityQueue *queue = initialize(); - assert_that(count(queue), is_equal_to(0)); - free(queue); + assert_that(size(queue), is_equal_to(0)); + destroy(queue); } Ensure(PriorityQueue, adds_a_node) { @@ -30,9 +30,8 @@ Ensure(PriorityQueue, adds_a_node) { add(queue, node); - assert_that(count(queue), is_equal_to(1)); - free(node); - free(queue); + assert_that(size(queue), is_equal_to(1)); + destroy(queue); } Ensure(PriorityQueue, removes_the_node_with_the_lowest_priority){ @@ -45,14 +44,11 @@ Ensure(PriorityQueue, removes_the_node_with_the_lowest_priority){ add(queue, min); add(queue, mid); - assert_that(count(queue), is_equal_to(3)); + 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)); - free(max); - free(mid); - free(min); - free(queue); + destroy(queue); }; TestSuite *priority_queue_tests() { |
