blob: de1d0a865800d7a39bb742dea821bdae5ab62567 [file] [log] [blame]
use std::sync::Mutex;
use easy_parallel::Parallel;
#[test]
fn smoke() {
let m = Mutex::new(0);
let v = vec![2, 3, 5, 7, 11];
Parallel::new()
.add(|| *m.lock().unwrap() += 10)
.add(|| *m.lock().unwrap() += 20)
.each(v.iter(), |n| *m.lock().unwrap() += *n)
.run();
assert_eq!(m.into_inner().unwrap(), 10 + 20 + v.iter().sum::<i32>());
}
#[test]
fn squares() {
let v = vec![10, 20, 30];
let squares = Parallel::new()
.each(0..v.len(), |i| v[i] * v[i])
.run();
assert_eq!(squares, [100, 400, 900]);
}
#[test]
fn finish() {
let v = vec![10, 20, 30];
let (squares, len) = Parallel::new()
.each(0..v.len(), |i| v[i] * v[i])
.finish(|| v.len());
assert_eq!(squares, [100, 400, 900]);
assert_eq!(len, 3);
}