diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5e621b1..9611b10 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,7 +17,7 @@ jobs: strategy: matrix: - otp_version: ['27.0', '25.3', '25.2', '23.2'] + otp_version: ['27', '25', '23'] os: [ubuntu-latest] steps: diff --git a/src/ec_lists.erl b/src/ec_lists.erl index 0ae5204..fed76d0 100644 --- a/src/ec_lists.erl +++ b/src/ec_lists.erl @@ -63,184 +63,3 @@ fetch(Fun, List) when is_list(List), is_function(Fun) -> error -> throw(not_found) end. - -%%%=================================================================== -%%% Test Functions -%%%=================================================================== - --ifdef(TEST). --include_lib("eunit/include/eunit.hrl"). - -find1_test() -> - TestData = [1, 2, 3, 4, 5, 6], - Result = find(fun(5) -> - true; - (_) -> - false - end, - TestData), - ?assertMatch({ok, 5}, Result), - - Result2 = find(fun(37) -> - true; - (_) -> - false - end, - TestData), - ?assertMatch(error, Result2). - -find2_test() -> - TestData = ["one", "two", "three", "four", "five", "six"], - Result = find(fun("five") -> - true; - (_) -> - false - end, - TestData), - ?assertMatch({ok, "five"}, Result), - - Result2 = find(fun(super_duper) -> - true; - (_) -> - false - end, - TestData), - ?assertMatch(error, Result2). - - - -find3_test() -> - TestData = [{"one", 1}, {"two", 2}, {"three", 3}, {"four", 5}, {"five", 5}, - {"six", 6}], - Result = find(fun({"one", 1}) -> - true; - (_) -> - false - end, - TestData), - ?assertMatch({ok, {"one", 1}}, Result), - - Result2 = find(fun([fo, bar, baz]) -> - true; - ({"onehundred", 100}) -> - true; - (_) -> - false - end, - TestData), - ?assertMatch(error, Result2). - - - -fetch1_test() -> - TestData = [1, 2, 3, 4, 5, 6], - Result = fetch(fun(5) -> - true; - (_) -> - false - end, - TestData), - ?assertMatch(5, Result), - - ?assertThrow(not_found, - fetch(fun(37) -> - true; - (_) -> - false - end, - TestData)). - -fetch2_test() -> - TestData = ["one", "two", "three", "four", "five", "six"], - Result = fetch(fun("five") -> - true; - (_) -> - false - end, - TestData), - ?assertMatch("five", Result), - - ?assertThrow(not_found, - fetch(fun(super_duper) -> - true; - (_) -> - false - end, - TestData)). - -fetch3_test() -> - TestData = [{"one", 1}, {"two", 2}, {"three", 3}, {"four", 5}, {"five", 5}, - {"six", 6}], - Result = fetch(fun({"one", 1}) -> - true; - (_) -> - false - end, - TestData), - ?assertMatch({"one", 1}, Result), - - ?assertThrow(not_found, - fetch(fun([fo, bar, baz]) -> - true; - ({"onehundred", 100}) -> - true; - (_) -> - false - end, - TestData)). - -search1_test() -> - TestData = [1, 2, 3, 4, 5, 6], - Result = search(fun(5) -> - {ok, 5}; - (_) -> - not_found - end, - TestData), - ?assertMatch({ok, 5, 5}, Result), - - Result2 = search(fun(37) -> - {ok, 37}; - (_) -> - not_found - end, - TestData), - ?assertMatch(not_found, Result2). - -search2_test() -> - TestData = [1, 2, 3, 4, 5, 6], - Result = search(fun(1) -> - {ok, 10}; - (_) -> - not_found - end, - TestData), - ?assertMatch({ok, 10, 1}, Result), - - Result2 = search(fun(6) -> - {ok, 37}; - (_) -> - not_found - end, - TestData), - ?assertMatch({ok, 37, 6}, Result2). - -search3_test() -> - TestData = [1, 2, 3, 4, 5, 6], - Result = search(fun(10) -> - {ok, 10}; - (_) -> - not_found - end, - TestData), - ?assertMatch(not_found, Result), - - Result2 = search(fun(-1) -> - {ok, 37}; - (_) -> - not_found - end, - TestData), - ?assertMatch(not_found, Result2). - --endif. diff --git a/test/ec_lists_tests.erl b/test/ec_lists_tests.erl new file mode 100644 index 0000000..f6f4025 --- /dev/null +++ b/test/ec_lists_tests.erl @@ -0,0 +1,172 @@ +%%% @copyright 2024 Erlware, LLC. +-module(ec_lists_tests). + +-include_lib("eunit/include/eunit.hrl"). + +find1_test() -> + TestData = [1, 2, 3, 4, 5, 6], + Result = ec_lists:find(fun(5) -> + true; + (_) -> + false + end, + TestData), + ?assertMatch({ok, 5}, Result), + + Result2 = ec_lists:find(fun(37) -> + true; + (_) -> + false + end, + TestData), + ?assertMatch(error, Result2). + +find2_test() -> + TestData = ["one", "two", "three", "four", "five", "six"], + Result = ec_lists:find(fun("five") -> + true; + (_) -> + false + end, + TestData), + ?assertMatch({ok, "five"}, Result), + + Result2 = ec_lists:find(fun(super_duper) -> + true; + (_) -> + false + end, + TestData), + ?assertMatch(error, Result2). + +find3_test() -> + TestData = [{"one", 1}, {"two", 2}, {"three", 3}, {"four", 5}, {"five", 5}, + {"six", 6}], + Result = ec_lists:find(fun({"one", 1}) -> + true; + (_) -> + false + end, + TestData), + ?assertMatch({ok, {"one", 1}}, Result), + + Result2 = ec_lists:find(fun([fo, bar, baz]) -> + true; + ({"onehundred", 100}) -> + true; + (_) -> + false + end, + TestData), + ?assertMatch(error, Result2). + +fetch1_test() -> + TestData = [1, 2, 3, 4, 5, 6], + Result = ec_lists:fetch(fun(5) -> + true; + (_) -> + false + end, + TestData), + ?assertMatch(5, Result), + + ?assertThrow(not_found, + ec_lists:fetch(fun(37) -> + true; + (_) -> + false + end, + TestData)). + +fetch2_test() -> + TestData = ["one", "two", "three", "four", "five", "six"], + Result = ec_lists:fetch(fun("five") -> + true; + (_) -> + false + end, + TestData), + ?assertMatch("five", Result), + + ?assertThrow(not_found, + ec_lists:fetch(fun(super_duper) -> + true; + (_) -> + false + end, + TestData)). + +fetch3_test() -> + TestData = [{"one", 1}, {"two", 2}, {"three", 3}, {"four", 5}, {"five", 5}, + {"six", 6}], + Result = ec_lists:fetch(fun({"one", 1}) -> + true; + (_) -> + false + end, + TestData), + ?assertMatch({"one", 1}, Result), + + ?assertThrow(not_found, + ec_lists:fetch(fun([fo, bar, baz]) -> + true; + ({"onehundred", 100}) -> + true; + (_) -> + false + end, + TestData)). + +search1_test() -> + TestData = [1, 2, 3, 4, 5, 6], + Result = ec_lists:search(fun(5) -> + {ok, 5}; + (_) -> + not_found + end, + TestData), + ?assertMatch({ok, 5, 5}, Result), + + Result2 = ec_lists:search(fun(37) -> + {ok, 37}; + (_) -> + not_found + end, + TestData), + ?assertMatch(not_found, Result2). + +search2_test() -> + TestData = [1, 2, 3, 4, 5, 6], + Result = ec_lists:search(fun(1) -> + {ok, 10}; + (_) -> + not_found + end, + TestData), + ?assertMatch({ok, 10, 1}, Result), + + Result2 = ec_lists:search(fun(6) -> + {ok, 37}; + (_) -> + not_found + end, + TestData), + ?assertMatch({ok, 37, 6}, Result2). + +search3_test() -> + TestData = [1, 2, 3, 4, 5, 6], + Result = ec_lists:search(fun(10) -> + {ok, 10}; + (_) -> + not_found + end, + TestData), + ?assertMatch(not_found, Result), + + Result2 = ec_lists:search(fun(-1) -> + {ok, 37}; + (_) -> + not_found + end, + TestData), + ?assertMatch(not_found, Result2).