summary refs log tree commit diff
path: root/src/test/run-pass/unique-send-2.rs
blob: 7169993f664f93571b50be33d378a63571f56f19 (plain)
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
use std;
import comm;
import task;
import uint;

fn child(c: comm::chan<~uint>, i: uint) {
    comm::send(c, ~i);
}

fn main() {
    let p = comm::port();
    let ch = comm::chan(p);
    let n = 100u;
    let mut expected = 0u;
    for uint::range(0u, n) |i| {
        task::spawn(|| child(ch, i) );
        expected += i;
    }

    let mut actual = 0u;
    for uint::range(0u, n) |_i| {
        let j = comm::recv(p);
        actual += *j;
    }

    assert expected == actual;
}