This is an automated email from the ASF dual-hosted git repository. kocolosk pushed a commit to branch update-toolchain in repository https://gitbox.apache.org/repos/asf/couchdb-khash.git
commit 791091cf1f7681f3481dc0baaacb1646cd005587 Author: Adam Kocoloski <[email protected]> AuthorDate: Fri Nov 26 18:18:28 2021 +0000 Format code with erlfmt --- src/khash.erl | 53 ++++++++++++++++------------------------------------ test/gen_term.erl | 30 ++++++----------------------- test/khash_tests.erl | 51 ++++++++++++++++++++++++++++---------------------- 3 files changed, 51 insertions(+), 83 deletions(-) diff --git a/src/khash.erl b/src/khash.erl index daaf5ea..1db4c4c 100644 --- a/src/khash.erl +++ b/src/khash.erl @@ -5,7 +5,6 @@ -module(khash). -on_load(init/0). - -export([ new/0, new/1, @@ -24,97 +23,82 @@ fold/3 ]). - -define(NOT_LOADED, not_loaded(?LINE)). - -type kv() :: {any(), any()}. -type khash() :: term(). -type khash_iter() :: term(). -type option() :: []. - -spec new() -> {ok, khash()}. new() -> new([]). - -spec new([option()]) -> {ok, khash()}. new(_Options) -> ?NOT_LOADED. - -spec from_list([kv()]) -> {ok, khash()}. from_list(KVList) -> from_list(KVList, []). - -spec from_list([kv()], [option()]) -> {ok, khash()}. from_list(KVList, Options) -> {ok, Hash} = ?MODULE:new(Options), - lists:foreach(fun({Key, Val}) -> - ?MODULE:put(Hash, Key, Val) - end, KVList), + lists:foreach( + fun({Key, Val}) -> + ?MODULE:put(Hash, Key, Val) + end, + KVList + ), {ok, Hash}. - -spec to_list(khash()) -> [kv()]. to_list(_Hash) -> ?NOT_LOADED. - -spec clear(khash()) -> ok. clear(_Hash) -> ?NOT_LOADED. - -spec lookup(khash(), any()) -> {value, any()} | not_found. lookup(Hash, Key) -> lookup_int(Hash, erlang:phash2(Key), Key). - -spec get(khash(), any()) -> any(). get(Hash, Key) -> get(Hash, Key, undefined). - -spec get(khash(), any(), any()) -> any(). get(Hash, Key, Default) -> get_int(Hash, erlang:phash2(Key), Key, Default). - -spec put(khash(), any(), any()) -> ok. put(Hash, Key, Value) -> put_int(Hash, erlang:phash2(Key), Key, Value). - -spec del(khash(), any()) -> ok. del(Hash, Key) -> del_int(Hash, erlang:phash2(Key), Key). - -spec size(khash()) -> non_neg_integer(). size(_Hash) -> ?NOT_LOADED. - -spec iter(khash()) -> {ok, khash_iter()}. iter(_Hash) -> ?NOT_LOADED. - -spec iter_next(khash_iter()) -> - kv() | end_of_table | {error, expired_iterator}. + kv() | end_of_table | {error, expired_iterator}. iter_next(_Iter) -> ?NOT_LOADED. - -spec fold(khash(), fun(), any()) -> any(). fold(Hash, FoldFun, Acc) -> {ok, Iter} = ?MODULE:iter(Hash), fold_int(Iter, FoldFun, Acc). - fold_int(Iter, FoldFun, Acc) -> case ?MODULE:iter_next(Iter) of {Key, Value} -> @@ -124,34 +108,29 @@ fold_int(Iter, FoldFun, Acc) -> Acc end. - init() -> - PrivDir = case code:priv_dir(?MODULE) of - {error, _} -> - EbinDir = filename:dirname(code:which(?MODULE)), - AppPath = filename:dirname(EbinDir), - filename:join(AppPath, "priv"); - Path -> - Path - end, + PrivDir = + case code:priv_dir(?MODULE) of + {error, _} -> + EbinDir = filename:dirname(code:which(?MODULE)), + AppPath = filename:dirname(EbinDir), + filename:join(AppPath, "priv"); + Path -> + Path + end, erlang:load_nif(filename:join(PrivDir, "khash"), 0). - lookup_int(_Hash, _HashValue, _Key) -> ?NOT_LOADED. - get_int(_Hash, _HashValue, _Key, _Default) -> ?NOT_LOADED. - put_int(_Hash, _HashValue, _Key, _Value) -> ?NOT_LOADED. - del_int(_Hash, _HashValue, _Key) -> ?NOT_LOADED. - not_loaded(Line) -> erlang:nif_error({not_loaded, [{module, ?MODULE}, {line, Line}]}). diff --git a/test/gen_term.erl b/test/gen_term.erl index 08d9f35..d4244f1 100644 --- a/test/gen_term.erl +++ b/test/gen_term.erl @@ -24,11 +24,9 @@ gen_function/1 ]). - any() -> any(16). - any(MaxSize) when MaxSize =< 0 -> Fun = choice(value_types()), ?MODULE:Fun(MaxSize); @@ -36,80 +34,65 @@ any(MaxSize) -> Fun = choice(all_types()), ?MODULE:Fun(MaxSize). - gen_atom(MaxSize) -> list_to_atom(gen_short_string(MaxSize)). - gen_integer(_) -> - Value = case rand:uniform() < 0.5 of - true -> rand:uniform(127); - false -> rand:uniform(16#FFFFFFFF) - end, + Value = + case rand:uniform() < 0.5 of + true -> rand:uniform(127); + false -> rand:uniform(16#FFFFFFFF) + end, case rand:uniform() < 0.5 of true -> -1 * Value; false -> Value end. - gen_float(_) -> rand:uniform() * float(16#FFFFFFFF). - gen_reference(_) -> erlang:make_ref(). - gen_port(_) -> Ports = erlang:ports(), lists:nth(rand:uniform(length(Ports)), Ports). - gen_pid(_) -> Pids = erlang:processes(), lists:nth(rand:uniform(length(Pids)), Pids). - gen_tuple(MaxSize) -> list_to_tuple(gen_list(MaxSize)). - gen_list(MaxSize) -> Width = rand:uniform(MaxSize), - [any(MaxSize-Width) || _ <- lists:seq(1, Width)]. - + [any(MaxSize - Width) || _ <- lists:seq(1, Width)]. gen_short_string(_) -> Size = rand:uniform(255), [rand:uniform(127) || _ <- lists:seq(1, Size)]. - gen_string(_) -> Size = rand:uniform(4096), [rand:uniform(127) || _ <- lists:seq(1, Size)]. - gen_binary(MaxSize) -> list_to_binary(gen_string(MaxSize)). - gen_bitstring(MaxSize) -> B = gen_binary(MaxSize), <<2:4/integer, B/binary>>. - gen_bignum(_) -> 16#FFFFFFFFFFFFFFFF + rand:uniform(16#FFFFFFFF). - gen_function(_) -> choice(all_types()). - choice(Options) -> lists:nth(rand:uniform(length(Options)), Options). - value_types() -> [ gen_atom, @@ -126,6 +109,5 @@ value_types() -> gen_function ]. - all_types() -> value_types() ++ [gen_tuple, gen_list]. diff --git a/test/khash_tests.erl b/test/khash_tests.erl index 982df8c..8461b3d 100644 --- a/test/khash_tests.erl +++ b/test/khash_tests.erl @@ -22,7 +22,8 @@ load_test_() -> basic_test_() -> { "khash basic operations", - {setup, + { + setup, local, fun() -> khash:new() end, fun({ok, _}) -> ok end, @@ -84,7 +85,8 @@ basic_test_() -> randomized_test_() -> { "khash randomized test", - {setup, + { + setup, local, fun() -> Dict = dict:new(), @@ -113,7 +115,8 @@ randomized_test_() -> basic_iterators_test_() -> { "khash itrators basics operations", - {setup, + { + setup, local, fun() -> {ok, H} = khash:new(), @@ -123,9 +126,9 @@ basic_iterators_test_() -> end, fun({ok, H, I}) -> [ - { + { "Got only kv pair as first element", - ?_assertEqual(khash:iter_next(I), {foo,bar}) + ?_assertEqual(khash:iter_next(I), {foo, bar}) }, { "Only the one kv pair exists", @@ -134,8 +137,8 @@ basic_iterators_test_() -> { "Fold works", ?_test(begin - Fold = fun(K, V, Acc) -> [{K,V} | Acc] end, - ?assertEqual(khash:fold(H, Fold, []), [{foo,bar}]) + Fold = fun(K, V, Acc) -> [{K, V} | Acc] end, + ?assertEqual(khash:fold(H, Fold, []), [{foo, bar}]) end) } ] @@ -146,12 +149,13 @@ basic_iterators_test_() -> multiread_iterators_test_() -> { "khash iterators multi-read test", - {setup, + { + setup, local, fun() -> {ok, H} = khash:new(), KVs = kv_data(10), - lists:foreach(fun({K,V}) -> khash:put(H, K, V) end, KVs), + lists:foreach(fun({K, V}) -> khash:put(H, K, V) end, KVs), {ok, I} = khash:iter(H), {ok, I, KVs} end, @@ -167,7 +171,8 @@ multiread_iterators_test_() -> expiration_iterators_test_() -> { "khash iterators exipiration functions", - {foreach, + { + foreach, local, fun() -> Err = {error, expired_iterator}, @@ -205,7 +210,8 @@ expiration_iterators_test_() -> no_expiration_iterators_test_() -> { "khash iterators no exipiration functions", - {foreach, + { + foreach, local, fun() -> Err = {error, expired_iterator}, @@ -223,7 +229,7 @@ no_expiration_iterators_test_() -> } end, fun({ok, H, I, Err}) -> - {value, bar} = khash:lookup(H,foo), + {value, bar} = khash:lookup(H, foo), { "lookup doesn't expire iterators", ?_assertNot(khash:iter_next(I) == Err) @@ -282,7 +288,7 @@ khash_store(KHash, NumCycles) -> khash_iterate(I, Acc) -> case khash:iter_next(I) of {K, V} -> - khash_iterate(I, [{K, V}|Acc]); + khash_iterate(I, [{K, V} | Acc]); end_of_table -> lists:sort(Acc) end. @@ -340,14 +346,15 @@ run_put({D0, H}) -> run_del({D0, H}) -> K = random_key(D0), - D1 = case dict:is_key(K, D0) of - true -> - ?assertMatch(ok, khash:del(H, K)), - dict:erase(K, D0); - false -> - ?assertMatch(not_found, khash:del(H, K)), - D0 - end, + D1 = + case dict:is_key(K, D0) of + true -> + ?assertMatch(ok, khash:del(H, K)), + dict:erase(K, D0); + false -> + ?assertMatch(not_found, khash:del(H, K)), + D0 + end, {D1, H}. run_size({D, H}) -> @@ -376,7 +383,7 @@ weighted_choice(Items0) -> weighted_choice([], _, _) -> throw(bad_choice); weighted_choice([{W, _} | Rest], S, C) when W + S < C -> - weighted_choice(Rest, W+S, C); + weighted_choice(Rest, W + S, C); weighted_choice([{_, I} | _], _, _) -> I.
