1
Fork 0
rust/src/test/stdtest/task.rs
2011-07-24 16:18:31 -07:00

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);
}