65 lines
1.2 KiB
Rust
65 lines
1.2 KiB
Rust
use std;
|
|
import std::task;
|
|
|
|
#[test]
|
|
#[ignore]
|
|
fn test_sleep() { task::sleep(1000000u); }
|
|
|
|
#[test]
|
|
fn test_unsupervise() {
|
|
fn f() {
|
|
task::unsupervise();
|
|
fail;
|
|
}
|
|
spawn f();
|
|
}
|
|
|
|
#[test]
|
|
fn test_join() {
|
|
fn winner() {
|
|
}
|
|
|
|
auto wintask = spawn winner();
|
|
|
|
assert task::join(wintask) == task::tr_success;
|
|
|
|
fn failer() {
|
|
task::unsupervise();
|
|
fail;
|
|
}
|
|
|
|
auto failtask = spawn failer();
|
|
|
|
assert task::join(failtask) == task::tr_failure;
|
|
}
|
|
|
|
#[test]
|
|
fn test_send_recv() {
|
|
auto p = port[int]();
|
|
auto c = chan(p);
|
|
task::send(c, 10);
|
|
assert task::recv(p) == 10;
|
|
}
|
|
|
|
#[test]
|
|
fn test_worker() {
|
|
task::worker(fn(port[int] p) {
|
|
auto x; p |> x;
|
|
assert x == 10;
|
|
}).chan <| 10;
|
|
|
|
task::worker(fn(port[rec(int x, int y)] p) {
|
|
auto x; p |> x;
|
|
assert x.y == 20;
|
|
}).chan <| rec(x = 10, y = 20);
|
|
|
|
task::worker(fn(port[rec(int x, int y, int z)] p) {
|
|
auto x; p |> x;
|
|
assert x.z == 30;
|
|
}).chan <| rec(x = 10, y = 20, z = 30);
|
|
|
|
task::worker(fn(port[rec(int a, int b, int c, int d)] p) {
|
|
auto x; p |> x;
|
|
assert x.d == 40;
|
|
}).chan <| rec(a = 10, b = 20, c = 30, d = 40);
|
|
}
|