aboutsummaryrefslogtreecommitdiff
path: root/learn-you-some-erlang/tests/hhfuns_tests.erl
diff options
context:
space:
mode:
Diffstat (limited to 'learn-you-some-erlang/tests/hhfuns_tests.erl')
-rw-r--r--learn-you-some-erlang/tests/hhfuns_tests.erl95
1 files changed, 95 insertions, 0 deletions
diff --git a/learn-you-some-erlang/tests/hhfuns_tests.erl b/learn-you-some-erlang/tests/hhfuns_tests.erl
new file mode 100644
index 0000000..c5c27cf
--- /dev/null
+++ b/learn-you-some-erlang/tests/hhfuns_tests.erl
@@ -0,0 +1,95 @@
+-module(hhfuns_tests).
+-include_lib("eunit/include/eunit.hrl").
+
+one_test() ->
+ ?assertEqual(1, hhfuns:one()).
+
+two_test() ->
+ ?assertEqual(2, hhfuns:two()).
+
+add_test_() ->
+ [?_assertEqual(3, hhfuns:add(fun hhfuns:one/0, fun hhfuns:two/0)),
+ ?_assertError({badfun, _}, hhfuns:add(1,2)),
+ ?_assertEqual(2, hhfuns:add(fun hhfuns:one/0, fun hhfuns:one/0))].
+
+increment_test() ->
+ ?assertEqual([1,2,3], hhfuns:increment([0,1,2])).
+
+decrement_test() ->
+ ?assertEqual([1,2,3], hhfuns:decrement([2,3,4])).
+
+map_test_() ->
+ [?_assertEqual([1,2,3], hhfuns:map(fun hhfuns:incr/1, [0,1,2])),
+ ?_assertEqual([1,2,3], hhfuns:map(fun hhfuns:decr/1, [2,3,4]))].
+
+bases_test_() ->
+ [?_assertEqual(12, hhfuns:base1(3)),
+ ?_assertError({badmatch, _}, hhfuns:base2()),
+ ?_assertEqual(2, hhfuns:base3())].
+
+closure_test() ->
+ ?assertEqual("a/0's password is pony", hhfuns:b(hhfuns:a())).
+
+even_test_() ->
+ [?_assertEqual([], hhfuns:even([])),
+ ?_assertEqual([], hhfuns:even([3,5,7])),
+ ?_assertEqual([2,4], hhfuns:even([1,2,3,4]))].
+
+old_test_() ->
+ L = [{male,45},{female,67},{male,66},{female,12},{unkown,174},{male,74}],
+ [?_assertEqual([{male,66},{male,74}], hhfuns:old_men(L)),
+ ?_assertEqual([], hhfuns:old_men([{male,45}, {female, -54}])),
+ ?_assertEqual([], hhfuns:old_men([]))].
+
+filter_test_() ->
+ L = [{male,45},{female,67},{male,66},{female,12},{unkown,174},{male,74}],
+ IsEven = fun(X) -> X rem 2 == 0 end,
+ IsOldMale = fun({Gender, Age}) -> Gender == male andalso Age > 60 end,
+ [?_assertEqual([], hhfuns:filter(IsEven, [])),
+ ?_assertEqual([], hhfuns:filter(IsEven, [3,5,7])),
+ ?_assertEqual([2,4], hhfuns:filter(IsEven, [1,2,3,4])),
+ ?_assertEqual([{male,66},{male,74}], hhfuns:filter(IsOldMale, L)),
+ ?_assertEqual([], hhfuns:filter(IsOldMale, [{male,45}, {female, -54}])),
+ ?_assertEqual([], hhfuns:filter(IsOldMale, []))].
+
+max_test_() ->
+ [?_assertEqual(3, hhfuns:max([1,2,3])),
+ ?_assertEqual(-1, hhfuns:max([-10,-1,-5.5])),
+ ?_assertError(function_clause, hhfuns:max([]))].
+
+min_test_() ->
+ [?_assertEqual(0, hhfuns:min([1,2,0,3])),
+ ?_assertEqual(-10, hhfuns:min([-10,-1,-5.5])),
+ ?_assertError(function_clause, hhfuns:min([]))].
+
+sum_test_() ->
+ [?_assertEqual(0, hhfuns:sum([])),
+ ?_assertEqual(6, hhfuns:sum([1,2,3]))].
+
+fold_test_() ->
+ [H|T] = [1,7,3,5,9,0,2,3],
+ [?_assertEqual(9,
+ hhfuns:fold(fun(A,B) when A > B -> A; (_,B) -> B end, H, T)),
+ ?_assertEqual(0,
+ hhfuns:fold(fun(A,B) when A < B -> A; (_,B) -> B end, H, T)),
+ ?_assertEqual(21, hhfuns:fold(fun(A,B) -> A + B end, 0, lists:seq(1,6)))].
+
+reverse_test_() ->
+ [?_assertEqual([3,2,1], hhfuns:reverse([1,2,3])),
+ ?_assertEqual([], hhfuns:reverse([]))].
+
+map2_test_() ->
+ [?_assertEqual([1,2,3], hhfuns:map2(fun hhfuns:incr/1, [0,1,2])),
+ ?_assertEqual([1,2,3], hhfuns:map2(fun hhfuns:decr/1, [2,3,4]))].
+
+
+filter2_test_() ->
+ L = [{male,45},{female,67},{male,66},{female,12},{unkown,174},{male,74}],
+ IsEven = fun(X) -> X rem 2 == 0 end,
+ IsOldMale = fun({Gender, Age}) -> Gender == male andalso Age > 60 end,
+ [?_assertEqual([], hhfuns:filter2(IsEven, [])),
+ ?_assertEqual([], hhfuns:filter2(IsEven, [3,5,7])),
+ ?_assertEqual([2,4], hhfuns:filter2(IsEven, [1,2,3,4])),
+ ?_assertEqual([{male,66},{male,74}], hhfuns:filter2(IsOldMale, L)),
+ ?_assertEqual([], hhfuns:filter2(IsOldMale, [{male,45}, {female, -54}])),
+ ?_assertEqual([], hhfuns:filter2(IsOldMale, []))].