From 5a9cdd3cc89507d4d74f8bded56ce5e037b3b56e Mon Sep 17 00:00:00 2001 From: Trygve Laugstøl Date: Fri, 23 Feb 2024 07:08:18 +0100 Subject: wip --- learn-you-some-erlang/tests/hhfuns_tests.erl | 95 ++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 learn-you-some-erlang/tests/hhfuns_tests.erl (limited to 'learn-you-some-erlang/tests/hhfuns_tests.erl') 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, []))]. -- cgit v1.2.3