rename
[libc-test] / src / functional / qsort.c
1 #include <stdlib.h>
2 #include <stdio.h>
3 #include <string.h>
4 #include "test.h"
5
6 static int scmp(const void *a, const void *b)
7 {
8         return strcmp(*(char **)a, *(char **)b);
9 }
10
11 static int icmp(const void *a, const void *b)
12 {
13         return *(int*)a - *(int*)b;
14 }
15
16 /* 26 items -- even */
17 static char *s[] = {
18         "Bob", "Alice", "John", "Ceres",
19         "Helga", "Drepper", "Emeralda", "Zoran",
20         "Momo", "Frank", "Pema", "Xavier",
21         "Yeva", "Gedun", "Irina", "Nono",
22         "Wiener", "Vincent", "Tsering", "Karnica",
23         "Lulu", "Quincy", "Osama", "Riley",
24         "Ursula", "Sam"
25 };
26 /* 23 items -- odd, prime */
27 static int n[] = {
28         879045, 394, 99405644, 33434, 232323, 4334, 5454,
29         343, 45545, 454, 324, 22, 34344, 233, 45345, 343,
30         848405, 3434, 3434344, 3535, 93994, 2230404, 4334
31 };
32
33 int main(void)
34 {
35         int i;
36
37         qsort(s, sizeof(s)/sizeof(char *), sizeof(char *), scmp);
38         for (i=0; i<sizeof(s)/sizeof(char *)-1; i++) {
39                 if (strcmp(s[i], s[i+1]) > 0) {
40                         error("string sort failed at index %d\n", i);
41                         for (i=0; i<sizeof(s)/sizeof(char *); i++)
42                                 error("\t%d\t%s\n", i, s[i]);
43                         break;
44                 }
45         }
46
47         qsort(n, sizeof(n)/sizeof(int), sizeof(int), icmp);
48         for (i=0; i<sizeof(n)/sizeof(int)-1; i++) {
49                 if (n[i] > n[i+1]) {
50                         error("integer sort failed at index %d\n", i);
51                         for (i=0; i<sizeof(n)/sizeof(int); i++)
52                                 error("\t%d\t%d\n", i, n[i]);
53                         break;
54                 }
55         }
56         return test_status;
57 }