diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-02-13 23:54:43 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-02-14 11:24:09 -0800 |
| commit | 3f4872f03284f4737675a68438350dd2958db229 (patch) | |
| tree | 4d386e5182be976ae7c35f1837c490d7621e6819 | |
| parent | a393fb32211f66cd33b1b0c6cad1991ebd8fae01 (diff) | |
| download | rust-3f4872f03284f4737675a68438350dd2958db229.tar.gz rust-3f4872f03284f4737675a68438350dd2958db229.zip | |
test: Test yielding in crust functions
| -rw-r--r-- | src/test/run-pass/crust-yield.rs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/test/run-pass/crust-yield.rs b/src/test/run-pass/crust-yield.rs new file mode 100644 index 00000000000..42a61a6af1f --- /dev/null +++ b/src/test/run-pass/crust-yield.rs @@ -0,0 +1,27 @@ +native mod rustrt { + fn rust_dbg_call(cb: *u8, + data: ctypes::uintptr_t) -> ctypes::uintptr_t; +} + +crust fn cb(data: ctypes::uintptr_t) -> ctypes::uintptr_t { + if data == 1u { + data + } else { + count(data - 1u) + count(data - 1u) + } +} + +fn count(n: uint) -> uint { + task::yield(); + rustrt::rust_dbg_call(cb, n) +} + +fn main() { + iter::repeat(10u) {|| + task::spawn {|| + let result = count(5u); + #debug("result = %?", result); + assert result == 16u; + }; + } +} |
