Mercurial > irccd
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 |
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 | 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 | 26 #include <irccd/service.hpp> |
27 #include <irccd/path.hpp> | |
28 | |
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 | 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 | 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 | 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 | 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 | 81 m_irccd.plugins().setConfig("hangman", config); |
82 m_irccd.plugins().load("hangman", PLUGINDIR "/hangman.js"); | |
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 } |