Skip to content

Commit f4690ce

Browse files
committed
check_specialization for all specialized methods
1 parent 83a102b commit f4690ce

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

tests/specializations.rs

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,32 +33,43 @@ fn test_specializations<IterItem, Iter>(
3333
IterItem: Eq + Debug + Clone,
3434
Iter: Iterator<Item = IterItem> + Clone,
3535
{
36-
let size = it.clone().count();
3736
check_specialized(it, |i| i.count());
3837
check_specialized(it, |i| i.last());
38+
check_specialized(it, |i| i.collect::<Vec<_>>());
39+
check_specialized(it, |i| {
40+
let mut parameters_from_fold = vec![];
41+
let fold_result = i.fold(vec![], |mut acc, v: IterItem| {
42+
parameters_from_fold.push((acc.clone(), v.clone()));
43+
acc.push(v);
44+
acc
45+
});
46+
(parameters_from_fold, fold_result)
47+
});
48+
check_specialized(it, |mut i| {
49+
let mut parameters_from_all = vec![];
50+
let first = i.next();
51+
let all_result = i.all(|x| {
52+
parameters_from_all.push(x.clone());
53+
Some(x)==first
54+
});
55+
(parameters_from_all, all_result)
56+
});
57+
let size = it.clone().count();
3958
for n in 0..size + 2 {
4059
check_specialized(it, |mut i| i.nth(n));
4160
}
61+
// size_hint is a bit harder to check
4262
let mut it_sh = it.clone();
4363
for n in 0..size + 2 {
4464
let len = it_sh.clone().count();
4565
let (min, max) = it_sh.size_hint();
46-
assert_eq!((size - n.min(size)), len);
66+
assert_eq!(size - n.min(size), len);
4767
assert!(min <= len);
4868
if let Some(max) = max {
4969
assert!(len <= max);
5070
}
5171
it_sh.next();
5272
}
53-
check_specialized(it, |i| {
54-
let mut parameters_from_fold = vec![];
55-
let fold_result = i.fold(vec![], |mut acc, v: IterItem| {
56-
parameters_from_fold.push((acc.clone(), v.clone()));
57-
acc.push(v);
58-
acc
59-
});
60-
(parameters_from_fold, fold_result)
61-
});
6273
}
6374

6475
fn put_back_test(test_vec: Vec<i32>) {

0 commit comments

Comments
 (0)