/src/test/run-pass/task-comm-9.rs

http://github.com/jruderman/rust · Rust · 33 lines · 26 code · 7 blank · 0 comment · 3 complexity · 4fc7c4b33a87cd1ee87aeffdc7e18a3e MD5 · raw file

  1. use std;
  2. import task;
  3. fn main() { test00(); }
  4. fn test00_start(c: pipes::chan<int>, number_of_messages: int) {
  5. let mut i: int = 0;
  6. while i < number_of_messages { c.send(i + 0); i += 1; }
  7. }
  8. fn test00() {
  9. let r: int = 0;
  10. let mut sum: int = 0;
  11. let p = pipes::port_set();
  12. let number_of_messages: int = 10;
  13. let ch = p.chan();
  14. let mut result = none;
  15. do task::task().future_result(|-r| { result = some(r); }).spawn {
  16. test00_start(ch, number_of_messages);
  17. }
  18. let mut i: int = 0;
  19. while i < number_of_messages {
  20. sum += p.recv();
  21. log(debug, r);
  22. i += 1;
  23. }
  24. future::get(option::unwrap(result));
  25. assert (sum == number_of_messages * (number_of_messages - 1) / 2);
  26. }