39 lines
786 B
Rust
39 lines
786 B
Rust
use std::sync::Mutex;
|
|
|
|
use easy_parallel::Parallel;
|
|
|
|
#[test]
|
|
fn smoke() {
|
|
let m = Mutex::new(0);
|
|
let v = [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 = [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 = [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);
|
|
}
|