Test sort algorithms using a random cmp function

This commit is contained in:
Stjepan Glavina 2017-03-31 16:59:01 +02:00
parent c6df67afca
commit 0e2d3d41bb
2 changed files with 27 additions and 1 deletions

View file

@ -8,6 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use core::cmp::Ordering::{Equal, Greater, Less};
use core::slice::heapsort;
use core::result::Result::{Ok, Err};
use rand::{Rng, XorShiftRng};
@ -268,6 +269,17 @@ fn sort_unstable() {
}
}
// Sort using a completely random comparison function.
// This will reorder the elements *somehow*, but won't panic.
for i in 0..v.len() {
v[i] = i as i32;
}
v.sort_unstable_by(|_, _| *rng.choose(&[Less, Equal, Greater]).unwrap());
v.sort_unstable();
for i in 0..v.len() {
assert_eq!(v[i], i as i32);
}
// Should not panic.
[0i32; 0].sort_unstable();
[(); 10].sort_unstable();