diff options
author | sanine <sanine.not@pm.me> | 2021-09-28 22:44:30 -0500 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2021-09-28 22:44:30 -0500 |
commit | 0e8f26743214b903f66eb732e4a8c151213d61e1 (patch) | |
tree | 03a0398894cd39fbd9d2d46a42f8176ef3943cd0 | |
parent | bedf73313c8f19ff1b19217d989b1886c8f809ae (diff) |
add mock_queue_cleanup() function and move queue malloc call inside mock_queue_data
-rw-r--r-- | src/test/mock_queue.c | 16 | ||||
-rw-r--r-- | src/test/mock_queue.h | 6 | ||||
-rw-r--r-- | src/test/mock_queue_tests.c | 20 |
3 files changed, 38 insertions, 4 deletions
diff --git a/src/test/mock_queue.c b/src/test/mock_queue.c index 10ce834..7a36b65 100644 --- a/src/test/mock_queue.c +++ b/src/test/mock_queue.c @@ -1,5 +1,6 @@ #include <stdlib.h> #include <stdio.h> +#include <string.h> #include "mock_queue.h" @@ -35,7 +36,13 @@ void mock_queue_data(size_t size, void *data) return; } - node->data = data; + node->data = malloc(size); + if (node->data == NULL) { + fprintf(stderr, "WARNING: memory allocation of %zu bytes for mock queue data failed!\n", size); + return; + } + + memcpy(node->data, data, size); node->next = NULL; mock_queue_tail->next = node; mock_queue_tail = node; @@ -67,3 +74,10 @@ void mock_pop() mock_queue_tail = &mock_queue_head; mock_queue_length -= 1; } + + +void mock_queue_cleanup() +{ + while(mock_queue_length != 0) + mock_pop(); +} diff --git a/src/test/mock_queue.h b/src/test/mock_queue.h index 9cfd415..1c2bbf7 100644 --- a/src/test/mock_queue.h +++ b/src/test/mock_queue.h @@ -4,6 +4,7 @@ #include <stdlib.h> void mock_queue_init(); +void mock_queue_cleanup(); size_t mock_queue_len(); @@ -11,9 +12,8 @@ void mock_queue_data(size_t size, void *data); void * mock_front_data(); #define mock_queue(type, raw) do { \ - type *data = malloc(sizeof(type)); \ - *data = raw; \ - mock_queue_data(sizeof(type), data); \ + type data = raw; \ + mock_queue_data(sizeof(type), &data); \ } while(0) #define mock_front(type) * (type *) mock_front_data() diff --git a/src/test/mock_queue_tests.c b/src/test/mock_queue_tests.c index 0e208e4..004444c 100644 --- a/src/test/mock_queue_tests.c +++ b/src/test/mock_queue_tests.c @@ -4,6 +4,7 @@ mu_test mock_queue_int(); mu_test mock_queue_int_seq(); mu_test mock_queue_pop_multi(); +mu_test mock_queue_clean_finish(); void mock_queue_tests() @@ -12,6 +13,7 @@ void mock_queue_tests() mu_run_test("push and pop integer to mock queue", mock_queue_int); mu_run_test("push and pop integer sequence", mock_queue_int_seq); mu_run_test("pop multiple times with empty queue", mock_queue_pop_multi); + mu_run_test("clean up mock queue", mock_queue_clean_finish); } @@ -79,3 +81,21 @@ mu_test mock_queue_pop_multi() mu_assert_equal(mock_queue_len(), 0); return 0; } + + +mu_test mock_queue_clean_finish() +{ + mu_assert_equal(mock_queue_len(), 0); + + mock_queue(int, 5); + mock_queue(int, 5); + mock_queue(int, 5); + + mu_assert_equal(mock_queue_len(), 3); + + mock_queue_cleanup(); + + mu_assert_equal(mock_queue_len(), 0); + + return 0; +} |