aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwelinder@anemone.rentec.com <welinder@anemone.rentec.com>2004-09-26 15:08:26 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-04-07 21:03:23 -0700
commitac763443663d3f87b6fff67ea6e8a4384f0a86a8 (patch)
tree365cf77a8065e4673d5a32f2eaa64733fcb92ec8 /test-sort.c
parentMake sure sort does not degenerate. (diff)
downloadsparse-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.c45
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;
+}