25static int utest_compare_test_struct(
const void * a,
const void * b) {
30 return ((idx_a) > (idx_b)) - ((idx_a) < (idx_b));
38 size_t len =
sizeof(a)/
sizeof(a[0]);
40 for (
size_t i = 0;
i < len; ++
i) {
47 for (
size_t i = 0;
i < len; ++
i) {
52 qsort(ref, len,
sizeof(ref[0]), utest_compare_test_struct);
53 yac_mergesort(a, len,
sizeof(ref[0]), utest_compare_test_struct);
62 size_t len =
sizeof(a)/
sizeof(a[0]);
63 for (
size_t i = 0;
i < len; ++
i) {
70 for (
size_t i = 0;
i < len; ++
i) {
75 qsort(ref, len,
sizeof(ref[0]), utest_compare_test_struct);
76 yac_mergesort(a, len,
sizeof(ref[0]), utest_compare_test_struct);
85 size_t len =
sizeof(a)/
sizeof(a[0]);
86 for (
size_t i = 0;
i < len; ++
i) {
93 for (
size_t i = 0;
i < len; ++
i) {
97 for (
size_t i = 32;
i < 64; ++
i) {
101 for (
size_t i = 96;
i < 128; ++
i) {
103 ref[
i].idx = 127 -
i;
106 qsort(ref, len,
sizeof(ref[0]), utest_compare_test_struct);
107 yac_mergesort(a, len,
sizeof(ref[0]), utest_compare_test_struct);
116 size_t len =
sizeof(a)/
sizeof(a[0]);
117 for (
size_t i = 0;
i < len; ++
i) {
124 for (
size_t i = 0;
i < len; ++
i) {
126 ref[
i].idx = 127 -
i;
128 for (
size_t i = 32;
i < 64; ++
i) {
132 for (
size_t i = 96;
i < 128; ++
i) {
137 qsort(ref, len,
sizeof(ref[0]), utest_compare_test_struct);
138 yac_mergesort(a, len,
sizeof(ref[0]), utest_compare_test_struct);
143 for (
int i = 0;
i < 10; ++
i) {
148 size_t len =
sizeof(a)/
sizeof(a[0]);
149 for (
size_t j = 0; j < len; ++j) {
156 for (
size_t j = 0; j < len; ++j) ref[j].
idx = a[j].
idx = rand();
158 qsort(ref, len,
sizeof(ref[0]), utest_compare_test_struct);
159 yac_mergesort(a, len,
sizeof(ref[0]), utest_compare_test_struct);
161 for (
size_t j = 0; j < len; ++j)
if (a[j].
idx != ref[j].
idx)
INC_ERR;
void yac_mergesort(void *base, size_t num, size_t size, int(*compar)(const void *, const void *))