From 87ff4b41275550818ade06f9177aed2ad0055024 Mon Sep 17 00:00:00 2001 From: wjf-hs Date: Thu, 29 Aug 2024 19:16:55 +0800 Subject: [PATCH] =?UTF-8?q?queue=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/common.h | 2 +- src/queue.c | 16 +++++++++------- test/test.c | 2 +- test/test_queue.c | 41 ++++++++++++++++++++++++++--------------- 4 files changed, 37 insertions(+), 24 deletions(-) diff --git a/include/common.h b/include/common.h index ef375bd..c8db42d 100644 --- a/include/common.h +++ b/include/common.h @@ -11,7 +11,7 @@ #ifndef _COMMON_H_ #define _COMMON_H_ -// #define NDEBUG 1 +#define NDEBUG 1 #include #include diff --git a/src/queue.c b/src/queue.c index 7d665ba..6ec6056 100644 --- a/src/queue.c +++ b/src/queue.c @@ -303,8 +303,8 @@ static void queue2_print(struct _queue* self) bool queue_init(struct _queue * queue, uint32_t obj_size) { - // assert(queue != NULL); - // assert(obj_size > 0); + assert(queue != NULL); + assert(obj_size > 0); if(queue == NULL || obj_size == 0) { return false; @@ -341,9 +341,9 @@ bool queue_init(struct _queue * queue, uint32_t obj_size) bool queue_init2(struct _queue * queue, uint32_t obj_size, uint32_t capacity) { - // assert(queue != NULL); - // assert(obj_size > 0); - // assert(capacity > 0); + assert(queue != NULL); + assert(obj_size > 0); + assert(capacity > 0); if(queue == NULL || obj_size == 0 || capacity == 0) { return false; @@ -398,13 +398,15 @@ done: queue_t queue_new(void) { - // return (struct _queue *)calloc(1, sizeof(struct _queue)); - return (struct _queue *)malloc(sizeof(struct _queue)); + return (struct _queue *)calloc(1, sizeof(struct _queue)); } void queue_free(queue_t* queue) { // assert(queue != NULL); + // assert(*queue != NULL); + // assert((*queue)->destory != NULL); + if(queue != NULL && *queue != NULL) { if((*queue)->destory != NULL) diff --git a/test/test.c b/test/test.c index b8e0bf4..d018b4d 100644 --- a/test/test.c +++ b/test/test.c @@ -73,7 +73,7 @@ int main(int argc, char const *argv[]) printf("----- Unicstl Unit Test -----\n"); UNITY_BEGIN(); - test_stack(); + // test_stack(); test_queue(); return UNITY_END(); diff --git a/test/test_queue.c b/test/test_queue.c index 1a462a6..6182cb4 100644 --- a/test/test_queue.c +++ b/test/test_queue.c @@ -10,52 +10,63 @@ */ #include "test.h" +/** + * @brief + * 每成功init一次,就需要对应的destory一次。否则可能存在内存泄漏 + */ static void test_queue_init(void) { struct _queue queue; + // ------------------------------ +#ifdef NDEBUG TEST_ASSERT_FALSE(queue_init(NULL, sizeof(int))); TEST_ASSERT_FALSE(queue_init(&queue, 0)); +#endif TEST_ASSERT_TRUE(queue_init(&queue, sizeof(int))); queue.destory(&queue); - TEST_ASSERT_TRUE(queue_init(&queue, sizeof(char))); - queue.destory(&queue); - // ------------------------------ +#ifdef NDEBUG TEST_ASSERT_FALSE(queue_init2(NULL, sizeof(int), 1)); TEST_ASSERT_FALSE(queue_init2(&queue, 0, 1)); TEST_ASSERT_FALSE(queue_init2(&queue, sizeof(int), 0)); +#endif TEST_ASSERT_TRUE(queue_init2(&queue, sizeof(int), 1)); queue.destory(&queue); - - TEST_ASSERT_TRUE(queue_init2(&queue, sizeof(int), 5)); - queue.destory(&queue); } +/** + * @brief + * 每成功init一次,就需要对应的free一次。否则可能存在内存泄漏 + */ static void test_queue_new(void) { queue_t queue = NULL; - - // ------------------------------ queue = queue_new(); - TEST_ASSERT_NOT_NULL(queue); - - TEST_ASSERT_FALSE(queue_init(NULL, sizeof(int))); - TEST_ASSERT_FALSE(queue_init(queue, 0)); - TEST_ASSERT_TRUE(queue_init(queue, sizeof(int))); - TEST_ASSERT_TRUE(queue_init(queue, sizeof(char))); queue_free(&queue); // ------------------------------ queue = queue_new(); TEST_ASSERT_NOT_NULL(queue); +#ifdef NDEBUG + TEST_ASSERT_FALSE(queue_init(NULL, sizeof(int))); + TEST_ASSERT_FALSE(queue_init(queue, 0)); +#endif + TEST_ASSERT_TRUE(queue_init(queue, sizeof(int))); + queue_free(&queue); + + // ------------------------------ + queue = queue_new(); + TEST_ASSERT_NOT_NULL(queue); + +#ifdef NDEBUG TEST_ASSERT_FALSE(queue_init2(NULL, sizeof(int), 1)); TEST_ASSERT_FALSE(queue_init2(queue, 0, 1)); TEST_ASSERT_FALSE(queue_init2(queue, sizeof(int), 0)); +#endif TEST_ASSERT_TRUE(queue_init2(queue, sizeof(int), 1)); - TEST_ASSERT_TRUE(queue_init2(queue, sizeof(int), 5)); queue_free(&queue); TEST_ASSERT_NULL(queue);