summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorSimon BD <simon@server>2012-09-27 21:01:43 -0500
committerSimon BD <simon@server>2012-09-27 21:01:43 -0500
commit4d30d7ff04b2ec0d9013582ac9d79fdbd64cf7d6 (patch)
treea17fe1aa64950c6794210c9eaf57958f235591ca /src/libstd
parentf7be2d92a4e01d4dbe57934b2cc8e3935e336c8a (diff)
downloadrust-4d30d7ff04b2ec0d9013582ac9d79fdbd64cf7d6.tar.gz
rust-4d30d7ff04b2ec0d9013582ac9d79fdbd64cf7d6.zip
Add a simple testsuite for timsort
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/sort.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/libstd/sort.rs b/src/libstd/sort.rs
index 449e249dfa7..4bc42e44d92 100644
--- a/src/libstd/sort.rs
+++ b/src/libstd/sort.rs
@@ -938,6 +938,46 @@ mod tests {
     }
 }
 
+#[cfg(test)]
+mod test_timsort {
+    #[legacy_exports];
+    fn check_sort(v1: &[mut int], v2: &[mut int]) {
+        let len = vec::len::<int>(v1);
+        timsort::<int>(v1);
+        let mut i = 0u;
+        while i < len {
+            log(debug, v2[i]);
+            assert (v2[i] == v1[i]);
+            i += 1u;
+        }
+    }
+
+    #[test]
+    fn test() {
+        {
+            let v1 = ~[mut 3, 7, 4, 5, 2, 9, 5, 8];
+            let v2 = ~[mut 2, 3, 4, 5, 5, 7, 8, 9];
+            check_sort(v1, v2);
+        }
+        {
+            let v1 = ~[mut 1, 1, 1];
+            let v2 = ~[mut 1, 1, 1];
+            check_sort(v1, v2);
+        }
+        {
+            let v1: ~[mut int] = ~[mut];
+            let v2: ~[mut int] = ~[mut];
+            check_sort(v1, v2);
+        }
+        { let v1 = ~[mut 9]; let v2 = ~[mut 9]; check_sort(v1, v2); }
+        {
+            let v1 = ~[mut 9, 3, 3, 3, 9];
+            let v2 = ~[mut 3, 3, 3, 9, 9];
+            check_sort(v1, v2);
+        }
+    }
+}
+
 // Local Variables:
 // mode: rust;
 // fill-column: 78;