# HG changeset patch # User Mike Becker # Date 1632845365 -7200 # Node ID 26ae21face3958e1d6a5a53eca94e86b3641045f # Parent 7d5a06e32aa8d4a74a863ce062550545c32289bb# Parent cb944fa1852afbc8af309b05beff76137f8a8f52 Automated merge diff -r 7d5a06e32aa8 -r 26ae21face39 src/cx/tree.h --- a/src/cx/tree.h Tue Sep 28 18:09:14 2021 +0200 +++ b/src/cx/tree.h Tue Sep 28 18:09:25 2021 +0200 @@ -36,7 +36,7 @@ #ifdef __cplusplus extern "C" { #endif - + void* cx_tree_last(void *node, ptrdiff_t loc_next); int cx_tree_add_node(void *node, ptrdiff_t loc_parent, ptrdiff_t loc_prev, ptrdiff_t loc_next, void *new_node); diff -r 7d5a06e32aa8 -r 26ae21face39 test/test_allocator.c --- a/test/test_allocator.c Tue Sep 28 18:09:14 2021 +0200 +++ b/test/test_allocator.c Tue Sep 28 18:09:25 2021 +0200 @@ -80,22 +80,13 @@ } suite = CU_add_suite("default allocator", NULL, NULL); - if (NULL == suite) { - CU_cleanup_registry(); - return CU_get_error(); - } - if ( - !CU_add_test(suite, "default allocator available", test_default_allocator_available) || - !CU_add_test(suite, "test of malloc()", test_default_malloc)|| - !CU_add_test(suite, "test of realloc()", test_default_realloc) || - !CU_add_test(suite, "test of realloc() via cxReallocate", test_default_reallocate) || - !CU_add_test(suite, "test of calloc()", test_default_calloc) || - !CU_add_test(suite, "test of free()", test_default_free) - ) { - CU_cleanup_registry(); - return CU_get_error(); - } + CU_add_test(suite, "default allocator available", test_default_allocator_available); + CU_add_test(suite, "test of malloc()", test_default_malloc); + CU_add_test(suite, "test of realloc()", test_default_realloc); + CU_add_test(suite, "test of realloc() via cxReallocate", test_default_reallocate); + CU_add_test(suite, "test of calloc()", test_default_calloc); + CU_add_test(suite, "test of free()", test_default_free); CU_basic_set_mode(UCX_CU_BRM); diff -r 7d5a06e32aa8 -r 26ae21face39 test/test_list.c --- a/test/test_list.c Tue Sep 28 18:09:14 2021 +0200 +++ b/test/test_list.c Tue Sep 28 18:09:25 2021 +0200 @@ -100,41 +100,83 @@ CU_ASSERT_PTR_EQUAL(&b, cx_linked_list_at(&d, 3, loc_prev, 1)); } +void test_linked_list_add(void) { + struct node { + void *prev; + void *next; + int value; + }; + + struct node nodes[4]; + + // test with begin, end / prev, next + memset(nodes, 0, 4*sizeof(struct node)); + void *begin = NULL; + void *end = NULL; + + ptrdiff_t loc_prev = offsetof(struct node, prev); + ptrdiff_t loc_next = offsetof(struct node, next); + + int ret; + ret = cx_linked_list_add(&begin, &end, loc_prev, loc_next, &nodes[0]); + CU_ASSERT_EQUAL(ret, 0); + CU_ASSERT_PTR_EQUAL(begin, &nodes[0]); + CU_ASSERT_PTR_EQUAL(end, &nodes[0]); + CU_ASSERT_PTR_EQUAL(nodes[0].prev, NULL); + CU_ASSERT_PTR_EQUAL(nodes[0].next, NULL); + + ret = cx_linked_list_add(&begin, &end, loc_prev, loc_next, &nodes[1]); + CU_ASSERT_EQUAL(ret, 0); + CU_ASSERT_PTR_EQUAL(begin, &nodes[0]); + CU_ASSERT_PTR_EQUAL(end, &nodes[1]); + CU_ASSERT_PTR_EQUAL(nodes[0].next, &nodes[1]); + CU_ASSERT_PTR_EQUAL(nodes[1].prev, &nodes[0]); + + // test with begin only / prev, next + memset(nodes, 0, 4*sizeof(struct node)); + begin = NULL; + end = NULL; + + ret = cx_linked_list_add(&begin, NULL, loc_prev, loc_next, &nodes[0]); + CU_ASSERT_EQUAL(ret, 0); + CU_ASSERT_PTR_EQUAL(begin, &nodes[0]); + ret = cx_linked_list_add(&begin, NULL, loc_prev, loc_next, &nodes[1]); + CU_ASSERT_EQUAL(ret, 0); + CU_ASSERT_PTR_EQUAL(begin, &nodes[0]); + CU_ASSERT_PTR_EQUAL(nodes[0].next, &nodes[1]); + CU_ASSERT_PTR_EQUAL(nodes[1].prev, &nodes[0]); + + ret = cx_linked_list_add(&begin, NULL, loc_prev, loc_next, &nodes[2]); + CU_ASSERT_PTR_EQUAL(nodes[1].next, &nodes[2]); + CU_ASSERT_PTR_EQUAL(nodes[2].prev, &nodes[1]); + + // test with begin, end / next + memset(nodes, 0, 4*sizeof(struct node)); + begin = NULL; + end = NULL; + + ret = cx_linked_list_add(&begin, &end, -1, loc_next, &nodes[0]); + CU_ASSERT_EQUAL(ret, 0); + CU_ASSERT_PTR_EQUAL(begin, &nodes[0]); + CU_ASSERT_PTR_EQUAL(end, &nodes[0]); + ret = cx_linked_list_add(&begin, &end, -1, loc_next, &nodes[1]); + CU_ASSERT_PTR_EQUAL(end, &nodes[1]); + CU_ASSERT_PTR_EQUAL(nodes[0].next, &nodes[1]); + CU_ASSERT_PTR_EQUAL(nodes[1].prev, NULL); +} + 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, "linked list: create and destroy", test_linked_list_create) || - !CU_add_test(suite, "linked list: get node at index", test_linked_list_at) - ) { - 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_add_test(suite, "linked list: create and destroy", test_linked_list_create); + CU_add_test(suite, "linked list: get node at index", test_linked_list_at); + CU_add_test(suite, "linked list: add", test_linked_list_add); CU_basic_set_mode(UCX_CU_BRM); diff -r 7d5a06e32aa8 -r 26ae21face39 test/test_tree.c --- a/test/test_tree.c Tue Sep 28 18:09:14 2021 +0200 +++ b/test/test_tree.c Tue Sep 28 18:09:25 2021 +0200 @@ -167,23 +167,9 @@ } suite = CU_add_suite("tree suite", NULL, NULL); - if (NULL == suite) { - CU_cleanup_registry(); - return CU_get_error(); - } - if ( - !CU_add_test(suite, "ll add tree node", test_cx_tree_add_node) - ) { - CU_cleanup_registry(); - return CU_get_error(); - } - if ( - !CU_add_test(suite, "ll add tree child node", test_cx_tree_add_child_node) - ) { - CU_cleanup_registry(); - return CU_get_error(); - } + CU_add_test(suite, "ll add tree node", test_cx_tree_add_node); + CU_add_test(suite, "ll add tree child node", test_cx_tree_add_child_node); CU_basic_set_mode(UCX_CU_BRM);