annotate tests/src/plugins/hangman/main.cpp @ 809:8460b4a34191

misc: reorganize namespaces, closes #952 @4h
author David Demelier <markand@malikania.fr>
date Fri, 16 Nov 2018 12:25:00 +0100
parents f362994133ca
children 06cc2f95f479
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 *
628
27587ff92a64 Misc: update copyrights
David Demelier <markand@malikania.fr>
parents: 611
diff changeset
4 * Copyright (c) 2013-2018 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
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
25 #include <irccd/daemon/bot.hpp>
596
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
759
791d7591eca7 Tests: rename plugin_test to js_plugin_fixture
David Demelier <markand@malikania.fr>
parents: 741
diff changeset
28 #include <irccd/test/js_plugin_fixture.hpp>
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
30 using irccd::daemon::plugin;
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
31
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
32 using irccd::test::js_plugin_fixture;
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
33
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
34 namespace irccd {
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
723
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
36 namespace {
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
37
759
791d7591eca7 Tests: rename plugin_test to js_plugin_fixture
David Demelier <markand@malikania.fr>
parents: 741
diff changeset
38 class hangman_test : public js_plugin_fixture {
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
39 public:
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
40 hangman_test()
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
41 : js_plugin_fixture(PLUGIN_PATH)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
42 {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
43 plugin_->set_formats({
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
44 { "asked", "asked=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
45 { "dead", "dead=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
46 { "found", "found=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
47 { "start", "start=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
48 { "running", "running=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
49 { "win", "win=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
50 { "wrong-letter", "wrong-letter=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
51 { "wrong-player", "wrong-player=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
52 { "wrong-word", "wrong-word=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
53 });
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
54 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
56 void load(plugin::map config = {})
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
57 {
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
58 // Add file if not there.
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
59 if (config.count("file") == 0)
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
60 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
61
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
62 plugin_->set_options(config);
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
63 plugin_->handle_load(bot_);
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
64 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 };
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 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
68
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
69 BOOST_AUTO_TEST_CASE(asked)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
71 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
73 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
74
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
75 auto cmd = server_->find("message").back();
735
64839725f346 Tests: replace journal_server with mock_server
David Demelier <markand@malikania.fr>
parents: 723
diff changeset
76
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
77 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
78 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _");
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
79
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
80 plugin_->handle_message(bot_, {server_, "jean!jean@localhost", "#hangman", "s"});
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
81 cmd = server_->find("message").back();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
82
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
83 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
84 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
85
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
86 plugin_->handle_message(bot_, {server_, "jean!jean@localhost", "#hangman", "s"});
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
87 cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
88
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
89 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
90 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
91 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
93 BOOST_AUTO_TEST_CASE(dead)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
95 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
97 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
98 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "a" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
99 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "b" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
100 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "c" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
101 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "d" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
102 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "e" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
103 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "f" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
104 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "g" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
105 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "h" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
106 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "i" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
107 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "j" });
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
108
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
109 const auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
110
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
111 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
112 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
113 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
115 BOOST_AUTO_TEST_CASE(found)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
117 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
119 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
120 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "s" });
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
122 const auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
123
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
124 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
125 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
126 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
128 BOOST_AUTO_TEST_CASE(start)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
130 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
131
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
132 plugin_->handle_command(bot_, {server_, "jean!jean@localhost", "#hangman", ""});
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
133
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
134 const auto cmd = server_->find("message").back();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
135
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
136 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
137 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
142 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
143
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
144 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
145 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "s" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
146 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "k" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
147 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "y" });
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
148
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
149 const auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
150
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
151 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
152 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
153 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
154
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
155 BOOST_AUTO_TEST_CASE(win2)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
157 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
158
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
159 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
160 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "sky" });
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
161
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
162 const auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
163
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
164 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
165 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
166 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
167
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
168 BOOST_AUTO_TEST_CASE(wrong_letter)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
170 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
171
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
172 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
173 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "x" });
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
174
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
175 const auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
176
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
177 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
178 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
179 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
741
cc01813fa027 Tests: improve file naming consistency
David Demelier <markand@malikania.fr>
parents: 735
diff changeset
181 BOOST_AUTO_TEST_CASE(wrong_word)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
183 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
184
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
185 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
186 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "cheese" });
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
187
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
188 const auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
189
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
190 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
191 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
192 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
193
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
194 BOOST_AUTO_TEST_CASE(collaborative_disabled)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
196 // Disable collaborative mode.
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
197 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
198
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
199 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
200 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "s" });
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
201
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
202 auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
203
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
204 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
205 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
206
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
207 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "k" });
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
208 cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
209
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
210 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
211 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
212 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
213
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
214 BOOST_AUTO_TEST_CASE(collaborative_enabled)
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
216 // Enable collaborative mode.
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
217 load({{ "collaborative", "true" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
218
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
219 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
220 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "s" });
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
221
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
222 auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
223
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
224 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
225 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
226
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
227 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "k" });
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
228 cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
229
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
230 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
231 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k");
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
232
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
233 plugin_->handle_message(bot_, { server_, "francis!francis@localhost", "#hangman", "k" });
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
234 cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
235
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
236 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
237 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
238 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
239
741
cc01813fa027 Tests: improve file naming consistency
David Demelier <markand@malikania.fr>
parents: 735
diff changeset
240 BOOST_AUTO_TEST_CASE(issue_642)
436
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
241 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
242 load();
436
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
243
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
244 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
245 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#HANGMAN", "s" });
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
246
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
247 auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
248
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
249 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
250 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _");
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
251
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
252 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#HaNGMaN", "k" });
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
253 cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
254
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
255 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
256 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k");
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
257
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
258 plugin_->handle_message(bot_, { server_, "francis!francis@localhost", "#hAngmAn", "k" });
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
259 cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
260
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
261 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
262 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
263 }
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
264
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
265 BOOST_AUTO_TEST_CASE(query)
272
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
266 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
267 load();
272
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
268
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
269 // Query mode is never collaborative.
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
270 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "irccd", "" });
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
271
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
272 auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
273
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
274 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
275 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
276
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
277 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "irccd", "s" });
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
278 cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
279
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
280 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
281 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
282
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
283 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "irccd", "k" });
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
284 cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
285
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
286 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
287 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
288
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
289 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "irccd", "sky" });
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
290 cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
291
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
292 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "jean!jean@localhost");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
293 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
294 }
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
295
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
296 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
297 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
298 load();
437
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
299
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
300 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
301 plugin_->handle_message(bot_, { server_, "jean!jean@localhost", "#hangman", "y" });
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
302 plugin_->handle_command(bot_, { server_, "jean!jean@localhost", "#hangman", "" });
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
303
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
304 const auto cmd = server_->find("message").back();
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
305
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
306 BOOST_TEST(std::any_cast<std::string>(cmd[0]) == "#hangman");
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
307 BOOST_TEST(std::any_cast<std::string>(cmd[1]) == "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
308 }
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
309
741
cc01813fa027 Tests: improve file naming consistency
David Demelier <markand@malikania.fr>
parents: 735
diff changeset
310 BOOST_AUTO_TEST_CASE(issue_644)
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
311 {
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
312 /*
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
313 * To be sure that the selection use the same list, we create a list of
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
314 * three words that has different size to determine which one was selected.
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
315 *
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
316 * Then we run 3 games and verify that the old selection is not the same
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
317 * as the current.
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
318 *
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
319 * This is not very accurate but it's better than nothing.
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
320 */
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
321 load({{ "file", CMAKE_CURRENT_SOURCE_DIR "/issue-644.conf" }});
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
322
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
323 std::unordered_map<unsigned, std::string> words{
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
324 { 5, "abc" },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
325 { 7, "abcd" },
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
326 { 9, "abcde" }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
327 };
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
328 std::unordered_set<unsigned> found;
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
329
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
330 plugin_->set_formats({
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
331 { "start", "#{word}" }
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
332 });
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
333
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
334 unsigned last, current;
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
335
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
336 // 1. Initial game + finish.
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
337 plugin_->handle_command(bot_, {server_, "jean!jean@localhost", "#hangman", ""});
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
338 last = std::any_cast<std::string>(server_->find("message").back()[1]).length();
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
339 found.insert(last);
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
340 plugin_->handle_command(bot_, {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
341
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
342 // 2. Current must not be the last one.
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
343 plugin_->handle_command(bot_, {server_, "jean!jean@localhost", "#hangman", ""});
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
344 current = std::any_cast<std::string>(server_->find("message").back()[1]).length();
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
345
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
346 BOOST_TEST(last != current);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
347 BOOST_TEST(0U == found.count(current));
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
348
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
349 found.insert(current);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
350 last = current;
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
351 plugin_->handle_command(bot_, {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
352
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
353 // 3. Last word must be the one that is kept into the map.
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
354 plugin_->handle_command(bot_, {server_, "jean!jean@localhost", "#hangman", ""});
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
355 current = std::any_cast<std::string>(server_->find("message").back()[1]).length();
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
356
773
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
357 BOOST_TEST(last != current);
8c44bbcbbab9 Misc: style, cleanup and update
David Demelier <markand@malikania.fr>
parents: 759
diff changeset
358 BOOST_TEST(0U == found.count(current));
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
359 }
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
360
525
d070d33bf4a0 Plugin hangman: finally switch to boost
David Demelier <markand@malikania.fr>
parents: 522
diff changeset
361 BOOST_AUTO_TEST_SUITE_END()
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
362
723
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
363 } // !namespace
e8c4ba5ed1c6 Tests: put code in anonymous namespaces, closes #889 @10m
David Demelier <markand@malikania.fr>
parents: 722
diff changeset
364
809
8460b4a34191 misc: reorganize namespaces, closes #952 @4h
David Demelier <markand@malikania.fr>
parents: 799
diff changeset
365 } // !irccd