annotate tests/plugin-hangman/main.cpp @ 391:d51a95714abb

Docs: sync html with irccdctl help messages
author David Demelier <markand@malikania.fr>
date Fri, 23 Dec 2016 13:42:26 +0100
parents 287e9ede5eef
children c6fbb6e0e06d
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>
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
23 #include <irccd/service.hpp>
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
24 #include <irccd/path.hpp>
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
25
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
26 #include "plugin-tester.hpp"
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 using namespace irccd;
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
29
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 class ServerTest : public Server {
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 private:
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
32 std::string m_last;
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 public:
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
35 inline ServerTest()
250
79d9840811a1 Irccd: fix tests
David Demelier <markand@malikania.fr>
parents: 210
diff changeset
36 : Server("test")
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
37 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
38 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
40 inline const std::string &last() const noexcept
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
41 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
42 return m_last;
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
43 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
44
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
45 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
46 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
47 m_last = util::join({target, message});
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
48 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 };
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
50
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
51 class HangmanTest : public PluginTester {
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 protected:
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
53 std::shared_ptr<ServerTest> m_server;
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
54 std::shared_ptr<Plugin> m_plugin;
155
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:
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
57 HangmanTest()
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
58 : m_server(std::make_shared<ServerTest>())
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
59 {
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
60 m_irccd.plugins().setFormats("hangman", {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
61 { "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
62 { "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
63 { "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
64 { "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
65 { "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
66 { "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
67 { "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
68 { "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
69 });
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
70 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
71
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
72 void load(PluginConfig config = PluginConfig())
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
73 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
74 // Add file if not there.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
75 if (config.count("file") == 0)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
76 config.emplace("file", SOURCEDIR "/words.conf");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
77
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
78 m_irccd.plugins().setConfig("hangman", config);
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
79 m_irccd.plugins().load("hangman", PLUGINDIR "/hangman.js");
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
80 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
81 }
155
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 TEST_F(HangmanTest, asked)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
86 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
88 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
89 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
90 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
91
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
92 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
93 }
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 TEST_F(HangmanTest, dead)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
97 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
98
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
99 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
100 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
101 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
102 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
103 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
104 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
105 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
106 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
107 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
108 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
109 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
110
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
111 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
112 }
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 TEST_F(HangmanTest, found)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
116 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
117
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
118 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
119 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
120
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
121 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
122 }
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 TEST_F(HangmanTest, start)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
126 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
127
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
128 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
129
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
130 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
131 }
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 TEST_F(HangmanTest, win1)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
135 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
137 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
138 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
139 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
140 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
141
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
142 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
143 }
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 TEST_F(HangmanTest, win2)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
147 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
148
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
149 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
150 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
151
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
152 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
153 }
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 TEST_F(HangmanTest, wrongLetter)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
157 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
158
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
159 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
160 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
161
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
162 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
163 }
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 TEST_F(HangmanTest, wrongWord)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
167 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
168
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
169 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
170 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
171
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
172 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
173 }
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 TEST_F(HangmanTest, collaborativeDisabled)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
176 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
177 // Disable collaborative mode.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
178 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
179
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
180 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
181 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
182 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
183 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
184 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
185 }
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 TEST_F(HangmanTest, collaborativeEnabled)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
189 // Enable collaborative mode.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
190 load({{ "collaborative", "true" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
191
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
192 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
193 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
194 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
195 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
196 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
197 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
198 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
199 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
200
272
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
201 TEST_F(HangmanTest, query)
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
202 {
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
203 load();
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
204
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
205 // Query mode is never collaborative.
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
206 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
207 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
208 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
209 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
210 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
211 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
212 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
213 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
214 }
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
215
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 int main(int argc, char **argv)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
218 path::setApplicationPath(argv[0]);
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
219 testing::InitGoogleTest(&argc, argv);
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
220
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
221 return RUN_ALL_TESTS();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 }