tests/test_list.c

changeset 1321
1003c014bf92
parent 1319
aa1f580f8f59
--- a/tests/test_list.c	Thu May 22 15:48:00 2025 +0200
+++ b/tests/test_list.c	Thu May 22 16:03:20 2025 +0200
@@ -1816,10 +1816,35 @@
 })
 
 CX_TEST(test_list_arl_swap_no_sbo) {
-    set_up_combo
-        CxList *list = cxArrayListCreate(alloc, cx_cmp_int, 2*cx_array_swap_sbo_size, 8);
-        CX_TEST_CALL_SUBROUTINE(test_list_verify_swap, list, false);
-    tear_down_combo
+    CxTestingAllocator talloc;
+    cx_testing_allocator_init(&talloc);
+    CxAllocator *alloc = &talloc.base;
+    CX_TEST_DO {
+        size_t item_size = 2*cx_array_swap_sbo_size;
+        CxList *list = cxArrayListCreate(alloc, cx_cmp_int, item_size, 8);
+
+        char *obj = malloc(item_size);
+        for (char c = 'a' ; c <= 'z' ; c++) {
+            obj[0] = c;
+            obj[item_size-1] = c;
+            cxListAdd(list, obj);
+        }
+        free(obj);
+
+        CX_TEST_ASSERT(((char*)cxListAt(list, 3))[0] == 'd');
+        CX_TEST_ASSERT(((char*)cxListAt(list, 17))[0] == 'r');
+        CX_TEST_ASSERT(((char*)cxListAt(list, 3))[item_size-1] == 'd');
+        CX_TEST_ASSERT(((char*)cxListAt(list, 17))[item_size-1] == 'r');
+        cxListSwap(list, 3, 17);
+        CX_TEST_ASSERT(((char*)cxListAt(list, 17))[0] == 'd');
+        CX_TEST_ASSERT(((char*)cxListAt(list, 3))[0] == 'r');
+        CX_TEST_ASSERT(((char*)cxListAt(list, 17))[item_size-1] == 'd');
+        CX_TEST_ASSERT(((char*)cxListAt(list, 3))[item_size-1] == 'r');
+
+        cxListFree(list);
+        CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc));
+    }
+    cx_testing_allocator_destroy(&talloc);
 }
 
 roll_out_test_combos(find, {

mercurial