Implement function composition.
[hope.git] / test / hope_fun_SUITE.erl
index d4e2281..7b5051b 100644 (file)
@@ -8,7 +8,10 @@
 
 %% Test cases
 -export(
-    [ t_id/1
+    [ t_specs/1
+    , t_id/1
+    , t_curry/1
+    , t_compose/1
     ]).
 
 
@@ -25,7 +28,10 @@ all() ->
 
 groups() ->
     Tests =
-        [ t_id
+        [ t_specs
+        , t_id
+        , t_curry
+        , t_compose
         ],
     Properties = [parallel],
     [ {?GROUP, Properties, Tests}
@@ -36,6 +42,35 @@ groups() ->
 %%  Test cases
 %% =============================================================================
 
+t_specs(_) ->
+    [] = proper:check_specs(hope_fun).
+
 t_id(_Cfg) ->
     X = foo,
     X = hope_fun:id(X).
+
+t_curry(_Cfg) ->
+    Single = fun (X) -> X end,
+    Double = fun (X, Y) -> {X, Y} end,
+    Triple = fun (X, Y, Z) -> {X, Y, Z} end,
+
+    F = hope_fun:curry(Single),
+    a = F(a),
+
+    G1 = hope_fun:curry(Double),
+    G = G1(a),
+    {a, b} = G(b),
+
+    H1 = hope_fun:curry(Triple),
+    H2 = H1(a),
+    H  = H2(b),
+    {a, b, c} = H(c).
+
+t_compose(_Cfg) ->
+    A2B = fun (a) -> b end,
+    B2C = fun (b) -> c end,
+    C2D = fun (c) -> d end,
+    Fs = [C2D, B2C, A2B],
+    d = (hope_fun:compose       (              Fs  ))(a),
+    d = (hope_fun:compose_right (              Fs  ))(a),
+    d = (hope_fun:compose_left  (lists:reverse(Fs) ))(a).
This page took 0.026606 seconds and 4 git commands to generate.