annotate tests/plugin-hangman/main.cpp @ 456:c81b38ec7bd2 release-2.1

Fix #644: fix word list and selection Reuse the same list across successive hangman invocations. Task: #644 Errata: 20170727
author David Demelier <markand@malikania.fr>
date Thu, 27 Jul 2017 21:54:30 +0200
parents 8b615d37d303
children eaec3bff1db8
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
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <gtest/gtest.h>
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #include <irccd/irccd.hpp>
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <irccd/server.hpp>
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
26 #include <irccd/service.hpp>
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
27 #include <irccd/path.hpp>
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
28
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
29 #include "plugin-tester.hpp"
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 using namespace irccd;
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 class ServerTest : public Server {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 private:
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
35 std::string m_last;
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 public:
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
38 inline ServerTest()
250
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 210
diff changeset
39 : Server("test")
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
40 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
41 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
43 inline const std::string &last() const noexcept
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
44 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
45 return m_last;
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
46 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
48 void message(std::string target, std::string message) override
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
49 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
50 m_last = util::join({target, message});
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
51 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 };
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
53
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
54 class HangmanTest : public PluginTester {
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 protected:
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
56 std::shared_ptr<ServerTest> m_server;
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
57 std::shared_ptr<Plugin> m_plugin;
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
58
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 public:
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
60 HangmanTest()
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
61 : m_server(std::make_shared<ServerTest>())
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
62 {
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
63 m_irccd.plugins().setFormats("hangman", {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
64 { "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
65 { "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
66 { "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
67 { "start", "start=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
68 { "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
69 { "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
70 { "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
71 { "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
72 });
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
73 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
75 void load(PluginConfig config = PluginConfig())
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
76 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
77 // Add file if not there.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
78 if (config.count("file") == 0)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
79 config.emplace("file", SOURCEDIR "/words.conf");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
80
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
81 m_irccd.plugins().setConfig("hangman", config);
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
82 m_irccd.plugins().load("hangman", PLUGINDIR "/hangman.js");
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
83 m_plugin = m_irccd.plugins().require("hangman");
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
84 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 };
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
86
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 TEST_F(HangmanTest, asked)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
89 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
90
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
91 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
92 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "s"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
93 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "s"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
94
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
95 ASSERT_EQ("#hangman:asked=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s", m_server->last());
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 TEST_F(HangmanTest, dead)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
100 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
101
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
102 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
103 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "a"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
104 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "b"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
105 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "c"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
106 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "d"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
107 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "e"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
108 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "f"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
109 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "g"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
110 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "h"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
111 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "i"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
112 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "j"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
113
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
114 ASSERT_EQ("#hangman:dead=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky", m_server->last());
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
116
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 TEST_F(HangmanTest, found)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
119 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
121 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
122 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "s"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
123
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
124 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
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
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 TEST_F(HangmanTest, start)
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
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
131 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
132
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
133 ASSERT_EQ("#hangman:start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _", m_server->last());
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
135
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 TEST_F(HangmanTest, win1)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
138 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
139
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
140 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
141 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "s"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
142 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "k"});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
143 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "y"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
145 ASSERT_EQ("#hangman:win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky", m_server->last());
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
147
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 TEST_F(HangmanTest, win2)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
150 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
151
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
152 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
153 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "sky"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
154
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
155 ASSERT_EQ("#hangman:win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky", m_server->last());
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
157
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 TEST_F(HangmanTest, wrongLetter)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
160 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
161
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
162 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
163 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "x"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
164
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
165 ASSERT_EQ("#hangman:wrong-letter=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:x", m_server->last());
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
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 TEST_F(HangmanTest, wrongWord)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
170 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
171
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
172 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
173 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "cheese"});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
174
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
175 ASSERT_EQ("#hangman:wrong-word=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:cheese", m_server->last());
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
177
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 TEST_F(HangmanTest, collaborativeDisabled)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
180 // Disable collaborative mode.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
181 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
182
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
183 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
184 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "s"});
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
185 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
186 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "k"});
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
187 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s k _", m_server->last());
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
189
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 TEST_F(HangmanTest, collaborativeEnabled)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
192 // Enable collaborative mode.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
193 load({{ "collaborative", "true" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
194
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
195 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
196 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "s"});
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
197 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
198 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "k"});
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
199 ASSERT_EQ("#hangman:wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k", m_server->last());
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
200 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "francis!francis@localhost", "#hangman", "k"});
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
201 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _", m_server->last());
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
203
454
8b615d37d303 Fix #642: plugins must be case sensitive
David Demelier <markand@malikania.fr>
parents: 436
diff changeset
204 TEST_F(HangmanTest, case_fix_642)
436
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
205 {
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
206 load();
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
207
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
208 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
209 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#HANGMAN", "s"});
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
210 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
211 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#HaNGMaN", "k"});
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
212 ASSERT_EQ("#hangman:wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k", m_server->last());
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
213 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "francis!francis@localhost", "#hAngmAn", "k"});
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
214 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _", m_server->last());
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
215 }
a2ed6bc6e42c Fix #642: fix case sensitivity in hangman, roulette
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
216
272
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
217 TEST_F(HangmanTest, query)
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
218 {
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
219 load();
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
220
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
221 // Query mode is never collaborative.
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
222 m_plugin->onQueryCommand(m_irccd, QueryEvent{m_server, "jean!jean@localhost", ""});
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
223 ASSERT_EQ("jean:start=hangman:!hangman:test:jean:jean!jean@localhost:jean:_ _ _", m_server->last());
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
224 m_plugin->onQuery(m_irccd, QueryEvent{m_server, "jean!jean@localhost", "s"});
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
225 ASSERT_EQ("jean:found=hangman:!hangman:test:jean:jean!jean@localhost:jean:s _ _", m_server->last());
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
226 m_plugin->onQuery(m_irccd, QueryEvent{m_server, "jean!jean@localhost", "k"});
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
227 ASSERT_EQ("jean:found=hangman:!hangman:test:jean:jean!jean@localhost:jean:s k _", m_server->last());
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
228 m_plugin->onQueryCommand(m_irccd, QueryEvent{m_server, "jean!jean@localhost", "sky"});
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
229 ASSERT_EQ("jean:win=hangman:!hangman:test:jean:jean!jean@localhost:jean:sky", m_server->last());
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
230 }
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
231
456
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
232 TEST_F(HangmanTest, wordlist_fix_644)
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
233 {
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
234 /*
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
235 * 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
236 * 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
237 *
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
238 * 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
239 * as the current.
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
240 *
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
241 * 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
242 */
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
243 load({{ "file", SOURCEDIR "/wordlist_fix_644.conf" }});
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
244
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
245 std::unordered_map<unsigned, std::string> words{
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
246 { 14, "abc" },
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
247 { 16, "abcd" },
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
248 { 18, "abcde" }
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
249 };
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
250 std::unordered_set<unsigned> found;
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
251
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
252 m_plugin->setFormats({
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
253 { "start", "#{word}" }
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
254 });
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
255
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
256 unsigned last, current;
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
257
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
258 // 1. Initial game + finish.
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
259 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
260 last = m_server->last().length();
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
261 found.insert(last);
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
262 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", words[last]});
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
263
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
264 // 2. Current must not be the last one.
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
265 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
266 current = m_server->last().length();
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
267
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
268 ASSERT_NE(last, current);
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
269 ASSERT_EQ(0U, found.count(current));
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
270
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
271 found.insert(current);
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
272 last = current;
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
273 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", words[current]});
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
274
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
275 // 3. Last word must be the one that is kept into the map.
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
276 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
277 current = m_server->last().length();
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
278
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
279 ASSERT_NE(last, current);
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
280 ASSERT_EQ(0U, found.count(current));
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
281 }
c81b38ec7bd2 Fix #644: fix word list and selection
David Demelier <markand@malikania.fr>
parents: 454
diff changeset
282
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 int main(int argc, char **argv)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
285 path::setApplicationPath(argv[0]);
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
286 testing::InitGoogleTest(&argc, argv);
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
287
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
288 return RUN_ALL_TESTS();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 }