83f17bf48304a47d590c9119b83a7c8c4ca0a37c
[nit.git] / contrib / nitrpg / src / test_events.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 `events.nit`
18 module test_events is test_suite
19
20 import test_helper
21 import events
22
23 class TestGame
24 super NitrpgTestHelper
25
26 fun test_add_event do
27 var db = load_db("test_add_event")
28 var game = load_game("Morriar/nit", db)
29 var event1 = new GameEvent(game, "test_kind", new JsonObject)
30 var event2 = new GameEvent(game, "test_kind", new JsonObject)
31 game.add_event(event1)
32 game.add_event(event2)
33 assert game.load_events.length == 2
34 db.drop
35 end
36
37 fun test_load_event do
38 var db = load_db("test_load_event")
39 var game = load_game("Morriar/nit", db)
40 var event1 = new GameEvent(game, "test_kind", new JsonObject)
41 var event2 = new GameEvent(game, "test_kind", new JsonObject)
42 game.add_event(event1)
43 assert game.load_event(event1.internal_id).kind == "test_kind"
44 assert game.load_event(event2.internal_id) == null
45 db.drop
46 end
47
48 fun test_load_events do
49 var db = load_db("test_load_events")
50 var game = load_game("Morriar/nit", db)
51 var event1 = new GameEvent(game, "test_kind", new JsonObject)
52 var event2 = new GameEvent(game, "test_kind", new JsonObject)
53 var event3 = new GameEvent(game, "test_kind", new JsonObject)
54 game.add_event(event1)
55 game.add_event(event2)
56 game.db.collection("events").insert(event3.to_json)
57 var ok = [event1.internal_id, event2.internal_id]
58 var res = game.load_events
59 assert res.length == 2
60 for event in res do assert ok.has(event.internal_id)
61 db.drop
62 end
63 end
64
65 class TestPlayer
66 super NitrpgTestHelper
67
68 fun test_add_event do
69 var db = load_db("test_add_event")
70 var game = load_game("Morriar/nit", db)
71 var player1 = new Player(game, "Morriar")
72 var player2 = new Player(game, "xymus")
73 var event1 = new GameEvent(game, "test_kind", new JsonObject)
74 var event2 = new GameEvent(game, "test_kind", new JsonObject)
75 player1.add_event(event1)
76 player1.add_event(event2)
77 assert player1.load_events.length == 2
78 assert player2.load_events.length == 0
79 db.drop
80 end
81
82 fun test_load_event do
83 var db = load_db("test_load_event")
84 var game = load_game("Morriar/nit", db)
85 var player1 = new Player(game, "Morriar")
86 var player2 = new Player(game, "xymus")
87 var event1 = new GameEvent(game, "test_kind", new JsonObject)
88 var event2 = new GameEvent(game, "test_kind", new JsonObject)
89 player1.add_event(event1)
90 player2.add_event(event2)
91 assert player1.load_event(event1.internal_id).kind == "test_kind"
92 assert player1.load_event(event2.internal_id) == null
93 assert player2.load_event(event2.internal_id).kind == "test_kind"
94 assert player2.load_event(event1.internal_id) == null
95 db.drop
96 end
97
98 fun test_load_events do
99 var db = load_db("test_load_events")
100 var game = load_game("Morriar/nit", db)
101 var player1 = new Player(game, "Morriar")
102 var player2 = new Player(game, "xymus")
103 var event1 = new GameEvent(game, "test_kind", new JsonObject)
104 var event2 = new GameEvent(game, "test_kind", new JsonObject)
105 var event3 = new GameEvent(game, "test_kind", new JsonObject)
106 player1.add_event(event1)
107 player1.add_event(event2)
108 player2.add_event(event3)
109 assert player1.load_events.length == 2
110 assert player2.load_events.length == 1
111 var ok = [event1.internal_id, event2.internal_id]
112 for event in player1.load_events do assert ok.has(event.internal_id)
113 db.drop
114 end
115 end
116
117 class TestGameEvent
118 super NitrpgTestHelper
119
120 fun test_init do
121 var db = load_db("test_init")
122 var game = load_game("Morriar/nit", db)
123 var event = new GameEvent(game, "test_kind", new JsonObject)
124 assert event.to_json["kind"] == "test_kind"
125 db.drop
126 end
127
128 fun test_init_from_json do
129 var db = load_db("test_init_from_json")
130 var game = load_game("Morriar/nit", db)
131 var json = """{
132 "internal_id": "test_id",
133 "kind": "test_kind",
134 "time": "2015-02-05T00:00:00Z",
135 "data": {"test_field": "test_value"}
136 }""".parse_json.as(JsonObject)
137 var event = new GameEvent.from_json(game, json)
138 assert event.internal_id == "test_id"
139 assert event.kind == "test_kind"
140 assert event.data.to_json == """{"test_field":"test_value"}"""
141 assert event.time.to_s == "2015-02-05T00:00:00Z"
142 db.drop
143 end
144 end