aboutsummaryrefslogtreecommitdiff
path: root/learn-you-some-erlang/m8ball/test/m8ball_server_SUITE.erl
diff options
context:
space:
mode:
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.erl45
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