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