Upgrade proper to commit which fixes handling of user-defined types
[hope.git] / test / hope_dictionary_SUITE.erl
index a0848a3..cf0bfba 100644 (file)
 -export(
     [ t_set_new/1
     , t_set_existing/1
+    , t_get/1
     , t_pop/1
+    , t_fold/1
+    , t_dictionary_specs/1
+    , t_has_key/1
     ]).
 
 
@@ -31,9 +35,13 @@ groups() ->
     Tests =
         [ t_set_new
         , t_set_existing
+        , t_get
         , t_pop
+        , t_fold
+        , t_dictionary_specs
+        , t_has_key
         ],
-    Properties = [],
+    Properties = [parallel],
     [{?DICT_MODULE_KV_LIST, Properties, Tests}].
 
 init_per_group(DictModule, Cfg) ->
@@ -47,6 +55,20 @@ end_per_group(_DictModule, _Cfg) ->
 %%  Test cases
 %% =============================================================================
 
+t_get(Cfg) ->
+    {some, DictModule} = hope_kv_list:get(Cfg, ?DICT_MODULE),
+    K1 = k1,
+    K2 = k2,
+    V1 = v1,
+    V2 = v2,
+    D = DictModule:set(DictModule:empty(), K1, V1),
+    {some, V1} = DictModule:get(D, K1),
+    V1         = DictModule:get(D, K1, V2),
+    none       = DictModule:get(D, K2),
+    V2         = DictModule:get(D, K2, V2),
+    default    = DictModule:get(D, K1, default, fun (X) -> X =:= foo end),
+    V1         = DictModule:get(D, K1, default, fun (X) -> X =:= V1 end).
+
 t_set_new(Cfg) ->
     {some, DictModule} = hope_kv_list:get(Cfg, ?DICT_MODULE),
     Key           = key,
@@ -77,3 +99,23 @@ t_pop(Cfg) ->
     {{some, 3} , Dict6} = DictModule:pop(Dict5, c),
     {none      , Dict7} = DictModule:pop(Dict6, c),
     [] = DictModule:to_kv_list(Dict7).
+
+t_fold(Cfg) ->
+    {some, DictModule} = hope_kv_list:get(Cfg, ?DICT_MODULE),
+    KVList = [{a, 1}, {a, 5}, {b, 3}, {c, 4}, {c, 4}],
+    Dict = DictModule:of_kv_list(KVList),
+    17 = DictModule:fold(Dict, fun (_K, V, Acc) -> V + Acc end, 0).
+
+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.031174 seconds and 4 git commands to generate.