61 lines
1.4 KiB
Rust
61 lines
1.4 KiB
Rust
use rayon::prelude::*;
|
|
|
|
#[test]
|
|
fn check_intersperse() {
|
|
let v: Vec<_> = (0..1000).into_par_iter().intersperse(-1).collect();
|
|
assert_eq!(v.len(), 1999);
|
|
for (i, x) in v.into_iter().enumerate() {
|
|
assert_eq!(x, if i % 2 == 0 { i as i32 / 2 } else { -1 });
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn check_intersperse_again() {
|
|
let v: Vec<_> = (0..1000)
|
|
.into_par_iter()
|
|
.intersperse(-1)
|
|
.intersperse(-2)
|
|
.collect();
|
|
assert_eq!(v.len(), 3997);
|
|
for (i, x) in v.into_iter().enumerate() {
|
|
let y = match i % 4 {
|
|
0 => i as i32 / 4,
|
|
2 => -1,
|
|
_ => -2,
|
|
};
|
|
assert_eq!(x, y);
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn check_intersperse_unindexed() {
|
|
let v: Vec<_> = (0..1000).map(|i| i.to_string()).collect();
|
|
let s = v.join(",");
|
|
let s2 = v.join(";");
|
|
let par: String = s.par_split(',').intersperse(";").collect();
|
|
assert_eq!(par, s2);
|
|
}
|
|
|
|
#[test]
|
|
fn check_intersperse_producer() {
|
|
(0..1000)
|
|
.into_par_iter()
|
|
.intersperse(-1)
|
|
.zip_eq(0..1999)
|
|
.for_each(|(x, i)| {
|
|
assert_eq!(x, if i % 2 == 0 { i / 2 } else { -1 });
|
|
});
|
|
}
|
|
|
|
#[test]
|
|
fn check_intersperse_rev() {
|
|
(0..1000)
|
|
.into_par_iter()
|
|
.intersperse(-1)
|
|
.zip_eq(0..1999)
|
|
.rev()
|
|
.for_each(|(x, i)| {
|
|
assert_eq!(x, if i % 2 == 0 { i / 2 } else { -1 });
|
|
});
|
|
}
|