Skip to content

Commit 74ee2ce

Browse files
committed
Harden sorting tests.
Also confirm elements are intact.
1 parent da80992 commit 74ee2ce

File tree

4 files changed

+22
-20
lines changed

4 files changed

+22
-20
lines changed

src/par/merge_sort.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -956,6 +956,7 @@ mod test {
956956
}
957957
}
958958

959+
#[derive(Debug, Clone, Copy)]
959960
struct Item {
960961
index: usize,
961962
value: u32,
@@ -995,15 +996,14 @@ mod test {
995996
.enumerate()
996997
.map(Item::from)
997998
.collect::<Vec<Item>>();
999+
let mut sorted = xs.clone();
1000+
sorted.sort();
1001+
let sorted = Array1::from_vec(sorted);
9981002
let mut array = Array1::from_vec(xs);
9991003
par_merge_sort(array.view_mut(), Item::lt);
1000-
for i in 1..array.len() {
1001-
let [a, b] = [&array[i - 1], &array[i]];
1002-
if a.value == b.value {
1003-
assert!(a.index < b.index);
1004-
} else {
1005-
assert!(a.value < b.value);
1006-
}
1004+
for (a, s) in array.iter().zip(&sorted) {
1005+
assert_eq!(a.index, s.index);
1006+
assert_eq!(a.value, s.value);
10071007
}
10081008
}
10091009
}

src/par/quick_sort.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,11 @@ mod test {
149149
#[cfg_attr(miri, ignore)]
150150
#[quickcheck]
151151
fn sorted(xs: Vec<u32>) {
152+
let mut sorted = xs.clone();
153+
sorted.sort_unstable();
154+
let sorted = Array1::from_vec(sorted);
152155
let mut array = Array1::from_vec(xs);
153156
par_quick_sort(array.view_mut(), u32::lt);
154-
for i in 1..array.len() {
155-
assert!(array[i - 1] <= array[i]);
156-
}
157+
assert_eq!(array, sorted);
157158
}
158159
}

src/quick_sort.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,11 @@ mod test {
132132

133133
#[quickcheck]
134134
fn sorted(xs: Vec<u32>) {
135+
let mut sorted = xs.clone();
136+
sorted.sort_unstable();
137+
let sorted = Array1::from_vec(sorted);
135138
let mut array = Array1::from_vec(xs);
136139
quick_sort(array.view_mut(), &mut u32::lt);
137-
for i in 1..array.len() {
138-
assert!(array[i - 1] <= array[i]);
139-
}
140+
assert_eq!(array, sorted);
140141
}
141142
}

src/stable_sort.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ mod test {
7979
use ndarray::Array1;
8080
use quickcheck_macros::quickcheck;
8181

82+
#[derive(Debug, Clone, Copy)]
8283
struct Item {
8384
index: usize,
8485
value: u32,
@@ -117,15 +118,14 @@ mod test {
117118
.enumerate()
118119
.map(Item::from)
119120
.collect::<Vec<Item>>();
121+
let mut sorted = xs.clone();
122+
sorted.sort();
123+
let sorted = Array1::from_vec(sorted);
120124
let mut array = Array1::from_vec(xs);
121125
stable_sort(array.view_mut(), &mut Item::lt);
122-
for i in 1..array.len() {
123-
let [a, b] = [&array[i - 1], &array[i]];
124-
if a.value == b.value {
125-
assert!(a.index < b.index);
126-
} else {
127-
assert!(a.value < b.value);
128-
}
126+
for (a, s) in array.iter().zip(&sorted) {
127+
assert_eq!(a.index, s.index);
128+
assert_eq!(a.value, s.value);
129129
}
130130
}
131131
}

0 commit comments

Comments
 (0)