aboutsummaryrefslogtreecommitdiff
path: root/learn-you-some-erlang/mafiapp-1.0.1/test
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2024-02-23 07:08:18 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2024-02-23 07:08:18 +0100
commit5a9cdd3cc89507d4d74f8bded56ce5e037b3b56e (patch)
tree982ca2e7f9ac4e8c350dfb5c4f60bcfdfff5afaf /learn-you-some-erlang/mafiapp-1.0.1/test
parent05ae56e5e89abf2993f84e6d52b250131f247c35 (diff)
downloaderlang-workshop-5a9cdd3cc89507d4d74f8bded56ce5e037b3b56e.tar.gz
erlang-workshop-5a9cdd3cc89507d4d74f8bded56ce5e037b3b56e.tar.bz2
erlang-workshop-5a9cdd3cc89507d4d74f8bded56ce5e037b3b56e.tar.xz
erlang-workshop-5a9cdd3cc89507d4d74f8bded56ce5e037b3b56e.zip
wip
Diffstat (limited to 'learn-you-some-erlang/mafiapp-1.0.1/test')
-rw-r--r--learn-you-some-erlang/mafiapp-1.0.1/test/mafiapp.spec3
-rw-r--r--learn-you-some-erlang/mafiapp-1.0.1/test/mafiapp_SUITE.erl128
2 files changed, 131 insertions, 0 deletions
diff --git a/learn-you-some-erlang/mafiapp-1.0.1/test/mafiapp.spec b/learn-you-some-erlang/mafiapp-1.0.1/test/mafiapp.spec
new file mode 100644
index 0000000..4953e67
--- /dev/null
+++ b/learn-you-some-erlang/mafiapp-1.0.1/test/mafiapp.spec
@@ -0,0 +1,3 @@
+{alias, root, "./test/"}.
+{logdir, "./logs/"}.
+{suites, root, all}.
diff --git a/learn-you-some-erlang/mafiapp-1.0.1/test/mafiapp_SUITE.erl b/learn-you-some-erlang/mafiapp-1.0.1/test/mafiapp_SUITE.erl
new file mode 100644
index 0000000..6005d29
--- /dev/null
+++ b/learn-you-some-erlang/mafiapp-1.0.1/test/mafiapp_SUITE.erl
@@ -0,0 +1,128 @@
+-module(mafiapp_SUITE).
+-include_lib("common_test/include/ct.hrl").
+-export([init_per_suite/1, end_per_suite/1,
+ init_per_testcase/2, end_per_testcase/2,
+ all/0]).
+-export([add_service/1, friend_by_name/1, friend_by_expertise/1,
+ friend_with_services/1, accounts/1, enemies/1]).
+
+all() -> [add_service, friend_by_name, friend_by_expertise,
+ friend_with_services, accounts, enemies].
+
+init_per_suite(Config) ->
+ Priv = ?config(priv_dir, Config),
+ application:load(mnesia),
+ application:set_env(mnesia, dir, Priv),
+ application:load(mafiapp),
+ mafiapp:install([node()]),
+ application:start(mnesia),
+ application:start(mafiapp),
+ Config.
+
+end_per_suite(_Config) ->
+ application:stop(mnesia),
+ ok.
+
+init_per_testcase(add_service, Config) ->
+ Config;
+init_per_testcase(accounts, Config) ->
+ ok = mafiapp:add_friend("Consigliere", [], [you], consigliere),
+ Config;
+init_per_testcase(_, Config) ->
+ ok = mafiapp:add_friend("Don Corleone", [], [boss], boss),
+ Config.
+
+end_per_testcase(_, _Config) ->
+ ok.
+
+%% services can go both way: from a friend to the boss, or
+%% from the boss to a friend! A boss friend is required!
+add_service(_Config) ->
+ {error, unknown_friend} = mafiapp:add_service("from name",
+ "to name",
+ {1946,5,23},
+ "a fake service"),
+ ok = mafiapp:add_friend("Don Corleone", [], [boss], boss),
+ ok = mafiapp:add_friend("Alan Parsons",
+ [{twitter,"@ArtScienceSound"}],
+ [{born, {1948,12,20}},
+ musician, 'audio engineer',
+ producer, "has projects"],
+ mixing),
+ ok = mafiapp:add_service("Alan Parsons", "Don Corleone",
+ {1973,3,1},
+ "Helped release a Pink Floyd album").
+
+friend_by_name(_Config) ->
+ ok = mafiapp:add_friend("Pete Cityshend",
+ [{phone, "418-542-3000"},
+ {email, "quadrophonia@example.org"},
+ {other, "yell real loud"}],
+ [{born, {1945,5,19}},
+ musician, popular],
+ music),
+ {"Pete Cityshend",
+ _Contact, _Info, music,
+ _Services} = mafiapp:friend_by_name("Pete Cityshend"),
+ undefined = mafiapp:friend_by_name(make_ref()).
+
+friend_by_expertise(_Config) ->
+ ok = mafiapp:add_friend("A Red Panda",
+ [{location, "in a zoo"}],
+ [animal,cute],
+ climbing),
+ [{"A Red Panda",
+ _Contact, _Info, climbing,
+ _Services}] = mafiapp:friend_by_expertise(climbing),
+ [] = mafiapp:friend_by_expertise(make_ref()).
+
+friend_with_services(_Config) ->
+ ok = mafiapp:add_friend("Someone", [{other, "at the fruit stand"}],
+ [weird, mysterious], shadiness),
+ ok = mafiapp:add_service("Don Corleone", "Someone",
+ {1949,2,14}, "Increased business"),
+ ok = mafiapp:add_service("Someone", "Don Corleone",
+ {1949,12,25}, "Gave a Christmas gift"),
+ %% We don't care about the order. The test was made to fit
+ %% whatever the functions returned.
+ {"Someone",
+ _Contact, _Info, shadiness,
+ [{to, "Don Corleone", {1949,12,25}, "Gave a Christmas gift"},
+ {from, "Don Corleone", {1949,2,14}, "Increased business"}]} =
+ mafiapp:friend_by_name("Someone").
+
+%% It should be possible to find all people who owe us things.
+accounts(_Config) ->
+ ok = mafiapp:add_friend("Gill Bates", [{email, "ceo@macrohard.com"}],
+ [clever,rich], computers),
+ ok = mafiapp:add_service("Consigliere", "Gill Bates",
+ {1985,11,20}, "Bought 15 copies of software"),
+ ok = mafiapp:add_service("Gill Bates", "Consigliere",
+ {1986,8,17}, "Made computer faster"),
+ ok = mafiapp:add_friend("Pierre Gauthier", [{other, "city arena"}],
+ [{job, "sports team GM"}], sports),
+ ok = mafiapp:add_service("Pierre Gauthier", "Consigliere", {2009,6,30},
+ "Took on a huge, bad contract"),
+ ok = mafiapp:add_friend("Wayne Gretzky", [{other, "Canada"}],
+ [{born, {1961,1,26}}, "hockey legend"],
+ hockey),
+ ok = mafiapp:add_service("Consigliere", "Wayne Gretzky", {1964,1,26},
+ "Gave first pair of ice skates"),
+ %% Wayne Gretzky owes us something so the debt is negative
+ %% Gill Bates are equal
+ %% Gauthier is owed a service.
+ [{-1,"Wayne Gretzky"},
+ {0,"Gill Bates"},
+ {1,"Pierre Gauthier"}] = mafiapp:debts("Consigliere"),
+ [{1, "Consigliere"}] = mafiapp:debts("Wayne Gretzky").
+
+enemies(_Config) ->
+ undefined = mafiapp:find_enemy("Edward"),
+ ok = mafiapp:add_enemy("Edward", [{bio, "Vampire"},
+ {comment, "He sucks (blood)"}]),
+ {"Edward", [{bio, "Vampire"},
+ {comment, "He sucks (blood)"}]} =
+ mafiapp:find_enemy("Edward"),
+ ok = mafiapp:enemy_killed("Edward"),
+ undefined = mafiapp:find_enemy("Edward").
+