summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2021-09-28 22:44:30 -0500
committersanine <sanine.not@pm.me>2021-09-28 22:44:30 -0500
commit0e8f26743214b903f66eb732e4a8c151213d61e1 (patch)
tree03a0398894cd39fbd9d2d46a42f8176ef3943cd0
parentbedf73313c8f19ff1b19217d989b1886c8f809ae (diff)
add mock_queue_cleanup() function and move queue malloc call inside mock_queue_data
-rw-r--r--src/test/mock_queue.c16
-rw-r--r--src/test/mock_queue.h6
-rw-r--r--src/test/mock_queue_tests.c20
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;
+}