annotate tests/src/plugins/hangman/main.cpp @ 611:9fbd1700435b

Tests: reoganize hierarchy
author David Demelier <markand@malikania.fr>
date Fri, 15 Dec 2017 15:37:58 +0100
parents tests/src/plugin-hangman/main.cpp@9d4da384f5d6
children 27587ff92a64
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test hangman plugin
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
394
c6fbb6e0e06d Happy new year!
David Demelier <markand@malikania.fr>
parents: 350
diff changeset
4 * Copyright (c) 2013-2017 David Demelier <markand@malikania.fr>
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
19 #include <unordered_map>
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
20 #include <unordered_set>
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
21
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
22 #define BOOST_TEST_MODULE "Hangman plugin"
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
23 #include <boost/test/unit_test.hpp>
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
596
35832b7f4f9d Irccd: move files to daemon folder, closes #731
David Demelier <markand@malikania.fr>
parents: 584
diff changeset
25 #include <irccd/daemon/irccd.hpp>
35832b7f4f9d Irccd: move files to daemon folder, closes #731
David Demelier <markand@malikania.fr>
parents: 584
diff changeset
26 #include <irccd/daemon/server.hpp>
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
604
9d4da384f5d6 Tests: move libirccd-test to test/ folder, closes #750
David Demelier <markand@malikania.fr>
parents: 596
diff changeset
28 #include <irccd/test/plugin_test.hpp>
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
30 namespace irccd {
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
32 class hangman_test : public plugin_test {
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
33 public:
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
34 hangman_test()
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
35 : plugin_test(PLUGIN_NAME, PLUGIN_PATH)
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
36 {
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
37 plugin_->set_formats({
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
38 { "asked", "asked=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
39 { "dead", "dead=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
40 { "found", "found=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
41 { "start", "start=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
437
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
42 { "running", "running=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
43 { "win", "win=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
44 { "wrong-letter", "wrong-letter=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
45 { "wrong-player", "wrong-player=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
46 { "wrong-word", "wrong-word=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
47 });
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
48 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
49
488
7e273b7f4f92 Irccd: new coding style, closes #576
David Demelier <markand@malikania.fr>
parents: 486
diff changeset
50 void load(plugin_config config = {})
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
51 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
52 // Add file if not there.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
53 if (config.count("file") == 0)
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
54 config.emplace("file", CMAKE_CURRENT_SOURCE_DIR "/words.conf");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
56 plugin_->set_config(config);
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
57 plugin_->on_load(irccd_);
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
58 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 };
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
61 BOOST_FIXTURE_TEST_SUITE(hangman_test_suite, hangman_test)
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
62
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
63 BOOST_AUTO_TEST_CASE(asked)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
65 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
66
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
67 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
68
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
69 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
70
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
71 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
72 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
73 BOOST_TEST(cmd["message"].get<std::string>() == "start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
74
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
75 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
76 cmd = server_->cqueue().back();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
78 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
79 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
80 BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
81
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
82 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
83 cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
84
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
85 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
86 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
87 BOOST_TEST(cmd["message"].get<std::string>() == "asked=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
89
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
90 BOOST_AUTO_TEST_CASE(dead)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
92 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
93
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
94 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
95 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "a"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
96 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "b"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
97 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "c"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
98 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "d"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
99 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "e"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
100 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "f"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
101 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "g"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
102 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "h"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
103 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "i"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
104 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "j"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
105
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
106 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
107
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
108 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
109 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
110 BOOST_TEST(cmd["message"].get<std::string>() == "dead=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
112
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
113 BOOST_AUTO_TEST_CASE(found)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
115 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
116
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
117 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
118 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
119
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
120 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
121
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
122 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
123 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
124 BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
127 BOOST_AUTO_TEST_CASE(start)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
129 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
130
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
131 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
132
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
133 auto cmd = server_->cqueue().back();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
134
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
135 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
136 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
137 BOOST_TEST(cmd["message"].get<std::string>() == "start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
139
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
140 BOOST_AUTO_TEST_CASE(win1)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
142 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
144 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
145 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
146 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "k"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
147 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "y"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
148
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
149 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
150
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
151 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
152 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
153 BOOST_TEST(cmd["message"].get<std::string>() == "win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
155
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
156 BOOST_AUTO_TEST_CASE(win2)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
158 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
159
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
160 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
161 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", "sky"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
162
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
163 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
164
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
165 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
166 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
167 BOOST_TEST(cmd["message"].get<std::string>() == "win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
169
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
170 BOOST_AUTO_TEST_CASE(wrong_letter)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
172 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
173
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
174 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
175 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "x"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
176
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
177 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
178
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
179 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
180 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
181 BOOST_TEST(cmd["message"].get<std::string>() == "wrong-letter=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:x");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
183
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
184 BOOST_AUTO_TEST_CASE(wrongWord)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
186 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
187
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
188 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
189 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", "cheese"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
190
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
191 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
192
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
193 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
194 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
195 BOOST_TEST(cmd["message"].get<std::string>() == "wrong-word=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:cheese");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
197
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
198 BOOST_AUTO_TEST_CASE(collaborative_disabled)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
200 // Disable collaborative mode.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
201 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
202
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
203 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
204 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
205
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
206 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
207
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
208 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
209 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
210 BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
211
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
212 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "k"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
213 cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
214
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
215 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
216 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
217 BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s k _");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
219
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
220 BOOST_AUTO_TEST_CASE(collaborative_enabled)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
222 // Enable collaborative mode.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
223 load({{ "collaborative", "true" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
224
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
225 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
226 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "s"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
227
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
228 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
229
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
230 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
231 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
232 BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
233
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
234 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "k"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
235 cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
236
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
237 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
238 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
239 BOOST_TEST(cmd["message"].get<std::string>() == "wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
240
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
241 plugin_->on_message(irccd_, {server_, "francis!francis@localhost", "#hangman", "k"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
242 cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
243
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
244 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
245 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
246 BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
248
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
249 BOOST_AUTO_TEST_CASE(case_fix_642)
436
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
250 {
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
251 load();
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
252
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
253 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
254 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#HANGMAN", "s"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
255
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
256 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
257
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
258 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
259 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
260 BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
261
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
262 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#HaNGMaN", "k"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
263 cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
264
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
265 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
266 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
267 BOOST_TEST(cmd["message"].get<std::string>() == "wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
268
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
269 plugin_->on_message(irccd_, {server_, "francis!francis@localhost", "#hAngmAn", "k"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
270 cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
271
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
272 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
273 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
274 BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _");
436
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
275 }
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
276
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
277 BOOST_AUTO_TEST_CASE(query)
272
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
278 {
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
279 load();
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
280
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
281 // Query mode is never collaborative.
577
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
282 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "irccd", ""});
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
283
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
284 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
285
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
286 BOOST_TEST(cmd["command"].get<std::string>() == "message");
577
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
287 BOOST_TEST(cmd["target"].get<std::string>() == "jean!jean@localhost");
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
288 BOOST_TEST(cmd["message"].get<std::string>() == "start=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:_ _ _");
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
289
577
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
290 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "irccd", "s"});
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
291 cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
292
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
293 BOOST_TEST(cmd["command"].get<std::string>() == "message");
577
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
294 BOOST_TEST(cmd["target"].get<std::string>() == "jean!jean@localhost");
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
295 BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:s _ _");
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
296
577
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
297 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "irccd", "k"});
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
298 cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
299
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
300 BOOST_TEST(cmd["command"].get<std::string>() == "message");
577
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
301 BOOST_TEST(cmd["target"].get<std::string>() == "jean!jean@localhost");
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
302 BOOST_TEST(cmd["message"].get<std::string>() == "found=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:s k _");
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
303
577
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
304 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "irccd", "sky"});
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
305 cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
306
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
307 BOOST_TEST(cmd["command"].get<std::string>() == "message");
577
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
308 BOOST_TEST(cmd["target"].get<std::string>() == "jean!jean@localhost");
3d0dbc0bee7d Irccd: update references to onChannel(Mode|Notice), onMode
David Demelier <markand@malikania.fr>
parents: 551
diff changeset
309 BOOST_TEST(cmd["message"].get<std::string>() == "win=hangman:!hangman:test:jean!jean@localhost:jean!jean@localhost:jean:sky");
272
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
310 }
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
311
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
312 BOOST_AUTO_TEST_CASE(running)
437
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
313 {
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
314 load();
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
315
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
316 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
317 plugin_->on_message(irccd_, {server_, "jean!jean@localhost", "#hangman", "y"});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
318 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
319
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
320 auto cmd = server_->cqueue().back();
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
321
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
322 BOOST_TEST(cmd["command"].get<std::string>() == "message");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
323 BOOST_TEST(cmd["target"].get<std::string>() == "#hangman");
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
324 BOOST_TEST(cmd["message"].get<std::string>() == "running=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ y");
437
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
325 }
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
326
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
327 BOOST_AUTO_TEST_CASE(wordlist_fix_644)
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
328 {
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
329 /*
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
330 * To be sure that the selection use the same list, we create a list of
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
331 * three words that has different size to determine which one was selected.
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
332 *
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
333 * Then we run 3 games and verify that the old selection is not the same
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
334 * as the current.
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
335 *
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
336 * This is not very accurate but it's better than nothing.
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
337 */
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
338 load({{ "file", CMAKE_CURRENT_SOURCE_DIR "/wordlist_fix_644.conf" }});
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
339
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
340 std::unordered_map<unsigned, std::string> words{
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
341 { 5, "abc" },
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
342 { 7, "abcd" },
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
343 { 9, "abcde" }
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
344 };
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
345 std::unordered_set<unsigned> found;
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
346
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
347 plugin_->set_formats({
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
348 { "start", "#{word}" }
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
349 });
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
350
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
351 unsigned last, current;
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
352
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
353 // 1. Initial game + finish.
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
354 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
355 last = server_->cqueue().back()["message"].get<std::string>().length();
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
356 found.insert(last);
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
357 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", words[last]});
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
358
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
359 // 2. Current must not be the last one.
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
360 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
361 current = server_->cqueue().back()["message"].get<std::string>().length();
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
362
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
363 BOOST_TEST(last != current);
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
364 BOOST_TEST(0U == found.count(current));
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
365
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
366 found.insert(current);
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
367 last = current;
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
368 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", words[current]});
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
369
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
370 // 3. Last word must be the one that is kept into the map.
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
371 plugin_->on_command(irccd_, {server_, "jean!jean@localhost", "#hangman", ""});
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
372 current = server_->cqueue().back()["message"].get<std::string>().length();
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
373
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
374 BOOST_TEST(last != current);
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
375 BOOST_TEST(0U == found.count(current));
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
376 }
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
377
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
378 BOOST_AUTO_TEST_SUITE_END()
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
379
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
380 } // !irccd