annotate tests/plugin-hangman/main.cpp @ 437:722f2bbd654a

Plugin hangman: show current word on command, closes #643
author David Demelier <markand@malikania.fr>
date Sun, 16 Apr 2017 09:56:34 +0200
parents c6fbb6e0e06d
children f3c27790d0d1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test hangman plugin
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
394
c6fbb6e0e06d Happy new year!
David Demelier <markand@malikania.fr>
parents: 350
diff changeset
4 * Copyright (c) 2013-2017 David Demelier <markand@malikania.fr>
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
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}" },
437
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
65 { "running", "running=#{plugin}:#{command}:#{server}:#{channel}:#{origin}:#{nickname}:#{word}" },
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
66 { "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
67 { "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
68 { "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
69 { "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
70 });
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
71 }
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
72
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
73 void load(PluginConfig config = PluginConfig())
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
74 {
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
75 // Add file if not there.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
76 if (config.count("file") == 0)
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
77 config.emplace("file", SOURCEDIR "/words.conf");
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
78
350
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
79 m_irccd.plugins().setConfig("hangman", config);
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
80 m_irccd.plugins().load("hangman", PLUGINDIR "/hangman.js");
287e9ede5eef Tests: unbreak some
David Demelier <markand@malikania.fr>
parents: 272
diff changeset
81 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
82 }
155
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 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
87 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
88
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
89 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
90 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
91 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
92
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
93 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
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 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
98 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
99
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
100 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
101 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
102 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
103 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
104 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
105 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
106 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
107 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
108 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
109 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
110 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
111
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
112 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
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 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
117 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
119 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
120 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
121
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
122 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
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 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
127 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
128
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
129 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
130
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
131 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
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 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
136 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
137
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
138 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
139 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
140 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
141 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
142
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
143 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
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 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
148 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
149
210
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", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
151 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
152
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
153 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
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 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
158 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
159
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
160 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
161 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
162
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
163 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
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 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
168 load();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
169
210
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", ""});
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
171 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
172
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
173 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
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 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
178 // Disable collaborative mode.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
179 load({{ "collaborative", "false" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
180
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
181 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
182 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
183 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
184 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
185 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
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 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
190 // Enable collaborative mode.
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
191 load({{ "collaborative", "true" }});
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
192
210
2d10d7e661a0 Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents: 207
diff changeset
193 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
194 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
195 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
196 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
197 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
198 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
199 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
200 }
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
201
272
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
202 TEST_F(HangmanTest, query)
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
203 {
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
204 load();
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
205
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
206 // Query mode is never collaborative.
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
207 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
208 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
209 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
210 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
211 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
212 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
213 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
214 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
215 }
8fb6bd57878c Plugin hangman: allow usage in query, closes #424
David Demelier <markand@malikania.fr>
parents: 250
diff changeset
216
437
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
217 TEST_F(HangmanTest, running)
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
218 {
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
219 load();
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
220
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
221 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
222 m_plugin->onMessage(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", "y"});
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
223 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "jean!jean@localhost", "#hangman", ""});
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
224 ASSERT_EQ("#hangman:running=hangman:!hangman:test:#hangman:jean!jean@localhost:jean:_ _ y", m_server->last());
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
225 }
722f2bbd654a Plugin hangman: show current word on command, closes #643
David Demelier <markand@malikania.fr>
parents: 394
diff changeset
226
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 int main(int argc, char **argv)
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
228 {
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
229 path::setApplicationPath(argv[0]);
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
230 testing::InitGoogleTest(&argc, argv);
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
231
207
6635b9187d71 Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents: 195
diff changeset
232 return RUN_ALL_TESTS();
155
20cd5dc0e063 Plugin hangman: add initial unit test
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 }