diff options
author | 2004-09-26 15:08:26 -0700 | |
---|---|---|
committer | 2005-04-07 21:03:23 -0700 | |
commit | ac763443663d3f87b6fff67ea6e8a4384f0a86a8 (patch) | |
tree | 365cf77a8065e4673d5a32f2eaa64733fcb92ec8 /test-sort.c | |
parent | Make sure sort does not degenerate. (diff) | |
download | sparse-ac763443663d3f87b6fff67ea6e8a4384f0a86a8.tar.gz sparse-ac763443663d3f87b6fff67ea6e8a4384f0a86a8.tar.bz2 sparse-ac763443663d3f87b6fff67ea6e8a4384f0a86a8.zip |
New BitKeeper file ``test-sort.c''
Diffstat (limited to 'test-sort.c')
-rw-r--r-- | test-sort.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/test-sort.c b/test-sort.c new file mode 100644 index 0000000..c259e2b --- /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; +} |