Merge: nitrpg: data management uses `mongodb` instead of `json_store`
[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 = load_db("test_add_achievement")
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 db.drop
35 end
36
37 fun test_load_achievement do
38 var db = load_db("test_load_achievement")
39 var game = load_game("Morriar/nit", db)
40 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
41 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
42 game.add_achievement(a1)
43 assert game.load_achievement(a1.id).id == "test_id1"
44 assert game.load_achievement(a2.id) == null
45 db.drop
46 end
47
48 fun test_load_achievements do
49 var db = load_db("test_load_achievements")
50 var game = load_game("Morriar/nit", db)
51 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
52 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
53 var a3 = new Achievement(game, "test_id3", "test_name", "test_desc", 15)
54 game.add_achievement(a1)
55 game.add_achievement(a2)
56 game.db.collection("achievements").insert(a3.to_json)
57 var ok = [a1.id, a2.id]
58 var res = game.load_achievements
59 assert res.length == 2
60 for a in res.values do assert ok.has(a.id)
61 db.drop
62 end
63 end
64
65 class TestPlayer
66 super NitrpgTestHelper
67
68 fun test_add_achievement do
69 var db = load_db("test_add_achievement")
70 var game = load_game("Morriar/nit", db)
71 var player1 = new Player(game, "Morriar")
72 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
73 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
74 player1.add_achievement(a1)
75 player1.add_achievement(a2)
76 assert player1.load_achievements.length == 2
77 db.drop
78 end
79
80 fun test_load_achievement do
81 var db = load_db("test_load_achievement")
82 var game = load_game("Morriar/nit", db)
83 var player1 = new Player(game, "Morriar")
84 var player2 = new Player(game, "xymus")
85 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
86 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
87 player1.add_achievement(a1)
88 player2.add_achievement(a2)
89 assert player1.load_achievement(a1.id).id == "test_id1"
90 assert player1.load_achievement(a2.id) == null
91 assert player2.load_achievement(a2.id).id == "test_id2"
92 assert player2.load_achievement(a1.id) == null
93 db.drop
94 end
95
96 fun test_load_achievements do
97 var db = load_db("test_load_achievements")
98 var game = load_game("Morriar/nit", db)
99 var player1 = new Player(game, "Morriar")
100 var player2 = new Player(game, "xymus")
101 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
102 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
103 var a3 = new Achievement(game, "test_id3", "test_name", "test_desc", 15)
104 player1.add_achievement(a1)
105 player1.add_achievement(a2)
106 player2.add_achievement(a3)
107 var ok = [a1.id, a2.id]
108 var res = player1.load_achievements
109 assert res.length == 2
110 for a in res.values do assert ok.has(a.id)
111 db.drop
112 end
113 end
114
115 class TestAchievement
116 super NitrpgTestHelper
117
118 fun test_init do
119 var db = load_db("test_init")
120 var game = load_game("Morriar/nit", db)
121 var a = new Achievement(game, "test_id", "test_name", "test_desc", 15)
122 assert a.id == "test_id"
123 assert a.name == "test_name"
124 assert a.desc == "test_desc"
125 assert a.reward == 15
126 db.drop
127 end
128
129 fun test_init_from_json do
130 var db = load_db("test_init_from_json")
131 var game = load_game("Morriar/nit", db)
132 var json = """{
133 "id": "test_id",
134 "name": "test_name",
135 "desc": "test_desc",
136 "reward": 15
137 }""".parse_json.as(JsonObject)
138 var a = new Achievement.from_json(game, json)
139 assert a.id == "test_id"
140 assert a.name == "test_name"
141 assert a.desc == "test_desc"
142 assert a.reward == 15
143 db.drop
144 end
145 end