1 -module(hope_result_SUITE).
3 %% TODO: Import only what is used.
4 -include_lib("proper/include/proper.hrl").
18 , t_hope_result_specs/1
23 -define(GROUP_PIPE, result_pipe).
24 -define(GROUP_SPEC, result_spec).
25 -define(GROUP_LIFT, result_lift_exn).
28 %% ============================================================================
29 %% Common Test callbacks
30 %% ============================================================================
33 [ {group, ?GROUP_PIPE}
34 , {group, ?GROUP_SPEC}
35 , {group, ?GROUP_LIFT}
49 Properties = [parallel],
50 [ {?GROUP_PIPE, Properties, PipeTests}
51 , {?GROUP_SPEC, Properties, SpecTests}
52 , {?GROUP_LIFT, Properties, LiftTests}
55 init_per_group(?GROUP_LIFT, Cfg) ->
57 init_per_group(?GROUP_SPEC, Cfg) ->
59 init_per_group(?GROUP_PIPE, Cfg) ->
61 [ fun (0) -> {ok, 1}; (X) -> {error, X} end
62 , fun (1) -> {ok, 2}; (X) -> {error, X} end
63 , fun (2) -> {ok, 3}; (X) -> {error, X} end
65 hope_kv_list:set(Cfg, steps, Steps).
67 end_per_group(?GROUP_LIFT, _Cfg) ->
69 end_per_group(?GROUP_SPEC, _Cfg) ->
71 end_per_group(?GROUP_PIPE, _Cfg) ->
75 %% =============================================================================
77 %% =============================================================================
80 {some, Steps} = hope_kv_list:get(Cfg, steps),
81 {ok, 3} = hope_result:pipe(Steps, 0).
84 {some, Steps} = hope_kv_list:get(Cfg, steps),
85 {error, 1} = hope_result:pipe(Steps, 1).
87 t_hope_result_specs(_) ->
88 [] = proper:check_specs(hope_result).
94 F = fun (ok) -> apply(erlang, Class, [Reason]) end,
95 G = hope_result:lift_exn(F),
96 H = hope_result:lift_exn(F, Label),
97 {error, {Class, Reason}} = G(ok),
98 {error, {Label, {Class, Reason}}} = H(ok).