033832f4a4332dcad878afe74943db98f26b5959
[nit.git] / contrib / nitrpg / src / test_achievements.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Copyright 2014-2015 Alexandre Terrasa <alexandre@moz-code.org>
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 # Test module for `achievements.nit`
18 module test_achievements is test_suite
19
20 import test_helper
21 import achievements
22
23 class TestGame
24 super NitrpgTestHelper
25
26 fun test_add_achievement do
27 var db = gen_test_db
28 var game = load_game("Morriar/nit", db)
29 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
30 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
31 game.add_achievement(a1)
32 game.add_achievement(a2)
33 assert game.load_achievements.length == 2
34 end
35
36 fun test_load_achievement do
37 var db = gen_test_db
38 var game = load_game("Morriar/nit", db)
39 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
40 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
41 game.add_achievement(a1)
42 assert game.load_achievement(a1.id).id == "test_id1"
43 assert game.load_achievement(a2.id) == null
44 end
45
46 fun test_load_achievements do
47 var db = gen_test_db
48 var game = load_game("Morriar/nit", db)
49 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
50 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
51 var a3 = new Achievement(game, "test_id3", "test_name", "test_desc", 15)
52 game.add_achievement(a1)
53 game.add_achievement(a2)
54 game.db.collection("achievements").insert(a3.to_json)
55 var ok = [a1.id, a2.id]
56 var res = game.load_achievements
57 assert res.length == 2
58 for a in res.values do assert ok.has(a.id)
59 end
60 end
61
62 class TestPlayer
63 super NitrpgTestHelper
64
65 fun test_add_achievement do
66 var db = gen_test_db
67 var game = load_game("Morriar/nit", db)
68 var player1 = new Player(game, "Morriar")
69 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
70 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
71 player1.add_achievement(a1)
72 player1.add_achievement(a2)
73 assert player1.load_achievements.length == 2
74 end
75
76 fun test_load_achievement do
77 var db = gen_test_db
78 var game = load_game("Morriar/nit", db)
79 var player1 = new Player(game, "Morriar")
80 var player2 = new Player(game, "xymus")
81 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
82 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
83 player1.add_achievement(a1)
84 player2.add_achievement(a2)
85 assert player1.load_achievement(a1.id).id == "test_id1"
86 assert player1.load_achievement(a2.id) == null
87 assert player2.load_achievement(a2.id).id == "test_id2"
88 assert player2.load_achievement(a1.id) == null
89 end
90
91 fun test_load_achievements do
92 var db = gen_test_db
93 var game = load_game("Morriar/nit", db)
94 var player1 = new Player(game, "Morriar")
95 var player2 = new Player(game, "xymus")
96 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
97 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
98 var a3 = new Achievement(game, "test_id3", "test_name", "test_desc", 15)
99 player1.add_achievement(a1)
100 player1.add_achievement(a2)
101 player2.add_achievement(a3)
102 var ok = [a1.id, a2.id]
103 var res = player1.load_achievements
104 assert res.length == 2
105 for a in res.values do assert ok.has(a.id)
106 end
107 end
108
109 class TestAchievement
110 super NitrpgTestHelper
111
112 fun test_init do
113 var db = gen_test_db
114 var game = load_game("Morriar/nit", db)
115 var a = new Achievement(game, "test_id", "test_name", "test_desc", 15)
116 assert a.id == "test_id"
117 assert a.name == "test_name"
118 assert a.desc == "test_desc"
119 assert a.reward == 15
120 end
121
122 fun test_init_from_json do
123 var db = gen_test_db
124 var game = load_game("Morriar/nit", db)
125 var json = """{
126 "id": "test_id",
127 "name": "test_name",
128 "desc": "test_desc",
129 "reward": 15
130 }""".parse_json.as(JsonObject)
131 var a = new Achievement.from_json(game, json)
132 assert a.id == "test_id"
133 assert a.name == "test_name"
134 assert a.desc == "test_desc"
135 assert a.reward == 15
136 end
137 end