File: smoke.rs

package info (click to toggle)
rust-easy-parallel 3.3.1-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 136 kB
  • sloc: makefile: 2; sh: 1
file content (38 lines) | stat: -rw-r--r-- 786 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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);
}