1#[cfg(test)]
2mod toodee_tests_sort {
3
4 use crate::*;
5 use rand::Rng;
6 use rand::distributions::Uniform;
7
8 #[test]
9 fn sort_by_row() {
10 let rng = rand::thread_rng();
11 let samples = rng.sample_iter(Uniform::new(0,100));
12 let mut toodee = TooDee::from_vec(10, 10, samples.take(100).collect());
13 println!("{:?}",&toodee[3]);
14 toodee.sort_by_row(3, |a, b| a.cmp(b));
15 let r = &toodee[3];
16 println!("{:?}",r);
17 for i in 0..9 {
18 assert!(r[i] <= r[i+1]);
19 }
20 }
21
22 #[test]
23 fn sort_by_col() {
24 let rng = rand::thread_rng();
25 let samples = rng.sample_iter(Uniform::new(0,100));
26 let mut toodee = TooDee::from_vec(10, 10, samples.take(100).collect());
27 println!("{:?}", toodee.col(3).copied().collect::<Vec<u32>>());
28 toodee.sort_by_col(3, |a, b| a.cmp(b));
29 let c : Vec<u32> = toodee.col(3).copied().collect();
30 println!("{:?}",c);
31 for i in 0..9 {
32 assert!(c[i] <= c[i+1]);
33 }
34 }
35
36 #[test]
37 fn sort_by_row_view() {
38 let rng = rand::thread_rng();
39 let samples = rng.sample_iter(Uniform::new(0,100));
40 let mut toodee = TooDee::from_vec(10, 10, samples.take(100).collect());
41 println!("{:?}",&toodee[3]);
42 toodee.view_mut((0, 0), (10, 10)).sort_by_row(3, |a, b| a.cmp(b));
43 let r = &toodee[3];
44 println!("{:?}",r);
45 for i in 0..9 {
46 assert!(r[i] <= r[i+1]);
47 }
48 }
49
50 #[test]
51 fn sort_by_col_view() {
52 let rng = rand::thread_rng();
53 let samples = rng.sample_iter(Uniform::new(0,100));
54 let mut toodee = TooDee::from_vec(10, 10, samples.take(100).collect());
55 println!("{:?}", toodee.col(3).copied().collect::<Vec<u32>>());
56 toodee.view_mut((0, 0), (10, 10)).sort_by_col(3, |a, b| a.cmp(b));
57 let c : Vec<u32> = toodee.col(3).copied().collect();
58 println!("{:?}",c);
59 for i in 0..9 {
60 assert!(c[i] <= c[i+1]);
61 }
62 }
63
64
65}