Merge: concurrent_collections: Add implementation of has method
[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
19
20 import test_helper
21 import achievements
22
23 class TestGame
24 super NitrpgTestHelper
25 test
26
27 fun test_add_achievement is test do
28 var db = gen_test_db
29 var game = load_game("Morriar/nit", db)
30 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
31 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
32 game.add_achievement(a1)
33 game.add_achievement(a2)
34 assert game.load_achievements.length == 2
35 end
36
37 fun test_load_achievement is test do
38 var db = gen_test_db
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 end
46
47 fun test_load_achievements is test do
48 var db = gen_test_db
49 var game = load_game("Morriar/nit", db)
50 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
51 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
52 var a3 = new Achievement(game, "test_id3", "test_name", "test_desc", 15)
53 game.add_achievement(a1)
54 game.add_achievement(a2)
55 game.db.collection("achievements").insert(a3.to_json_object)
56 var ok = [a1.id, a2.id]
57 var res = game.load_achievements
58 assert res.length == 2
59 for a in res.values do assert ok.has(a.id)
60 end
61 end
62
63 class TestPlayer
64 super NitrpgTestHelper
65 test
66
67 fun test_add_achievement is test do
68 var db = gen_test_db
69 var game = load_game("Morriar/nit", db)
70 var player1 = new Player(game, "Morriar")
71 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
72 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
73 player1.add_achievement(a1)
74 player1.add_achievement(a2)
75 assert player1.load_achievements.length == 2
76 end
77
78 fun test_load_achievement is test do
79 var db = gen_test_db
80 var game = load_game("Morriar/nit", db)
81 var player1 = new Player(game, "Morriar")
82 var player2 = new Player(game, "xymus")
83 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
84 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
85 player1.add_achievement(a1)
86 player2.add_achievement(a2)
87 assert player1.load_achievement(a1.id).id == "test_id1"
88 assert player1.load_achievement(a2.id) == null
89 assert player2.load_achievement(a2.id).id == "test_id2"
90 assert player2.load_achievement(a1.id) == null
91 end
92
93 fun test_load_achievements is test do
94 var db = gen_test_db
95 var game = load_game("Morriar/nit", db)
96 var player1 = new Player(game, "Morriar")
97 var player2 = new Player(game, "xymus")
98 var a1 = new Achievement(game, "test_id1", "test_name", "test_desc", 15)
99 var a2 = new Achievement(game, "test_id2", "test_name", "test_desc", 15)
100 var a3 = new Achievement(game, "test_id3", "test_name", "test_desc", 15)
101 player1.add_achievement(a1)
102 player1.add_achievement(a2)
103 player2.add_achievement(a3)
104 var ok = [a1.id, a2.id]
105 var res = player1.load_achievements
106 assert res.length == 2
107 for a in res.values do assert ok.has(a.id)
108 end
109 end
110
111 class TestAchievement
112 super NitrpgTestHelper
113 test
114
115 fun test_init is test do
116 var db = gen_test_db
117 var game = load_game("Morriar/nit", db)
118 var a = new Achievement(game, "test_id", "test_name", "test_desc", 15)
119 assert a.id == "test_id"
120 assert a.name == "test_name"
121 assert a.desc == "test_desc"
122 assert a.reward == 15
123 end
124
125 fun test_init_from_json is test do
126 var db = gen_test_db
127 var game = load_game("Morriar/nit", db)
128 var json = """{
129 "id": "test_id",
130 "name": "test_name",
131 "desc": "test_desc",
132 "reward": 15
133 }""".parse_json.as(JsonObject)
134 var a = new Achievement.from_json(game, json)
135 assert a.id == "test_id"
136 assert a.name == "test_name"
137 assert a.desc == "test_desc"
138 assert a.reward == 15
139 end
140 end