Add has_key/2 dictionary method. 3.6.0
authorSiraaj Khandkar <siraaj@khandkar.net>
Wed, 1 Jul 2015 18:37:54 +0000 (14:37 -0400)
committerSiraaj Khandkar <siraaj@khandkar.net>
Wed, 1 Jul 2015 18:37:54 +0000 (14:37 -0400)
src/hope.app.src
src/hope_gen_dictionary.erl
src/hope_kv_list.erl
test/hope_dictionary_SUITE.erl

index 98c9de0..d2b376c 100644 (file)
@@ -1,7 +1,7 @@
 {application, hope,
  [
   {description, "Higher Order Programming in Erlang"},
-  {vsn, "3.5.0"},
+  {vsn, "3.6.0"},
   {registered, []},
   {applications, [
                   kernel,
index 1fab838..ea0f551 100644 (file)
@@ -48,3 +48,6 @@
 
 -callback to_kv_list(t(K, V)) ->
     [{K, V}].
+
+-callback has_key(t(K, _), K) ->
+    boolean().
index cb1c4a4..c12f3b4 100644 (file)
@@ -25,6 +25,7 @@
     , fold/3
     , of_kv_list/1
     , to_kv_list/1
+    , has_key/2
     , find_unique_presence_violations/2  % No optional keys
     , find_unique_presence_violations/3  % Specify optional keys
     , validate_unique_presence/2  % No optional keys
@@ -206,6 +207,10 @@ presence_violations_to_list(#hope_kv_list_presence_violations
         end,
     ErrorDups ++ ErrorMissing ++ ErrorUnsupported.
 
+-spec has_key(t(K, _), K) ->
+    boolean().
+has_key(T, K1) ->
+    lists:any(fun ({K2, _}) -> K1 =:= K2 end, T).
 
 %% ============================================================================
 %% Helpers
index 04e40d3..cf0bfba 100644 (file)
@@ -16,6 +16,7 @@
     , t_pop/1
     , t_fold/1
     , t_dictionary_specs/1
+    , t_has_key/1
     ]).
 
 
@@ -38,6 +39,7 @@ groups() ->
         , t_pop
         , t_fold
         , t_dictionary_specs
+        , t_has_key
         ],
     Properties = [parallel],
     [{?DICT_MODULE_KV_LIST, Properties, Tests}].
@@ -107,3 +109,13 @@ t_fold(Cfg) ->
 t_dictionary_specs(Cfg) ->
     {some, DictModule} = hope_kv_list:get(Cfg, ?DICT_MODULE),
     [] = proper:check_specs(DictModule).
+
+t_has_key(Cfg) ->
+    {some, DictModule} = hope_kv_list:get(Cfg, ?DICT_MODULE),
+    D = DictModule:of_kv_list([{a, 1}, {b, 2}, {c, 3}]),
+    true  = DictModule:has_key(D, a),
+    true  = DictModule:has_key(D, b),
+    true  = DictModule:has_key(D, c),
+    false = DictModule:has_key(D, d),
+    false = DictModule:has_key(D, e),
+    false = DictModule:has_key(D, f).
This page took 0.029097 seconds and 4 git commands to generate.