From 27ec0f85e6494f9b76b3fb2b9a6dea349f935b46 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Sat, 24 Jun 2023 15:04:15 -0400 Subject: [PATCH] test: add more fork-join tests --- test/effect-based/dune | 2 +- test/effect-based/t_fork_join.ml | 38 ++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 test/effect-based/t_fork_join.ml diff --git a/test/effect-based/dune b/test/effect-based/dune index 28cb0488..e1240926 100644 --- a/test/effect-based/dune +++ b/test/effect-based/dune @@ -1,7 +1,7 @@ (tests (names t_fib1 t_futs1 t_many t_fib_fork_join - t_fib_fork_join_all t_sort) + t_fib_fork_join_all t_sort t_fork_join) (enabled_if (>= %{ocaml_version} 5.0)) (libraries moonpool trace ;tracy-client.trace )) diff --git a/test/effect-based/t_fork_join.ml b/test/effect-based/t_fork_join.ml new file mode 100644 index 00000000..db831f65 --- /dev/null +++ b/test/effect-based/t_fork_join.ml @@ -0,0 +1,38 @@ +open Moonpool + +let pool = Pool.create ~min:4 () + +let () = + let x = + Pool.run_wait_block pool (fun () -> + let x, y = + Fork_join.both + (fun () -> + Thread.delay 0.005; + 1) + (fun () -> + Thread.delay 0.005; + 2) + in + x + y) + in + assert (x = 3) + +let () = + try + Pool.run_wait_block pool (fun () -> + Fork_join.both_ignore + (fun () -> Thread.delay 0.005) + (fun () -> + Thread.delay 0.02; + raise Exit)); + failwith "should fail" + with Exit -> () + +let () = + let par_sum = + Pool.run_wait_block pool (fun () -> + Fork_join.all_init 42 (fun i -> i * i) |> List.fold_left ( + ) 0) + in + let exp_sum = List.init 42 (fun x -> x * x) |> List.fold_left ( + ) 0 in + assert (par_sum = exp_sum)