tests/test_tree.c

changeset 1549
72ad8a78378a
parent 1511
3985ca9b18e0
--- a/tests/test_tree.c	Sat Dec 06 17:51:08 2025 +0100
+++ b/tests/test_tree.c	Sat Dec 06 18:01:52 2025 +0100
@@ -75,7 +75,7 @@
 static void *tree_node_file_create_hl(
         const void *dptr,
         void *tree) {
-    return tree_node_file_create(dptr, (void*)((CxTree*)tree)->allocator);
+    return tree_node_file_create(dptr, (void*)((CxTree*)tree)->collection.allocator);
 }
 
 static int tree_node_file_search(const void *l, const void *r) {
@@ -1888,14 +1888,16 @@
                 tree_node_file_layout
         );
         CX_TEST_ASSERT(tree->cl != NULL);
-        CX_TEST_ASSERT(tree->allocator == &talloc.base);
+        CX_TEST_ASSERT(tree->collection.allocator == &talloc.base);
         CX_TEST_ASSERT(tree->node_create == tree_node_file_create_hl);
         CX_TEST_ASSERT(tree->search == tree_node_file_search);
         CX_TEST_ASSERT(tree->search_data == tree_node_file_search_data);
-        CX_TEST_ASSERT(tree->size == 0);
-        CX_TEST_ASSERT(tree->simple_destructor == NULL);
-        CX_TEST_ASSERT(tree->advanced_destructor == (cx_destructor_func2) cxFree);
-        CX_TEST_ASSERT(tree->destructor_data == &talloc.base);
+        CX_TEST_ASSERT(tree->collection.size == 0);
+        CX_TEST_ASSERT(tree->collection.simple_destructor == NULL);
+        CX_TEST_ASSERT(tree->collection.advanced_destructor == (cx_destructor_func2) cxFree);
+        CX_TEST_ASSERT(tree->collection.destructor_data == &talloc.base);
+        CX_TEST_ASSERT(tree->collection.store_pointer == false);
+        CX_TEST_ASSERT(tree->collection.sorted == false);
         CX_TEST_ASSERT(tree->root == NULL);
         CX_TEST_ASSERT(tree->loc_parent == offsetof(tree_node_file, parent));
         CX_TEST_ASSERT(tree->loc_children == offsetof(tree_node_file, children));
@@ -1921,14 +1923,14 @@
                 tree_node_file_search_data
         );
         CX_TEST_ASSERT(tree->cl != NULL);
-        CX_TEST_ASSERT(tree->allocator == cxDefaultAllocator);
+        CX_TEST_ASSERT(tree->collection.allocator == cxDefaultAllocator);
         CX_TEST_ASSERT(tree->node_create == tree_node_file_create_hl);
         CX_TEST_ASSERT(tree->search == tree_node_file_search);
         CX_TEST_ASSERT(tree->search_data == tree_node_file_search_data);
-        CX_TEST_ASSERT(tree->size == 0);
-        CX_TEST_ASSERT(tree->simple_destructor == NULL);
-        CX_TEST_ASSERT(tree->advanced_destructor == (cx_destructor_func2) cxFree);
-        CX_TEST_ASSERT(tree->destructor_data == cxDefaultAllocator);
+        CX_TEST_ASSERT(tree->collection.size == 0);
+        CX_TEST_ASSERT(tree->collection.simple_destructor == NULL);
+        CX_TEST_ASSERT(tree->collection.advanced_destructor == (cx_destructor_func2) cxFree);
+        CX_TEST_ASSERT(tree->collection.destructor_data == cxDefaultAllocator);
         CX_TEST_ASSERT(tree->root == NULL);
         CX_TEST_ASSERT(tree->loc_parent == offsetof(struct cx_tree_node_base_s, parent));
         CX_TEST_ASSERT(tree->loc_children == offsetof(struct cx_tree_node_base_s, children));
@@ -1947,15 +1949,15 @@
     CX_TEST_DO {
         CxTree *tree = cxTreeCreateWrapped(NULL, &root, tree_node_layout);
         CX_TEST_ASSERT(tree->cl != NULL);
-        CX_TEST_ASSERT(tree->allocator == cxDefaultAllocator);
+        CX_TEST_ASSERT(tree->collection.allocator == cxDefaultAllocator);
         CX_TEST_ASSERT(tree->node_create == NULL);
         CX_TEST_ASSERT(tree->search == NULL);
         CX_TEST_ASSERT(tree->search_data == NULL);
         CX_TEST_ASSERT(tree->root == &root);
-        CX_TEST_ASSERT(tree->size == 4);
-        CX_TEST_ASSERT(tree->simple_destructor == NULL);
-        CX_TEST_ASSERT(tree->advanced_destructor == NULL);
-        CX_TEST_ASSERT(tree->destructor_data == NULL);
+        CX_TEST_ASSERT(tree->collection.size == 4);
+        CX_TEST_ASSERT(tree->collection.simple_destructor == NULL);
+        CX_TEST_ASSERT(tree->collection.advanced_destructor == NULL);
+        CX_TEST_ASSERT(tree->collection.destructor_data == NULL);
         CX_TEST_ASSERT(tree->loc_parent == offsetof(tree_node, parent));
         CX_TEST_ASSERT(tree->loc_children == offsetof(tree_node, children));
         CX_TEST_ASSERT(tree->loc_last_child == -1);
@@ -2185,9 +2187,8 @@
         cxFree(alloc, usr);
         // for the subtree, we use a little trick and wrap it in a new tree
         CxTree *foo_tree = cxTreeCreateWrapped(alloc, foo, tree_node_file_layout);
-        foo_tree->allocator = alloc;
-        foo_tree->advanced_destructor = (cx_destructor_func2 ) cxFree;
-        foo_tree->destructor_data = alloc;
+        foo_tree->collection.allocator = alloc;
+        cxDefineAdvancedDestructor(foo_tree, cxFree, alloc);
         cxTreeFree(foo_tree);
         CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
     }
@@ -2305,8 +2306,7 @@
         cxTreeFree(tree);
         CX_TEST_ASSERT(!cx_testing_allocator_verify(&talloc));
         CxTree *w = cxTreeCreateWrapped(alloc, root, tree_node_file_layout);
-        w->advanced_destructor = (cx_destructor_func2) cxFree;
-        w->destructor_data = alloc;
+        cxDefineAdvancedDestructor(w, cxFree, alloc);
         cxTreeDestroySubtree(w, w->root);
         CX_TEST_ASSERT(!cx_testing_allocator_verify(&talloc));
         cxTreeFree(w);
@@ -2326,7 +2326,7 @@
     cx_tree_link(&child1, &child3, tree_node_layout);
     CX_TEST_DO {
         CxTree *tree = cxTreeCreateWrapped(cxDefaultAllocator, &root, tree_node_layout);
-        tree->simple_destructor = test_tree_high_simple_destructor_func;
+        cxDefineDestructor(tree,test_tree_high_simple_destructor_func);
         cxTreeDestroyNode(tree, &child1, NULL);
         cxTreeFree(tree);
         CX_TEST_ASSERT(root.data == 1);

mercurial