%% Test cases
-export(
- [ t_set_new/1
- , t_set_existing/1
+ [ t_validate_unique_presence/1
]).
--define(GROUP_KV_LIST, kv_list).
+-define(GROUP , hope_kv_list).
%% ============================================================================
%% Common Test callbacks
%% ============================================================================
-%% TODO: Make tests generic for any dictionary.
-%% TODO: Each group should test a type of dictionary against the generic cases.
-
all() ->
- [{group, ?GROUP_KV_LIST}].
+ [{group, ?GROUP}].
groups() ->
Tests =
- [ t_set_new
- , t_set_existing
+ [ t_validate_unique_presence
],
Properties = [],
- [{?GROUP_KV_LIST, Properties, Tests}].
+ [{?GROUP, Properties, Tests}].
%% =============================================================================
%% Test cases
%% =============================================================================
-t_set_new(_Config) ->
- Key = key,
- ValExpected = bar,
- ListInitial = hope_kv_list:empty(),
- ListResulting = hope_kv_list:set(ListInitial, Key, ValExpected),
- {some, ValResulting} = hope_kv_list:get(ListResulting, Key),
- ValResulting = ValExpected.
-
-t_set_existing(_Config) ->
- Key = key,
- ValInitial = foo,
- ValExpected = bar,
- ListInitial = [{donald, duck}, {Key, ValInitial}],
- ListResulting = hope_kv_list:set(ListInitial, Key, ValExpected),
- {some, ValResulting} = hope_kv_list:get(ListResulting, Key),
- ValResulting = ValExpected.
+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, ok} =
+ hope_kv_list:validate_unique_presence(DictOk, KeysRequired),
+ {error, [{keys_unsupported, [d]}]} =
+ hope_kv_list:validate_unique_presence(DictUnsup, KeysRequired),
+ {error, [{keys_duplicated, [a]}]} =
+ hope_kv_list:validate_unique_presence(DictDups, KeysRequired),
+ {error, [{keys_missing, [c]}]} =
+ hope_kv_list:validate_unique_presence(DictMissing, KeysRequired).