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