testsuite: fix test_array_sort pointers inderection

The array elements in the tests are strings, what means "char *"
in С. The comparation funtion takes pointers to the elements, so
the arguments become "char **". It means, that strcmp() cannot be
used directrly.

The patch creates a wrapper on strcmp() which perfoms
dereferencing of the "char **" to supply the actual strings to
strcmp(), and uses the wrapper as a comparation function for the
qsort() call.

Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com>
This commit is contained in:
Yauheni Kaliuta 2016-11-08 22:57:26 +02:00 committed by Lucas De Marchi
parent cb51a641d6
commit d242703211

View File

@ -90,6 +90,13 @@ static int test_array_append_unique(const struct test *t)
DEFINE_TEST(test_array_append_unique,
.description = "test array append unique");
static int strptrcmp(const void *pa, const void *pb) {
const char *a = *(const char **)pa;
const char *b = *(const char **)pb;
return strcmp(a, b);
}
static int test_array_sort(const struct test *t)
{
struct array array;
@ -104,7 +111,7 @@ static int test_array_sort(const struct test *t)
array_append(&array, c2);
array_append(&array, c3);
array_append(&array, c1);
array_sort(&array, (int (*)(const void *a, const void *b)) strcmp);
array_sort(&array, strptrcmp);
assert_return(array.count == 6, EXIT_FAILURE);
assert_return(array.array[0] == c1, EXIT_FAILURE);
assert_return(array.array[1] == c1, EXIT_FAILURE);