--- 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, {