diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-09-06 12:11:48 -0700 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-09-06 12:11:48 -0700 |
| commit | 55bd6cee2ff9123c68d7361e235ac99927f4b062 (patch) | |
| tree | d0b9aaff894c445dbba828a668cc92fa7fb8d2d6 /src/libstd | |
| parent | b4e547d71aa379e702a737550e479116914b19cf (diff) | |
Test that merge sort is stable -- thanks to Jesse Jones
Closes #3399
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/sort.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libstd/sort.rs b/src/libstd/sort.rs index 4c10e274d49..64ea19d35f9 100644 --- a/src/libstd/sort.rs +++ b/src/libstd/sort.rs @@ -307,6 +307,28 @@ mod tests { let v2 = merge_sort(le, v1); assert v2 == ~[1, 2, 3]; } + + #[test] + fn test_merge_sort_stability() + { + // tjc: funny that we have to use parens + pure fn ile(x: &(&static/str), y: &(&static/str)) -> bool + { + unchecked // to_lower is not pure... + { + let x = x.to_lower(); + let y = y.to_lower(); + x <= y + } + } + + let names1 = ~["joe bob", "Joe Bob", "Jack Brown", "JOE Bob", + "Sally Mae", "JOE BOB", "Alex Andy"]; + let names2 = ~["Alex Andy", "Jack Brown", "joe bob", "Joe Bob", + "JOE Bob", "JOE BOB", "Sally Mae"]; + let names3 = merge_sort(ile, names1); + assert names3 == names2; + } } // Local Variables: |
