perform array and list tests in the same test binary (use the same assertions, later)

Sun, 14 Feb 2021 15:37:12 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 14 Feb 2021 15:37:12 +0100
changeset 413
0f4aa9fc75d9
parent 412
af766caea48d
child 414
81a4c3a63e65

perform array and list tests in the same test binary (use the same assertions, later)

test/CMakeLists.txt file | annotate | diff | comparison | revisions
test/test_linked_list.c file | annotate | diff | comparison | revisions
test/test_list.c file | annotate | diff | comparison | revisions
--- a/test/CMakeLists.txt	Sun Feb 14 15:13:53 2021 +0100
+++ b/test/CMakeLists.txt	Sun Feb 14 15:37:12 2021 +0100
@@ -9,7 +9,7 @@
     message(CHECK_PASS "found: compiling tests.")
     set(TESTS
             test_allocator
-            test_linked_list
+            test_list
     )
 
     foreach(test ${TESTS})
--- a/test/test_linked_list.c	Sun Feb 14 15:13:53 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
- *
- * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- *   1. Redistributions of source code must retain the above copyright
- *      notice, this list of conditions and the following disclaimer.
- *
- *   2. Redistributions in binary form must reproduce the above copyright
- *      notice, this list of conditions and the following disclaimer in the
- *      documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "cx/linked_list.h"
-#include "test_config.h"
-
-int cmp_int(int const *l, int const *r) {
-    int left = *l, right = *r;
-    return left == right ? 0 : (left < right ? -1 : 1);
-}
-
-void test_linked_list_create() {
-    CxList list = cxLinkedListCreate(cxDefaultAllocator, (CxListComparator) cmp_int, sizeof(int));
-
-    CU_ASSERT_EQUAL(list->data.size, 0)
-    CU_ASSERT_EQUAL(list->data.capacity, (size_t) -1)
-    CU_ASSERT_PTR_EQUAL(list->data.allocator, cxDefaultAllocator)
-    CU_ASSERT_EQUAL(list->data.itemsize, sizeof(int))
-    CU_ASSERT_PTR_EQUAL(list->data.cmpfunc, cmp_int)
-
-    struct node {
-        void* begin; void* end; ptrdiff_t ploc; ptrdiff_t nloc;
-    };
-
-    struct node* actual = (struct node*) list->data.listdata;
-    CU_ASSERT_PTR_NULL(actual->begin)
-    CU_ASSERT_PTR_NULL(actual->end)
-    CU_ASSERT_EQUAL(0, actual->ploc)
-    CU_ASSERT_EQUAL(sizeof(void*), actual->nloc)
-
-    cxLinkedListDestroy(list);
-}
-
-int main() {
-    CU_pSuite suite = NULL;
-
-    if (CUE_SUCCESS != CU_initialize_registry()) {
-        return CU_get_error();
-    }
-
-    suite = CU_add_suite("linked list memory management", NULL, NULL);
-    if (NULL == suite) {
-        CU_cleanup_registry();
-        return CU_get_error();
-    }
-
-    if (
-            !CU_add_test(suite, "create linked list", test_linked_list_create)
-            ) {
-        CU_cleanup_registry();
-        return CU_get_error();
-    }
-
-    CU_basic_set_mode(UCX_CU_BRM);
-
-    int exitcode;
-    if (CU_basic_run_tests()) {
-        exitcode = CU_get_error();
-    } else {
-        exitcode = CU_get_number_of_failures() == 0 ? 0 : 1;
-    }
-    CU_cleanup_registry();
-    return exitcode;
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test_list.c	Sun Feb 14 15:37:12 2021 +0100
@@ -0,0 +1,106 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ *   1. Redistributions of source code must retain the above copyright
+ *      notice, this list of conditions and the following disclaimer.
+ *
+ *   2. Redistributions in binary form must reproduce the above copyright
+ *      notice, this list of conditions and the following disclaimer in the
+ *      documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "cx/linked_list.h"
+#include "test_config.h"
+
+int cmp_int(int const *l, int const *r) {
+    int left = *l, right = *r;
+    return left == right ? 0 : (left < right ? -1 : 1);
+}
+
+void test_linked_list_create() {
+    CxList list = cxLinkedListCreate(cxDefaultAllocator, (CxListComparator) cmp_int, sizeof(int));
+
+    CU_ASSERT_EQUAL(list->data.size, 0)
+    CU_ASSERT_EQUAL(list->data.capacity, (size_t) -1)
+    CU_ASSERT_PTR_EQUAL(list->data.allocator, cxDefaultAllocator)
+    CU_ASSERT_EQUAL(list->data.itemsize, sizeof(int))
+    CU_ASSERT_PTR_EQUAL(list->data.cmpfunc, cmp_int)
+
+    struct node {
+        void* begin; void* end; ptrdiff_t ploc; ptrdiff_t nloc;
+    };
+
+    struct node* actual = (struct node*) list->data.listdata;
+    CU_ASSERT_PTR_NULL(actual->begin)
+    CU_ASSERT_PTR_NULL(actual->end)
+    CU_ASSERT_EQUAL(0, actual->ploc)
+    CU_ASSERT_EQUAL(sizeof(void*), actual->nloc)
+
+    cxLinkedListDestroy(list);
+
+    // TODO: use allocator that keeps track of the freed memory
+}
+
+int main() {
+    CU_pSuite suite = NULL;
+
+    if (CUE_SUCCESS != CU_initialize_registry()) {
+        return CU_get_error();
+    }
+
+    suite = CU_add_suite("linked list suite", NULL, NULL);
+    if (NULL == suite) {
+        CU_cleanup_registry();
+        return CU_get_error();
+    }
+
+    if (
+            !CU_add_test(suite, "create and destroy linked list", test_linked_list_create)
+            ) {
+        CU_cleanup_registry();
+        return CU_get_error();
+    }
+
+    suite = CU_add_suite("array suite", NULL, NULL);
+    if (NULL == suite) {
+        CU_cleanup_registry();
+        return CU_get_error();
+    }
+
+    /*
+    if (
+            !CU_add_test(suite, "array...", test_array...)
+            ) {
+        CU_cleanup_registry();
+        return CU_get_error();
+    }
+    */
+
+    CU_basic_set_mode(UCX_CU_BRM);
+
+    int exitcode;
+    if (CU_basic_run_tests()) {
+        exitcode = CU_get_error();
+    } else {
+        exitcode = CU_get_number_of_failures() == 0 ? 0 : 1;
+    }
+    CU_cleanup_registry();
+    return exitcode;
+}

mercurial