use crate::*;
use alloc::vec;
#[test]
fn extend_par() {
let mut vec = vec![42];
let par = (0..170).par().map(|x| x * 2).filter(|x| *x < 50);
vec.par_extend(par);
let mut expected = vec![42];
let iter = (0..170).map(|x| x * 2).filter(|x| *x < 50);
expected.extend(iter);
assert_eq!(vec, expected);
}
#[test]
fn extend_par_opt() {
let mut vec = vec![42];
let par = (0..170)
.par()
.map(Some)
.into_optional()
.map(|x| x * 2)
.filter(|x| *x < 50);
let ok = vec.par_extend_optional(par);
let mut expected = vec![42];
let iter = (0..170).map(|x| x * 2).filter(|x| *x < 50);
expected.extend(iter);
assert_eq!(ok, Some(()));
assert_eq!(vec, expected);
let mut vec = vec![42];
let par = (0..170)
.par()
.map(|x| (x < 10).then_some(x))
.into_optional()
.map(|x| x * 2)
.filter(|x| *x < 50);
let ok = vec.par_extend_optional(par);
assert_eq!(ok, None);
}
#[test]
fn extend_par_res() {
let mut vec = vec![42];
let par = (0..170)
.par()
.map(Result::<_, char>::Ok)
.into_fallible()
.map(|x| x * 2)
.filter(|x| *x < 50);
let ok = vec.par_extend_fallible(par);
let mut expected = vec![42];
let iter = (0..170).map(|x| x * 2).filter(|x| *x < 50);
expected.extend(iter);
assert_eq!(ok, Ok(()));
assert_eq!(vec, expected);
let mut vec = vec![42];
let par = (0..170)
.par()
.map(|x| match x < 10 {
true => Ok(x),
false => Err('x'),
})
.into_fallible()
.map(|x| x * 2)
.filter(|x| *x < 50);
let ok = vec.par_extend_fallible(par);
assert_eq!(ok, Err('x'));
}