X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=test%2Fhope_option_SUITE.erl;h=e7d14dcf1aaa35196d7990757b255eac53f6afbc;hb=HEAD;hp=2b3dab0005f073efe0d165270a2ca56b3b688281;hpb=2dc71691ff8d7494f80a2af26994c186779d6898;p=hope.git diff --git a/test/hope_option_SUITE.erl b/test/hope_option_SUITE.erl index 2b3dab0..e7d14dc 100644 --- a/test/hope_option_SUITE.erl +++ b/test/hope_option_SUITE.erl @@ -9,10 +9,13 @@ %% Test cases -export( [ t_of_result/1 + , t_undefined/1 , t_put/1 , t_get/1 , t_map/1 , t_iter/1 + , t_pipe/1 + , t_validate/1 ]). @@ -30,10 +33,13 @@ all() -> groups() -> Tests = [ t_of_result + , t_undefined , t_put , t_get , t_map , t_iter + , t_pipe + , t_validate ], Properties = [parallel], [ {?GROUP, Properties, Tests} @@ -60,12 +66,12 @@ t_map(_Cfg) -> t_iter(_Cfg) -> Key = key, - Put = fun (Val) -> _ = put(Key, Val), ok end, + Put = fun (Val) -> put(Key, Val) end, Get = fun () -> get(Key) end, Val = foo, - ok = hope_option:iter(none , Put), + {} = hope_option:iter(none , Put), undefined = Get(), - ok = hope_option:iter({some, Val}, Put), + {} = hope_option:iter({some, Val}, Put), Val = Get(). t_of_result(_Cfg) -> @@ -75,3 +81,27 @@ t_of_result(_Cfg) -> ResultError = {error, Bar}, {some, Foo} = hope_option:of_result(ResultOk), none = hope_option:of_result(ResultError). + +t_pipe(_Cfg) -> + Steps = + [ fun (0) -> hope_option:return(1); (_) -> none end + , fun (1) -> hope_option:return(2); (_) -> none end + , fun (2) -> hope_option:return(3); (_) -> none end + ], + {some, 3} = hope_option:pipe(Steps, 0), + none = hope_option:pipe(Steps, 1), + none = hope_option:pipe(Steps, 2), + none = hope_option:pipe(Steps, 3). + +t_undefined(_Cfg) -> + X = foo, + {some, X} = hope_option:of_undefined(X), + X = hope_option:to_undefined({some, X}), + none = hope_option:of_undefined(undefined), + undefined = hope_option:to_undefined(none). + +t_validate(_Cfg) -> + IsFoo = fun (X) -> X =:= foo end, + none = hope_option:validate(none, IsFoo), + none = hope_option:validate({some, bar}, IsFoo), + {some, foo} = hope_option:validate({some, foo}, IsFoo).