diff options
| -rw-r--r-- | Makefile | 3 | ||||
| -rw-r--r-- | test-sort.c | 45 |
2 files changed, 48 insertions, 0 deletions
@@ -37,6 +37,9 @@ test-parsing: test-parsing.o $(LIB_FILE) test-linearize: test-linearize.o $(LIB_FILE) $(CC) $(LDFLAGS) -o $@ $< $(LIBS) +test-sort: test-sort.o $(LIB_FILE) + gcc $(LDFLAGS) -o $@ $< $(LIBS) + compile: compile.o compile-i386.o $(LIB_FILE) $(CC) $(LDFLAGS) -o $@ $< compile-i386.o $(LIBS) diff --git a/test-sort.c b/test-sort.c new file mode 100644 index 00000000..c259e2b6 --- /dev/null +++ b/test-sort.c @@ -0,0 +1,45 @@ +#include "lib.h" +#include <stdio.h> +#include <stdlib.h> + +static int +int_cmp (const void *_a, const void *_b) +{ + const int *a = _a; + const int *b = _b; + return *a - *b; +} + +#define MIN(_x,_y) ((_x) < (_y) ? (_x) : (_y)) + +int +main (int argc, char **argv) +{ + struct ptr_list *l = NULL, *l2; + int i, *e; + const int N = argv[1] ? atoi (argv[1]) : 10000; + + srand (N); + for (i = 0; i < 1000; i++) + (void)rand (); + + for (i = 0; i < N; i++) { + e = (int *)malloc (sizeof (int)); + *e = rand (); + add_ptr_list (&l, e); + } + sort_list (&l, int_cmp); + // Sort already sorted stuff. + sort_list (&l, int_cmp); + + l2 = l; + do { + l2->nr = MIN (l2->nr, rand () % 3); + for (i = 0; i < l2->nr; i++) + *((int*)(l2->list[i])) = rand(); + l2 = l2->next; + } while (l2 != l); + sort_list (&l, int_cmp); + + return 0; +} |
