diff options
Diffstat (limited to 'gen/tuple.erl')
-rw-r--r-- | gen/tuple.erl | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/gen/tuple.erl b/gen/tuple.erl index 270bb29..ec38901 100644 --- a/gen/tuple.erl +++ b/gen/tuple.erl @@ -2,7 +2,16 @@ -compile(no_auto_import). -include_lib("eunit/include/eunit.hrl"). --export([first/1, second/1]). +-export([new/2, first/1, second/1, swap/1, fetch/2]). + +new(A, B) -> + {A, B}. + +-ifdef(TEST). +new_test() -> + expect:equal(new(1, 2), {1, 2}), + expect:equal(new(2, <<"3">>), {2, <<"3">>}). +-endif. first(Tup) -> {A, _} = Tup, @@ -21,3 +30,29 @@ second(Tup) -> second_test() -> expect:equal(second({1, 2}), 2). -endif. + +swap(Tup) -> + {A, B} = Tup, + {B, A}. + +-ifdef(TEST). +swap_test() -> + expect:equal(swap({1, <<"2">>}), {<<"2">>, 1}). +-endif. + +fetch(Haystack, Needle) -> + list:find(Haystack, fun(Tuple) -> case first(Tuple) =:= Needle of + true -> + {ok, second(Tuple)}; + + false -> + {error, []} + end end). + +-ifdef(TEST). +fetch_test() -> + Proplist = [{0, <<"1">>}, {1, <<"2">>}], + expect:equal(fetch(Proplist, 0), {ok, <<"1">>}), + expect:equal(fetch(Proplist, 1), {ok, <<"2">>}), + expect:is_error(fetch(Proplist, 2)). +-endif. |