ocaml-containers/tests/core/t_result.ml
2022-07-02 00:29:25 -04:00

32 lines
1,007 B
OCaml

open CCResult
module T = (val Containers_testlib.make ~__FILE__ ())
include T;;
t @@ fun () -> (Error "ohno 42") = (fail_printf "ohno %d" 42);;
t @@ fun () -> (Error "ohno 42") = (fail_fprintf "ohno %d" 42);;
eq (Error "error\ncontext:message(number 42, foo: true)")
(add_ctxf "message(number %d, foo: %B)" 42 true (Error "error"));;
t @@ fun () ->
let called_with = ref None in
let f e = called_with := Some e in
iter_err f (Ok 1);
assert (!called_with = None);
iter_err f (Error 1);
assert (!called_with = Some 1);
true ;;
t @@ fun () -> get_or_failwith (Ok 1) = 1;;
t @@ fun () -> try ignore @@ get_or_failwith (Error "e"); false with Failure msg -> msg = "e";;
eq (get_lazy (fun _ -> 2) (Ok 1)) (1);;
eq (get_lazy (fun _ -> 2) (Error "error")) (2);;
eq 42 (fold_ok (+) 2 (Ok 40));;
eq 40 (fold_ok (+) 40 (Error "foo"));;
eq (Ok []) (flatten_l []);;
eq (Ok [1;2;3]) (flatten_l [Ok 1; Ok 2; Ok 3]);;
eq (Error "ohno") (flatten_l [Ok 1; Error "ohno"; Ok 2; Ok 3; Error "wut"]);;