New tests, especially for sorting non-contigous and
authorMarius Vollmer <mvo@zagadka.de>
Sun, 2 Jan 2005 21:03:12 +0000 (21:03 +0000)
committerMarius Vollmer <mvo@zagadka.de>
Sun, 2 Jan 2005 21:03:12 +0000 (21:03 +0000)
negative-incrementing vectors.

test-suite/tests/sort.test

index 592133f..e6cb255 100644 (file)
 
 (use-modules (test-suite lib))
 
+(define (randomize-vector! v n)
+  (array-index-map! v (lambda (i) (random n)))
+  v)
+
 (with-test-prefix "sort"
 
   (pass-if-exception "less function taking less than two arguments"
 
   (pass-if-exception "less function taking more than two arguments"
     exception:wrong-type-arg
-    (sort '(1 2) (lambda (x y z) z))))
+    (sort '(1 2) (lambda (x y z) z)))
+
+  (pass-if "sort!"
+    (let ((v (randomize-vector! (make-vector 1000) 1000)))
+      (sorted? (sort! v <) <)))
+
+  (pass-if "sort! of non-contigous vector"
+    (let* ((a (make-array 0 1000 3))
+          (v (make-shared-array a (lambda (i) (list i 0)) 1000)))
+      (randomize-vector! v 1000)
+      (sorted? (sort! v <) <)))
+
+  (pass-if "sort! of negative-increment vector"
+    (let* ((a (make-array 0 1000 3))
+          (v (make-shared-array a (lambda (i) (list (- 999 i) 0)) 1000)))
+      (randomize-vector! v 1000)
+      (sorted? (sort! v <) <)))
+
+  (pass-if "stable-sort!"
+    (let ((v (randomize-vector! (make-vector 1000) 1000)))
+      (sorted? (stable-sort! v <) <)))
+
+  (pass-if "stable-sort! of non-contigous vector"
+    (let* ((a (make-array 0 1000 3))
+          (v (make-shared-array a (lambda (i) (list i 0)) 1000)))
+      (randomize-vector! v 1000)
+      (sorted? (stable-sort! v <) <)))
+
+  (pass-if "stable-sort! of negative-increment vector"
+    (let* ((a (make-array 0 1000 3))
+          (v (make-shared-array a (lambda (i) (list (- 999 i) 0)) 1000)))
+      (randomize-vector! v 1000)
+      (sorted? (stable-sort! v <) <))))