test for Moonpool_fib.main

This commit is contained in:
Simon Cruanes 2024-03-04 15:49:20 -05:00
parent 48fbf876dc
commit c878b1a198
2 changed files with 44 additions and 1 deletions

View file

@ -1,7 +1,7 @@
(tests
(names
t_fib1 t_fls)
t_fib1 t_fls t_main)
(enabled_if
(>= %{ocaml_version} 5.0))
(libraries

43
test/fiber/t_main.ml Normal file
View file

@ -0,0 +1,43 @@
open Moonpool
module F = Moonpool_fib
let ( let@ ) = ( @@ )
let () =
let r =
F.main @@ fun runner ->
let f1 = F.spawn (fun () -> 1) in
let f2 = F.spawn_top ~on:runner (fun () -> 2) in
let f3 = F.spawn (fun () -> F.await f1 + 10) in
let r = F.await f2 + F.await f3 in
assert (r = 13);
r
in
assert (r = 13)
let () =
(* run fibers in the background, await them in the main thread *)
let@ bg = Fifo_pool.with_ ~num_threads:4 () in
let r =
F.main @@ fun runner ->
let f1 = F.spawn_top ~on:bg (fun () -> 1) in
let f2 = F.spawn_top ~on:runner (fun () -> 2) in
let f3 = F.spawn_top ~on:bg (fun () -> F.await f1 + 10) in
let r = F.await f2 + F.await f3 in
assert (r = 13);
r
in
assert (r = 13)
let () =
try
let _r =
F.main @@ fun _r ->
let fib = F.spawn (fun () -> failwith "oops") in
F.await fib
in
assert false
with Failure msg ->
(* Printf.eprintf "got %S\n%!" msg; *)
assert (msg = "oops")