diff --git a/test/dune b/test/dune new file mode 100644 index 00000000..be643efa --- /dev/null +++ b/test/dune @@ -0,0 +1,3 @@ +(test + (name t_fib) + (libraries moonpool)) diff --git a/test/t_fib.ml b/test/t_fib.ml new file mode 100644 index 00000000..0d5310af --- /dev/null +++ b/test/t_fib.ml @@ -0,0 +1,50 @@ +open Moonpool + +let pool = Pool.create ~min:4 () + +let rec fib x = + if x <= 1 then + 1 + else + fib (x - 1) + fib (x - 2) + +let () = assert (List.init 10 fib = [ 1; 1; 2; 3; 5; 8; 13; 21; 34; 55 ]) +let fibs = Array.init 30 (fun n -> Fut.spawn ~on:pool (fun () -> fib n)) +let res = Fut.join_array fibs |> Fut.wait_block + +let () = + assert ( + res + = Ok + [| + 1; + 1; + 2; + 3; + 5; + 8; + 13; + 21; + 34; + 55; + 89; + 144; + 233; + 377; + 610; + 987; + 1597; + 2584; + 4181; + 6765; + 10946; + 17711; + 28657; + 46368; + 75025; + 121393; + 196418; + 317811; + 514229; + 832040; + |])