+-module(hope_kv_list_SUITE).
+
+%% Callbacks
+-export(
+ [ all/0
+ , groups/0
+ ]).
+
+%% Test cases
+-export(
+ [ t_validate_unique_presence/1
+ ]).
+
+
+-define(GROUP , hope_kv_list).
+
+
+%% ============================================================================
+%% Common Test callbacks
+%% ============================================================================
+
+all() ->
+ [{group, ?GROUP}].
+
+groups() ->
+ Tests =
+ [ t_validate_unique_presence
+ ],
+ Properties = [],
+ [{?GROUP, Properties, Tests}].
+
+
+%% =============================================================================
+%% Test cases
+%% =============================================================================
+
+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).