X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Ffunctional%2Fqsort.c;h=36c09d15a947535b2f92d8c4cafea9efb07da28b;hb=a2e22ac14e13af5677a12bcf3c9583447615a4ff;hp=b45c080877f2e28aade0edb0b5dbaaef1f863305;hpb=2cf89517c5b25c2524fe0c0c01ed277d7307a852;p=libc-test diff --git a/src/functional/qsort.c b/src/functional/qsort.c index b45c080..36c09d1 100644 --- a/src/functional/qsort.c +++ b/src/functional/qsort.c @@ -1,3 +1,4 @@ +#include #include #include #include @@ -13,8 +14,19 @@ static int icmp(const void *a, const void *b) return *(int*)a - *(int*)b; } +static int ccmp(const void *a, const void *b) +{ + return *(char*)a - *(char*)b; +} + +static int cmp64(const void *a, const void *b) +{ + const uint64_t *ua = a, *ub = b; + return *ua < *ub ? -1 : *ua != *ub; +} + /* 26 items -- even */ -static char *s[] = { +static const char *s[] = { "Bob", "Alice", "John", "Ceres", "Helga", "Drepper", "Emeralda", "Zoran", "Momo", "Frank", "Pema", "Xavier", @@ -23,35 +35,138 @@ static char *s[] = { "Lulu", "Quincy", "Osama", "Riley", "Ursula", "Sam" }; +static const char *s_sorted[] = { + "Alice", "Bob", "Ceres", "Drepper", + "Emeralda", "Frank", "Gedun", "Helga", + "Irina", "John", "Karnica", "Lulu", + "Momo", "Nono", "Osama", "Pema", + "Quincy", "Riley", "Sam", "Tsering", + "Ursula", "Vincent", "Wiener", "Xavier", + "Yeva", "Zoran" +}; + /* 23 items -- odd, prime */ static int n[] = { 879045, 394, 99405644, 33434, 232323, 4334, 5454, 343, 45545, 454, 324, 22, 34344, 233, 45345, 343, 848405, 3434, 3434344, 3535, 93994, 2230404, 4334 }; +static int n_sorted[] = { + 22, 233, 324, 343, 343, 394, 454, 3434, + 3535, 4334, 4334, 5454, 33434, 34344, 45345, 45545, + 93994, 232323, 848405, 879045, 2230404, 3434344, 99405644 +}; -int main(void) +static void str_test(const char **a, const char **a_sorted, int len) { int i; + qsort(a, len, sizeof *a, scmp); + for (i=0; i 0) { - error("string sort failed at index %d\n", i); - for (i=0; i n[i+1]) { - error("integer sort failed at index %d\n", i); - for (i=0; i