open OUnit2
open Lwt_test_utils
let tests =
"LwtUtils.all"
>::: [
( "includes_all_results" %>:: fun ctxt ->
let (p1, r1) = Lwt.wait () in
let (p2, r2) = Lwt.wait () in
Lwt.wakeup r1 1;
let p = LwtUtils.all [p1; p2] in
Lwt.wakeup r2 2;
let%lwt lst = p in
assert_equal ~ctxt lst [1; 2];
Lwt.return_unit );
( "fails_early" %>:: fun ctxt ->
let (p1, _) = Lwt.wait () in
let (p2, r2) = Lwt.wait () in
Lwt.wakeup_exn r2 (Failure "did not work");
let p = LwtUtils.all [p1; p2] in
let%lwt exn =
try%lwt
let%lwt _lst = p in
Lwt.return_none
with Failure s -> Lwt.return_some s
in
assert_equal ~ctxt exn (Some "did not work");
Lwt.return_unit );
]