Changeset View
Changeset View
Standalone View
Standalone View
lib/libc/tests/stdlib/qsort_r_test.c
- This file was copied to lib/libc/tests/stdlib/qsort_r_compat_test.c.
Show All 34 Lines | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include "test-sort.h" | #include "test-sort.h" | ||||
#define THUNK 42 | #define THUNK 42 | ||||
static int | static int | ||||
sorthelp_r(void *thunk, const void *a, const void *b) | sorthelp_r(const void *a, const void *b, void *thunk) | ||||
{ | { | ||||
const int *oa, *ob; | const int *oa, *ob; | ||||
ATF_REQUIRE_EQ(*(int *)thunk, THUNK); | ATF_REQUIRE_EQ(*(int *)thunk, THUNK); | ||||
oa = a; | oa = a; | ||||
ob = b; | ob = b; | ||||
/* Don't use "return *oa - *ob" since it's easy to cause overflow! */ | /* Don't use "return *oa - *ob" since it's easy to cause overflow! */ | ||||
Show All 13 Lines | ATF_TC_BODY(qsort_r_test, tc) | ||||
int thunk = THUNK; | int thunk = THUNK; | ||||
for (j = 2; j < IVEC_LEN; j++) { | for (j = 2; j < IVEC_LEN; j++) { | ||||
/* Populate test vectors */ | /* Populate test vectors */ | ||||
for (i = 0; i < j; i++) | for (i = 0; i < j; i++) | ||||
testvector[i] = sresvector[i] = initvector[i]; | testvector[i] = sresvector[i] = initvector[i]; | ||||
/* Sort using qsort_r(3) */ | /* Sort using qsort_r(3) */ | ||||
qsort_r(testvector, j, sizeof(testvector[0]), &thunk, | qsort_r(testvector, j, sizeof(testvector[0]), sorthelp_r, | ||||
sorthelp_r); | &thunk); | ||||
/* Sort using reference slow sorting routine */ | /* Sort using reference slow sorting routine */ | ||||
ssort(sresvector, j); | ssort(sresvector, j); | ||||
/* Compare results */ | /* Compare results */ | ||||
for (i = 0; i < j; i++) | for (i = 0; i < j; i++) | ||||
ATF_CHECK_MSG(testvector[i] == sresvector[i], | ATF_CHECK_MSG(testvector[i] == sresvector[i], | ||||
"item at index %d didn't match: %d != %d", | "item at index %d didn't match: %d != %d", | ||||
i, testvector[i], sresvector[i]); | i, testvector[i], sresvector[i]); | ||||
Show All 10 Lines |