diff options
| author | mo khan <mo.khan@gmail.com> | 2020-06-15 22:36:28 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-06-15 22:36:28 -0600 |
| commit | d0b23018d89be21edd0e04d2d2d0049759384e99 (patch) | |
| tree | 1902ea7dab68b38090ec04d1e7c93de52cde59b9 | |
| parent | 4ae6a61711f37b18e83da033b1761ef189867c46 (diff) | |
Extract destroy function and rename count -> size()
| -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() { |
