X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=test%2Fhope_dictionary_SUITE.erl;fp=test%2Fhope_dictionary_SUITE.erl;h=a0848a3572de09a46906ecba01dd549a1224c41b;hb=f399d3fce79551fd92f12ab6a0c9c82342fefcfa;hp=0000000000000000000000000000000000000000;hpb=5e835f3eb36c027fa126352271931d9eb39b9b84;p=hope.git diff --git a/test/hope_dictionary_SUITE.erl b/test/hope_dictionary_SUITE.erl new file mode 100644 index 0000000..a0848a3 --- /dev/null +++ b/test/hope_dictionary_SUITE.erl @@ -0,0 +1,79 @@ +-module(hope_dictionary_SUITE). + +%% 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 + ]). + + +-define(DICT_MODULE , dict_module). +-define(DICT_MODULE_KV_LIST , hope_kv_list). + + +%% ============================================================================ +%% Common Test callbacks +%% ============================================================================ + +all() -> + [{group, ?DICT_MODULE_KV_LIST}]. + +groups() -> + Tests = + [ t_set_new + , t_set_existing + , t_pop + ], + 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. + + +%% ============================================================================= +%% 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).