annotate tests/plugin-hangman/main.cpp @ 155:20cd5dc0e063

Plugin hangman: add initial unit test
author David Demelier <markand@malikania.fr>
date Sun, 22 May 2016 23:19:05 +0200
parents
children 1c22fcce1662
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 *
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2013-2016 David Demelier <markand@malikania.fr>
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
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <gtest/gtest.h>
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <irccd/irccd.hpp>
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #include <irccd/server.hpp>
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <irccd/service-plugin.hpp>
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 using namespace irccd;
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 class ServerTest : public Server {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 private:
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 std::string m_last;
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 public:
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 inline ServerTest()
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 : Server("test", ServerInfo())
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 }
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 inline const std::string &last() const noexcept
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 return m_last;
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
41
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 void message(std::string target, std::string message) override
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 m_last = util::join({target, message});
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 };
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
47
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 class HangmanTest : public testing::Test {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 protected:
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 Irccd m_irccd;
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 PluginService &m_ps;
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 std::shared_ptr<ServerTest> m_server;
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 std::shared_ptr<Plugin> m_plugin;
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 public:
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 HangmanTest()
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 : m_ps(m_irccd.pluginService())
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 , m_server(std::make_shared<ServerTest>())
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 m_ps.setFormats("hangman", {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 { "asked", "asked=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" },
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 { "dead", "dead=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 { "found", "found=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 { "start", "start=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 { "win", "win=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 { "wrong-letter", "wrong-letter=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" },
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 { "wrong-player", "wrong-player=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{letter}" },
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 { "wrong-word", "wrong-word=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
70 });
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 void load(PluginConfig config = PluginConfig())
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 // Add file if not there.
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 if (config.count("file") == 0)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 config.emplace("file", SOURCEDIR "/words.conf");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
78
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 m_ps.configure("hangman", config);
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 m_ps.load("hangman", PLUGINDIR "/hangman.js");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 m_plugin = m_ps.require("hangman");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 };
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 TEST_F(HangmanTest, asked)
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 load({{ "collaborative", "false" }});
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "s");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "s");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 ASSERT_EQ("#hangman:asked=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
95
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 TEST_F(HangmanTest, dead)
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 load({{ "collaborative", "false" }});
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "a");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "b");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "c");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "d");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "e");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "f");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "g");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "h");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "i");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "j");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
111
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 ASSERT_EQ("#hangman:dead=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
114
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 TEST_F(HangmanTest, found)
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 load({{ "collaborative", "false" }});
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "s");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 TEST_F(HangmanTest, start)
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 load();
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
128
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
130
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 ASSERT_EQ("#hangman:start=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ _", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
133
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 TEST_F(HangmanTest, win1)
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 load({{ "collaborative", "false" }});
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
137
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "s");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "k");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "y");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
142
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 ASSERT_EQ("#hangman:win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
145
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 TEST_F(HangmanTest, win2)
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 load({{ "collaborative", "false" }});
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
149
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "sky");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
152
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 ASSERT_EQ("#hangman:win=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:sky", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 TEST_F(HangmanTest, wrongLetter)
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 load();
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
159
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "x");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
162
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 ASSERT_EQ("#hangman:wrong-letter=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:x", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
165
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 TEST_F(HangmanTest, wrongWord)
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 load();
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
169
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "cheese");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
172
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 ASSERT_EQ("#hangman:wrong-word=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:cheese", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
175
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 TEST_F(HangmanTest, collaborativeDisabled)
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 // Disable collaborative mode.
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 load({{ "collaborative", "false" }});
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "s");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "k");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s k _", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
187
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 TEST_F(HangmanTest, collaborativeEnabled)
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 // Enable collaborative mode.
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 load({{ "collaborative", "true" }});
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
192
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 m_plugin->onCommand(m_irccd, m_server, "jean!jean@localhost", "#hangman", "");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "s");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:s _ _", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 m_plugin->onMessage(m_irccd, m_server, "jean!jean@localhost", "#hangman", "k");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 ASSERT_EQ("#hangman:wrong-player=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:k", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 m_plugin->onMessage(m_irccd, m_server, "francis!francis@localhost", "#hangman", "k");
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 ASSERT_EQ("#hangman:found=hangman:!hangman:test:#hangman:francis!francis@localhost:francis:s k _", m_server->last());
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
201
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 int main(int argc, char **argv)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 path::setApplicationPath(argv[0]);
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 testing::InitGoogleTest(&argc, argv);
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
206
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 return RUN_ALL_TESTS();
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 }