Test on newer releases
[hope.git] / test / hope_kv_list_SUITE.erl
index 4fcde44..b986039 100644 (file)
@@ -1,23 +1,20 @@
 -module(hope_kv_list_SUITE).
 
+-include_lib("hope_kv_list.hrl").
+
 %% Callbacks
 -export(
     [ all/0
     , groups/0
-    , init_per_group/2
-    , end_per_group/2
     ]).
 
 %% Test cases
 -export(
-    [ t_set_new/1
-    , t_set_existing/1
-    , t_pop/1
+    [ t_validate_unique_presence/1
     ]).
 
 
--define(DICT_MODULE         , dict_module).
--define(DICT_MODULE_KV_LIST , hope_kv_list).
+-define(GROUP , hope_kv_list).
 
 
 %% ============================================================================
 %% ============================================================================
 
 all() ->
-    [{group, ?DICT_MODULE_KV_LIST}].
+    [{group, ?GROUP}].
 
 groups() ->
     Tests =
-        [ t_set_new
-        , t_set_existing
-        , t_pop
+        [ t_validate_unique_presence
         ],
     Properties = [],
-    [{?DICT_MODULE_KV_LIST, Properties, Tests}].
-
-init_per_group(DictModule, Cfg) ->
-    hope_kv_list:set(Cfg, ?DICT_MODULE, DictModule).
-
-end_per_group(_DictModule, _Cfg) ->
-    ok.
+    [{?GROUP, Properties, Tests}].
 
 
 %% =============================================================================
 %%  Test cases
 %% =============================================================================
 
-t_set_new(Cfg) ->
-    {some, DictModule} = hope_kv_list:get(Cfg, ?DICT_MODULE),
-    Key           = key,
-    ValExpected   = bar,
-    ListInitial   = DictModule:empty(),
-    ListResulting = DictModule:set(ListInitial, Key, ValExpected),
-    {some, ValResulting} = DictModule:get(ListResulting, Key),
-    ValResulting = ValExpected.
-
-t_set_existing(Cfg) ->
-    {some, DictModule} = hope_kv_list:get(Cfg, ?DICT_MODULE),
-    Key           = key,
-    ValInitial    = foo,
-    ValExpected   = bar,
-    ListInitial   = [{donald, duck}, {Key, ValInitial}],
-    ListResulting = DictModule:set(ListInitial, Key, ValExpected),
-    {some, ValResulting} = DictModule:get(ListResulting, Key),
-    ValResulting = ValExpected.
-
-t_pop(Cfg) ->
-    {some, DictModule} = hope_kv_list:get(Cfg, ?DICT_MODULE),
-    KVList = [{a, 1}, {b, 2}, {c, 3}],
-    Dict1 = DictModule:of_kv_list(KVList),
-    {{some, 1} , Dict2} = DictModule:pop(Dict1, a),
-    {none      , Dict3} = DictModule:pop(Dict2, a),
-    {{some, 2} , Dict4} = DictModule:pop(Dict3, b),
-    {none      , Dict5} = DictModule:pop(Dict4, b),
-    {{some, 3} , Dict6} = DictModule:pop(Dict5, c),
-    {none      , Dict7} = DictModule:pop(Dict6, c),
-    [] = DictModule:to_kv_list(Dict7).
+t_validate_unique_presence(_Cfg) ->
+    KeysRequired = [a, b, c],
+    DictOk      = [{a, 1}, {b, 2}, {c, 3}],
+    DictUnsup   = [{a, 1}, {b, 2}, {c, 3}, {d, 4}],
+    DictDups    = [{a, 1}, {b, 2}, {c, 3}, {a, 4}],
+    DictMissing = [{a, 1}, {b, 2}],
+
+    {ok, DictOk} =
+        hope_kv_list:validate_unique_presence(DictOk, KeysRequired),
+    #hope_kv_list_presence_violations
+    { keys_missing     = []
+    , keys_duplicated  = []
+    , keys_unsupported = []
+    } =
+        hope_kv_list:find_unique_presence_violations(DictOk, KeysRequired),
+
+    {error, [{keys_unsupported, [d]}]} =
+        hope_kv_list:validate_unique_presence(DictUnsup, KeysRequired),
+    #hope_kv_list_presence_violations
+    { keys_missing     = []
+    , keys_duplicated  = []
+    , keys_unsupported = [d]
+    } =
+        hope_kv_list:find_unique_presence_violations(DictUnsup, KeysRequired),
+
+    {error, [{keys_duplicated, [a]}]} =
+        hope_kv_list:validate_unique_presence(DictDups, KeysRequired),
+    #hope_kv_list_presence_violations
+    { keys_missing     = []
+    , keys_duplicated  = [a]
+    , keys_unsupported = []
+    } =
+        hope_kv_list:find_unique_presence_violations(DictDups, KeysRequired),
+
+    {error, [{keys_missing, [c]}]} =
+        hope_kv_list:validate_unique_presence(DictMissing, KeysRequired),
+    #hope_kv_list_presence_violations
+    { keys_missing     = [c]
+    , keys_duplicated  = []
+    , keys_unsupported = []
+    } =
+        hope_kv_list:find_unique_presence_violations(DictMissing, KeysRequired).
This page took 0.03291 seconds and 4 git commands to generate.