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"]);;