Mercurial > irccd
comparison tests/src/plugins/hangman/main.cpp @ 773:8c44bbcbbab9
Misc: style, cleanup and update
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 26 Oct 2018 13:01:00 +0200 |
parents | 791d7591eca7 |
children | f362994133ca |
comparison
equal
deleted
inserted
replaced
772:f5ccf65ae929 | 773:8c44bbcbbab9 |
---|---|
31 | 31 |
32 namespace { | 32 namespace { |
33 | 33 |
34 class hangman_test : public js_plugin_fixture { | 34 class hangman_test : public js_plugin_fixture { |
35 public: | 35 public: |
36 hangman_test() | 36 hangman_test() |
37 : js_plugin_fixture(PLUGIN_PATH) | 37 : js_plugin_fixture(PLUGIN_PATH) |
38 { | 38 { |
39 plugin_->set_formats({ | 39 plugin_->set_formats({ |
40 { "asked", "asked=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" }, | 40 { "asked", "asked=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" }, |
41 { "dead", "dead=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }, | 41 { "dead", "dead=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }, |
42 { "found", "found=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }, | 42 { "found", "found=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }, |
43 { "start", "start=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }, | 43 { "start", "start=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }, |
44 { "running", "running=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }, | 44 { "running", "running=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }, |
45 { "win", "win=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }, | 45 { "win", "win=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }, |
46 { "wrong-letter", "wrong-letter=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" }, | 46 { "wrong-letter", "wrong-letter=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" }, |
47 { "wrong-player", "wrong-player=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" }, | 47 { "wrong-player", "wrong-player=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" }, |
48 { "wrong-word", "wrong-word=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" } | 48 { "wrong-word", "wrong-word=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" } |
49 }); | 49 }); |
50 } | 50 } |
51 | 51 |
52 void load(plugin::map config = {}) | 52 void load(plugin::map config = {}) |
53 { | 53 { |
54 // Add file if not there. | 54 // Add file if not there. |
55 if (config.count("file") == 0) | 55 if (config.count("file") == 0) |
56 config.emplace("file", CMAKE_CURRENT_SOURCE_DIR "/words.conf"); | 56 config.emplace("file", CMAKE_CURRENT_SOURCE_DIR "/words.conf"); |
57 | 57 |
58 plugin_->set_options(config); | 58 plugin_->set_options(config); |
59 plugin_->handle_load(irccd_); | 59 plugin_->handle_load(irccd_); |
60 } | 60 } |
61 }; | 61 }; |
62 | 62 |
63 BOOST_FIXTURE_TEST_SUITE(hangman_test_suite, hangman_test) | 63 BOOST_FIXTURE_TEST_SUITE(hangman_test_suite, hangman_test) |
64 | 64 |
65 BOOST_AUTO_TEST_CASE(asked) | 65 BOOST_AUTO_TEST_CASE(asked) |
66 { | 66 { |
67 load({{ "collaborative", "false" }}); | 67 load({{ "collaborative", "false" }}); |
68 | 68 |
69 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 69 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
70 | 70 |
71 auto cmd = server_->find("message").back(); | 71 auto cmd = server_->find("message").back(); |
72 | 72 |
73 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 73 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
74 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _"); | 74 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _"); |
75 | 75 |
76 plugin_->handle_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"}); | 76 plugin_->handle_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"}); |
77 cmd = server_->find("message").back(); | 77 cmd = server_->find("message").back(); |
78 | 78 |
79 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 79 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
80 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _"); | 80 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _"); |
81 | 81 |
82 plugin_->handle_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"}); | 82 plugin_->handle_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"}); |
83 cmd = server_->find("message").back(); | 83 cmd = server_->find("message").back(); |
84 | 84 |
85 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 85 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
86 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "asked=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s"); | 86 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "asked=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s"); |
87 } | 87 } |
88 | 88 |
89 BOOST_AUTO_TEST_CASE(dead) | 89 BOOST_AUTO_TEST_CASE(dead) |
90 { | 90 { |
91 load({{ "collaborative", "false" }}); | 91 load({{ "collaborative", "false" }}); |
92 | 92 |
93 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 93 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
94 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "a" }); | 94 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "a" }); |
95 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "b" }); | 95 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "b" }); |
96 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "c" }); | 96 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "c" }); |
97 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "d" }); | 97 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "d" }); |
98 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "e" }); | 98 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "e" }); |
99 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "f" }); | 99 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "f" }); |
100 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "g" }); | 100 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "g" }); |
101 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "h" }); | 101 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "h" }); |
102 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "i" }); | 102 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "i" }); |
103 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "j" }); | 103 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "j" }); |
104 | 104 |
105 const auto cmd = server_->find("message").back(); | 105 const auto cmd = server_->find("message").back(); |
106 | 106 |
107 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 107 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
108 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "dead=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky"); | 108 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "dead=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky"); |
109 } | 109 } |
110 | 110 |
111 BOOST_AUTO_TEST_CASE(found) | 111 BOOST_AUTO_TEST_CASE(found) |
112 { | 112 { |
113 load({{ "collaborative", "false" }}); | 113 load({{ "collaborative", "false" }}); |
114 | 114 |
115 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 115 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
116 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "s" }); | 116 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "s" }); |
117 | 117 |
118 const auto cmd = server_->find("message").back(); | 118 const auto cmd = server_->find("message").back(); |
119 | 119 |
120 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 120 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
121 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _"); | 121 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _"); |
122 } | 122 } |
123 | 123 |
124 BOOST_AUTO_TEST_CASE(start) | 124 BOOST_AUTO_TEST_CASE(start) |
125 { | 125 { |
126 load(); | 126 load(); |
127 | 127 |
128 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""}); | 128 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""}); |
129 | 129 |
130 const auto cmd = server_->find("message").back(); | 130 const auto cmd = server_->find("message").back(); |
131 | 131 |
132 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 132 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
133 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _"); | 133 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _"); |
134 } | 134 } |
135 | 135 |
136 BOOST_AUTO_TEST_CASE(win1) | 136 BOOST_AUTO_TEST_CASE(win1) |
137 { | 137 { |
138 load({{ "collaborative", "false" }}); | 138 load({{ "collaborative", "false" }}); |
139 | 139 |
140 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 140 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
141 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "s" }); | 141 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "s" }); |
142 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "k" }); | 142 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "k" }); |
143 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "y" }); | 143 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "y" }); |
144 | 144 |
145 const auto cmd = server_->find("message").back(); | 145 const auto cmd = server_->find("message").back(); |
146 | 146 |
147 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 147 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
148 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky"); | 148 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky"); |
149 } | 149 } |
150 | 150 |
151 BOOST_AUTO_TEST_CASE(win2) | 151 BOOST_AUTO_TEST_CASE(win2) |
152 { | 152 { |
153 load({{ "collaborative", "false" }}); | 153 load({{ "collaborative", "false" }}); |
154 | 154 |
155 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 155 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
156 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "sky" }); | 156 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "sky" }); |
157 | 157 |
158 const auto cmd = server_->find("message").back(); | 158 const auto cmd = server_->find("message").back(); |
159 | 159 |
160 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 160 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
161 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky"); | 161 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky"); |
162 } | 162 } |
163 | 163 |
164 BOOST_AUTO_TEST_CASE(wrong_letter) | 164 BOOST_AUTO_TEST_CASE(wrong_letter) |
165 { | 165 { |
166 load(); | 166 load(); |
167 | 167 |
168 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 168 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
169 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "x" }); | 169 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "x" }); |
170 | 170 |
171 const auto cmd = server_->find("message").back(); | 171 const auto cmd = server_->find("message").back(); |
172 | 172 |
173 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 173 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
174 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "wrong-letter=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:x"); | 174 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "wrong-letter=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:x"); |
175 } | 175 } |
176 | 176 |
177 BOOST_AUTO_TEST_CASE(wrong_word) | 177 BOOST_AUTO_TEST_CASE(wrong_word) |
178 { | 178 { |
179 load(); | 179 load(); |
180 | 180 |
181 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 181 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
182 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "cheese" }); | 182 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "cheese" }); |
183 | 183 |
184 const auto cmd = server_->find("message").back(); | 184 const auto cmd = server_->find("message").back(); |
185 | 185 |
186 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 186 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
187 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "wrong-word=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:cheese"); | 187 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "wrong-word=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:cheese"); |
188 } | 188 } |
189 | 189 |
190 BOOST_AUTO_TEST_CASE(collaborative_disabled) | 190 BOOST_AUTO_TEST_CASE(collaborative_disabled) |
191 { | 191 { |
192 // Disable collaborative mode. | 192 // Disable collaborative mode. |
193 load({{ "collaborative", "false" }}); | 193 load({{ "collaborative", "false" }}); |
194 | 194 |
195 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 195 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
196 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "s" }); | 196 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "s" }); |
197 | 197 |
198 auto cmd = server_->find("message").back(); | 198 auto cmd = server_->find("message").back(); |
199 | 199 |
200 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 200 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
201 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _"); | 201 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _"); |
202 | 202 |
203 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "k" }); | 203 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "k" }); |
204 cmd = server_->find("message").back(); | 204 cmd = server_->find("message").back(); |
205 | 205 |
206 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 206 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
207 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s k _"); | 207 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s k _"); |
208 } | 208 } |
209 | 209 |
210 BOOST_AUTO_TEST_CASE(collaborative_enabled) | 210 BOOST_AUTO_TEST_CASE(collaborative_enabled) |
211 { | 211 { |
212 // Enable collaborative mode. | 212 // Enable collaborative mode. |
213 load({{ "collaborative", "true" }}); | 213 load({{ "collaborative", "true" }}); |
214 | 214 |
215 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 215 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
216 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "s" }); | 216 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "s" }); |
217 | 217 |
218 auto cmd = server_->find("message").back(); | 218 auto cmd = server_->find("message").back(); |
219 | 219 |
220 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 220 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
221 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _"); | 221 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _"); |
222 | 222 |
223 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "k" }); | 223 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "k" }); |
224 cmd = server_->find("message").back(); | 224 cmd = server_->find("message").back(); |
225 | 225 |
226 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 226 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
227 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k"); | 227 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k"); |
228 | 228 |
229 plugin_->handle_message(irccd_, { server_, "francis!francis@localhost", "#hangman", "k" }); | 229 plugin_->handle_message(irccd_, { server_, "francis!francis@localhost", "#hangman", "k" }); |
230 cmd = server_->find("message").back(); | 230 cmd = server_->find("message").back(); |
231 | 231 |
232 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 232 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
233 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _"); | 233 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _"); |
234 } | 234 } |
235 | 235 |
236 BOOST_AUTO_TEST_CASE(issue_642) | 236 BOOST_AUTO_TEST_CASE(issue_642) |
237 { | 237 { |
238 load(); | 238 load(); |
239 | 239 |
240 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 240 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
241 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#HANGMAN", "s" }); | 241 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#HANGMAN", "s" }); |
242 | 242 |
243 auto cmd = server_->find("message").back(); | 243 auto cmd = server_->find("message").back(); |
244 | 244 |
245 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 245 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
246 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _"); | 246 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _"); |
247 | 247 |
248 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#HaNGMaN", "k" }); | 248 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#HaNGMaN", "k" }); |
249 cmd = server_->find("message").back(); | 249 cmd = server_->find("message").back(); |
250 | 250 |
251 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 251 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
252 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k"); | 252 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k"); |
253 | 253 |
254 plugin_->handle_message(irccd_, { server_, "francis!francis@localhost", "#hAngmAn", "k" }); | 254 plugin_->handle_message(irccd_, { server_, "francis!francis@localhost", "#hAngmAn", "k" }); |
255 cmd = server_->find("message").back(); | 255 cmd = server_->find("message").back(); |
256 | 256 |
257 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 257 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
258 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _"); | 258 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _"); |
259 } | 259 } |
260 | 260 |
261 BOOST_AUTO_TEST_CASE(query) | 261 BOOST_AUTO_TEST_CASE(query) |
262 { | 262 { |
263 load(); | 263 load(); |
264 | 264 |
265 // Query mode is never collaborative. | 265 // Query mode is never collaborative. |
266 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "irccd", "" }); | 266 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "irccd", "" }); |
267 | 267 |
268 auto cmd = server_->find("message").back(); | 268 auto cmd = server_->find("message").back(); |
269 | 269 |
270 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost"); | 270 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost"); |
271 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "start=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:_ _ _"); | 271 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "start=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:_ _ _"); |
272 | 272 |
273 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "irccd", "s" }); | 273 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "irccd", "s" }); |
274 cmd = server_->find("message").back(); | 274 cmd = server_->find("message").back(); |
275 | 275 |
276 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost"); | 276 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost"); |
277 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:s _ _"); | 277 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:s _ _"); |
278 | 278 |
279 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "irccd", "k" }); | 279 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "irccd", "k" }); |
280 cmd = server_->find("message").back(); | 280 cmd = server_->find("message").back(); |
281 | 281 |
282 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost"); | 282 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost"); |
283 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:s k _"); | 283 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:s k _"); |
284 | 284 |
285 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "irccd", "sky" }); | 285 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "irccd", "sky" }); |
286 cmd = server_->find("message").back(); | 286 cmd = server_->find("message").back(); |
287 | 287 |
288 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost"); | 288 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost"); |
289 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "win=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:sky"); | 289 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "win=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:sky"); |
290 } | 290 } |
291 | 291 |
292 BOOST_AUTO_TEST_CASE(running) | 292 BOOST_AUTO_TEST_CASE(running) |
293 { | 293 { |
294 load(); | 294 load(); |
295 | 295 |
296 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 296 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
297 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "y" }); | 297 plugin_->handle_message(irccd_, { server_, "jean!jean@localhost", "#hangman", "y" }); |
298 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); | 298 plugin_->handle_command(irccd_, { server_, "jean!jean@localhost", "#hangman", "" }); |
299 | 299 |
300 const auto cmd = server_->find("message").back(); | 300 const auto cmd = server_->find("message").back(); |
301 | 301 |
302 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); | 302 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman"); |
303 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "running=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ y"); | 303 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "running=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ y"); |
304 } | 304 } |
305 | 305 |
306 BOOST_AUTO_TEST_CASE(issue_644) | 306 BOOST_AUTO_TEST_CASE(issue_644) |
307 { | 307 { |
308 /* | 308 /* |
309 * To be sure that the selection use the same list, we create a list of | 309 * To be sure that the selection use the same list, we create a list of |
310 * three words that has different size to determine which one was selected. | 310 * three words that has different size to determine which one was selected. |
311 * | 311 * |
312 * Then we run 3 games and verify that the old selection is not the same | 312 * Then we run 3 games and verify that the old selection is not the same |
313 * as the current. | 313 * as the current. |
314 * | 314 * |
315 * This is not very accurate but it's better than nothing. | 315 * This is not very accurate but it's better than nothing. |
316 */ | 316 */ |
317 load({{ "file", CMAKE_CURRENT_SOURCE_DIR "/issue-644.conf" }}); | 317 load({{ "file", CMAKE_CURRENT_SOURCE_DIR "/issue-644.conf" }}); |
318 | 318 |
319 std::unordered_map<unsigned, std::string> words{ | 319 std::unordered_map<unsigned, std::string> words{ |
320 { 5, "abc" }, | 320 { 5, "abc" }, |
321 { 7, "abcd" }, | 321 { 7, "abcd" }, |
322 { 9, "abcde" } | 322 { 9, "abcde" } |
323 }; | 323 }; |
324 std::unordered_set<unsigned> found; | 324 std::unordered_set<unsigned> found; |
325 | 325 |
326 plugin_->set_formats({ | 326 plugin_->set_formats({ |
327 { "start", "#{word}" } | 327 { "start", "#{word}" } |
328 }); | 328 }); |
329 | 329 |
330 unsigned last, current; | 330 unsigned last, current; |
331 | 331 |
332 // 1. Initial game + finish. | 332 // 1. Initial game + finish. |
333 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""}); | 333 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""}); |
334 last = std::any_cast<std::string>(server_->find("message").back()[1]).length(); | 334 last = std::any_cast<std::string>(server_->find("message").back()[1]).length(); |
335 found.insert(last); | 335 found.insert(last); |
336 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", words[last]}); | 336 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", words[last]}); |
337 | 337 |
338 // 2. Current must not be the last one. | 338 // 2. Current must not be the last one. |
339 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""}); | 339 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""}); |
340 current = std::any_cast<std::string>(server_->find("message").back()[1]).length(); | 340 current = std::any_cast<std::string>(server_->find("message").back()[1]).length(); |
341 | 341 |
342 BOOST_TEST(last != current); | 342 BOOST_TEST(last != current); |
343 BOOST_TEST(0U == found.count(current)); | 343 BOOST_TEST(0U == found.count(current)); |
344 | 344 |
345 found.insert(current); | 345 found.insert(current); |
346 last = current; | 346 last = current; |
347 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", words[current]}); | 347 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", words[current]}); |
348 | 348 |
349 // 3. Last word must be the one that is kept into the map. | 349 // 3. Last word must be the one that is kept into the map. |
350 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""}); | 350 plugin_->handle_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""}); |
351 current = std::any_cast<std::string>(server_->find("message").back()[1]).length(); | 351 current = std::any_cast<std::string>(server_->find("message").back()[1]).length(); |
352 | 352 |
353 BOOST_TEST(last != current); | 353 BOOST_TEST(last != current); |
354 BOOST_TEST(0U == found.count(current)); | 354 BOOST_TEST(0U == found.count(current)); |
355 } | 355 } |
356 | 356 |
357 BOOST_AUTO_TEST_SUITE_END() | 357 BOOST_AUTO_TEST_SUITE_END() |
358 | 358 |
359 } // !namespace | 359 } // !namespace |