Something went wrong. Try again.
The Monad language. Dependent types, functional programming compiled with LLVM. Hobby project.
Something went wrong. Try again.
753 B · 32 lines
at main
123456789101112131415161718192021222324252627282930313233// Fiber concurrency tests// Tests for forkIO, await_fiber, cancel_fiberuse lib::concurrent::fiber {await_fiber, fiber, forkIO}def io_42_action (_ : Unit) : IO I64 := IO.pure 42def io_7_action (_ : Unit) : IO I64 := IO.pure 7def io_true_action (_ : Unit) : IO Bool := IO.pure true#[test]def test_fork_and_await : IO Bool { let fiber <- forkIO io_42_action; let result <- await_fiber fiber; return (result == 42)}#[test]def test_fork_returns_io_fiber : IO Bool { forkIO io_true_action; return true}#[test]def test_fork_multiple_and_await : IO Bool { let f1 <- forkIO io_42_action; let f2 <- forkIO io_7_action; let r2 <- await_fiber f2; let r1 <- await_fiber f1; return (r1 == 42 && r2 == 7)}