test/array_tests.c

branch
feature/array
changeset 336
6d7aa8a1a3b3
parent 334
bc81faa9afda
child 337
f695ae118460
equal deleted inserted replaced
335:872ae61c8945 336:6d7aa8a1a3b3
149 ucx_array_at_int(a4, 3) = 8; 149 ucx_array_at_int(a4, 3) = 8;
150 ucx_array_at_int(a4, 4) = 15; 150 ucx_array_at_int(a4, 4) = 15;
151 151
152 UCX_TEST_BEGIN 152 UCX_TEST_BEGIN
153 153
154 UCX_TEST_ASSERT(ucx_array_equals(a1, a2, ucx_cmp_int, NULL) == 0, "failed"); 154 UCX_TEST_ASSERT(ucx_array_equals(a1, a2, ucx_cmp_int, NULL), "failed");
155 UCX_TEST_ASSERT(ucx_array_equals(a1, a4, ucx_cmp_int, NULL) > 0, "failed"); 155 UCX_TEST_ASSERT(!ucx_array_equals(a1, a4, ucx_cmp_int, NULL), "failed");
156 UCX_TEST_ASSERT(ucx_array_equals(a4, a1, ucx_cmp_int, NULL) < 0, "failed"); 156 UCX_TEST_ASSERT(!ucx_array_equals(a4, a1, ucx_cmp_int, NULL), "failed");
157 UCX_TEST_ASSERT(ucx_array_equals(a1, a3, ucx_cmp_int, NULL) < 0, 157 UCX_TEST_ASSERT(!ucx_array_equals(a1, a3, ucx_cmp_int, NULL),
158 "comparing arrays of different element size failed"); 158 "comparing arrays of different element size shall fail");
159 UCX_TEST_ASSERT(ucx_array_equals(a3, a1, ucx_cmp_int, NULL) > 0, 159 UCX_TEST_ASSERT(!ucx_array_equals(a3, a1, ucx_cmp_int, NULL),
160 "comparing arrays of different element size failed"); 160 "comparing arrays of different element size shall fail");
161 161
162 UCX_TEST_ASSERT(ucx_array_equals(a1, a2, NULL, NULL) == 0, 162 UCX_TEST_ASSERT(ucx_array_equals(a1, a2, NULL, NULL),
163 "compare using memcmp() failed"); 163 "compare using memcmp() failed");
164 UCX_TEST_ASSERT(ucx_array_equals(a1, a4, NULL, NULL) > 0, 164 UCX_TEST_ASSERT(!ucx_array_equals(a1, a4, NULL, NULL),
165 "compare using memcmp() failed");
166 UCX_TEST_ASSERT(ucx_array_equals(a4, a1, NULL, NULL) < 0,
167 "compare using memcmp() failed"); 165 "compare using memcmp() failed");
168 166
169 UCX_TEST_END 167 UCX_TEST_END
170 ucx_array_free(&a1); 168 ucx_array_free(&a1);
171 ucx_array_free(&a2); 169 ucx_array_free(&a2);
335 333
336 UcxArray copy = ucx_array_clone(array); 334 UcxArray copy = ucx_array_clone(array);
337 UCX_TEST_BEGIN 335 UCX_TEST_BEGIN
338 336
339 UCX_TEST_ASSERT(array.data != copy.data, "no true copy"); 337 UCX_TEST_ASSERT(array.data != copy.data, "no true copy");
340 UCX_TEST_ASSERT(ucx_array_equals(array, copy, ucx_cmp_int, NULL), "failed");
341 UCX_TEST_ASSERT(array.size == copy.size, "size mismatch"); 338 UCX_TEST_ASSERT(array.size == copy.size, "size mismatch");
342 UCX_TEST_ASSERT(array.capacity == copy.capacity, "capacity mismatch"); 339 UCX_TEST_ASSERT(array.capacity == copy.capacity, "capacity mismatch");
343 UCX_TEST_ASSERT(array.elemsize == copy.elemsize, "element size mismatch"); 340 UCX_TEST_ASSERT(array.elemsize == copy.elemsize, "element size mismatch");
344 UCX_TEST_ASSERT(array.allocator == copy.allocator, "allocator mismatch"); 341 UCX_TEST_ASSERT(array.allocator == copy.allocator, "allocator mismatch");
342 UCX_TEST_ASSERT(ucx_array_equals(array, copy, ucx_cmp_int, NULL), "failed");
345 343
346 UCX_TEST_END 344 UCX_TEST_END
347 345
348 ucx_array_free(&array); 346 ucx_array_free(&array);
349 ucx_array_free(&copy); 347 ucx_array_free(&copy);
367 ucx_array_at_int(expected, 4) = 47; 365 ucx_array_at_int(expected, 4) = 47;
368 366
369 367
370 UCX_TEST_BEGIN 368 UCX_TEST_BEGIN
371 void* original_ptr = array.data; 369 void* original_ptr = array.data;
372 UCX_TEST_ASSERT(!ucx_array_sort(array, ucx_cmp_int, NULL), "failed"); 370 ucx_array_sort(array, ucx_cmp_int, NULL);
373 UCX_TEST_ASSERT(!ucx_array_equals(array, expected, NULL, NULL), "failed"); 371 UCX_TEST_ASSERT(ucx_array_equals(array, expected, NULL, NULL), "failed");
374 UCX_TEST_ASSERT(array.size == 5, "size corrupted"); 372 UCX_TEST_ASSERT(array.size == 5, "size corrupted");
375 UCX_TEST_ASSERT(array.data == original_ptr, "shall not reallocate"); 373 UCX_TEST_ASSERT(array.data == original_ptr, "shall not reallocate");
374
375 ucx_array_reserve(&array, 32);
376 ucx_array_reserve(&expected, 32);
377 array.size = expected.size = 32;
378 for (size_t i = 0 ; i < 32 ; i++) {
379 ucx_array_at_int(array, i) = ((i%2==0)?-1:1) * ((int) i);
380 ucx_array_at_int(expected, i) = (-30+2*i) - (i > 15 ? 1 : 0);
381 }
382
383 ucx_array_sort(array, ucx_cmp_int, NULL);
384 UCX_TEST_ASSERT(ucx_array_equals(array, expected, NULL, NULL),
385 "failed for bigger arrays");
376 UCX_TEST_END 386 UCX_TEST_END
377 387
378 ucx_array_free(&expected); 388 ucx_array_free(&expected);
379 ucx_array_free(&array); 389 ucx_array_free(&array);
380 } 390 }

mercurial