diff options
Diffstat (limited to 'learn-you-some-erlang/m8ball/test/m8ball_server_SUITE.erl')
-rw-r--r-- | learn-you-some-erlang/m8ball/test/m8ball_server_SUITE.erl | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/learn-you-some-erlang/m8ball/test/m8ball_server_SUITE.erl b/learn-you-some-erlang/m8ball/test/m8ball_server_SUITE.erl new file mode 100644 index 0000000..6bc4156 --- /dev/null +++ b/learn-you-some-erlang/m8ball/test/m8ball_server_SUITE.erl @@ -0,0 +1,45 @@ +-module(m8ball_server_SUITE). +-include_lib("common_test/include/ct.hrl"). +-export([all/0, init_per_testcase/2, end_per_testcase/2]). +-export([random_answer/1, binary_answer/1, determined_answers/1, + reload_answers/1]). + +all() -> [random_answer, binary_answer, determined_answers, + reload_answers]. + +init_per_testcase(_Test, Config) -> + Answers = [<<"Outlook not so good">>, + <<"I don't think so">>, + <<"Yes, definitely">>, + <<"STOP SHAKING ME">>], + application:set_env(m8ball, answers, list_to_tuple(Answers)), + m8ball_server:start_link(), + [{answers, Answers} | Config]. + +end_per_testcase(_Test, _Config) -> + m8ball_server:stop(). + +%% The answer should come from the config +random_answer(_Config) -> + Answers1 = [m8ball_server:ask("Dummy question") || _ <- lists:seq(1,15)], + Answers2 = [m8ball_server:ask("Dummy question") || _ <- lists:seq(1,15)], + true = 1 < length(sets:to_list(sets:from_list(Answers1))), + true = Answers1 =/= Answers2. + +binary_answer(_Config) -> + Answers = [m8ball_server:ask("Dummy question") || _ <- lists:seq(1,15)], + L = length(Answers), + L = length(lists:filter(fun erlang:is_binary/1, Answers)). + +determined_answers(Config) -> + Answers = ?config(answers, Config), + Res = [m8ball_server:ask("Dummy question") || _ <- lists:seq(1,15)], + true = lists:all(fun(X) -> lists:member(X, Answers) end, Res). + +reload_answers(_Config) -> + Ref = make_ref(), + application:set_env(m8ball, answers, {Ref}), + [Ref,Ref,Ref] = [m8ball_server:ask("Question") || _ <- lists:seq(1,3)]. + + +%% NOTE: do distributed testing in m8ball_SUITE or something |