Mercurial > irccd
annotate tests/plugin-ask/main.cpp @ 377:cd7270ec6c8e
CMake: general cleanup
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 18 Dec 2016 10:02:59 +0100 |
parents | 287e9ede5eef |
children | c6fbb6e0e06d |
rev | line source |
---|---|
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
1 /* |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
2 * main.cpp -- test ask plugin |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
3 * |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
4 * Copyright (c) 2013-2016 David Demelier <markand@malikania.fr> |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
5 * |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
9 * |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
17 */ |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
18 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
19 #include <gtest/gtest.h> |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
20 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
21 #include <irccd/irccd.hpp> |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
22 #include <irccd/server.hpp> |
350 | 23 #include <irccd/service.hpp> |
24 #include <irccd/path.hpp> | |
25 | |
26 #include "plugin-tester.hpp" | |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
27 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
28 using namespace irccd; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
29 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
30 class ServerTest : public Server { |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
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; |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
33 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
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 | 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 } |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
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 } |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
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 } |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
49 }; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
50 |
350 | 51 class AskTest : public PluginTester { |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
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; |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
55 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
56 public: |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
57 AskTest() |
350 | 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 | 60 m_irccd.plugins().setConfig("ask", {{"file", SOURCEDIR "/answers.conf"}}); |
61 m_irccd.plugins().load("ask", PLUGINDIR "/ask.js"); | |
62 m_plugin = m_irccd.plugins().require("ask"); | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
63 } |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
64 }; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
65 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
66 TEST_F(AskTest, basic) |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
67 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
68 bool no = false; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
69 bool yes = false; |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
70 |
250 | 71 /* |
72 * Invoke the plugin 1000 times, it will be very unlucky to not have both | |
73 * answers in that amount of tries. | |
74 */ | |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
75 for (int i = 0; i < 1000; ++i) { |
210
2d10d7e661a0
Irccd: make object based IRC events, #522
David Demelier <markand@malikania.fr>
parents:
207
diff
changeset
|
76 m_plugin->onCommand(m_irccd, MessageEvent{m_server, "tester", "#dummy", ""}); |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
77 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
78 if (m_server->last() == "#dummy:tester, YES") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
79 yes = true; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
80 if (m_server->last() == "#dummy:tester, NO") |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
81 no = true; |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
82 } |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
83 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
84 ASSERT_TRUE(no); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
85 ASSERT_TRUE(yes); |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
86 } |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
87 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
88 int main(int argc, char **argv) |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
89 { |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
90 path::setApplicationPath(argv[0]); |
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
91 testing::InitGoogleTest(&argc, argv); |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
92 |
207
6635b9187d71
Irccd: switch to 4 spaces indent, #518
David Demelier <markand@malikania.fr>
parents:
195
diff
changeset
|
93 return RUN_ALL_TESTS(); |
177
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
94 } |