Mercurial > irccd
annotate tests/plugin-ask/main.cpp @ 189:bb70bb9e41eb
Irccd: use native Duktape API
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 03 Jun 2016 13:28:10 +0200 |
parents | 254bbc0f13b5 |
children | 1c22fcce1662 |
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> |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
23 #include <irccd/service-plugin.hpp> |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
24 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
25 using namespace irccd; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
26 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
27 class ServerTest : public Server { |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
28 private: |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
29 std::string m_last; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
30 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
31 public: |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
32 inline ServerTest() |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
33 : Server("test", ServerInfo()) |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
34 { |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
35 } |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
36 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
37 inline const std::string &last() const noexcept |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
38 { |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
39 return m_last; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
40 } |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
41 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
42 void message(std::string target, std::string message) override |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
43 { |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
44 m_last = util::join({target, message}); |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
45 } |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
46 }; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
47 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
48 class AskTest : public testing::Test { |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
49 protected: |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
50 Irccd m_irccd; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
51 PluginService &m_ps; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
52 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
53 std::shared_ptr<ServerTest> m_server; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
54 std::shared_ptr<Plugin> m_plugin; |
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: |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
57 AskTest() |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
58 : m_ps(m_irccd.pluginService()) |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
59 , m_server(std::make_shared<ServerTest>()) |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
60 { |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
61 m_ps.configure("ask", {{"file", SOURCEDIR "/answers.conf"}}); |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
62 m_ps.load("ask", PLUGINDIR "/ask.js"); |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
63 m_plugin = m_ps.require("ask"); |
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 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
67 TEST_F(AskTest, basic) |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
68 { |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
69 bool no = false; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
70 bool yes = false; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
71 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
72 // Invoke the plugin 1000 times, it will be very unlucky to not have both answers in that amount of tries. |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
73 for (int i = 0; i < 1000; ++i) { |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
74 m_plugin->onCommand(m_irccd, m_server, "tester", "#dummy", ""); |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
75 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
76 if (m_server->last() == "#dummy:tester, YES") |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
77 yes = true; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
78 if (m_server->last() == "#dummy:tester, NO") |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
79 no = true; |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
80 } |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
81 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
82 ASSERT_TRUE(no); |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
83 ASSERT_TRUE(yes); |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
84 } |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
85 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
86 int main(int argc, char **argv) |
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 path::setApplicationPath(argv[0]); |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
89 testing::InitGoogleTest(&argc, argv); |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
90 |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
91 return RUN_ALL_TESTS(); |
254bbc0f13b5
Misc: dos2unix some files
David Demelier <markand@malikania.fr>
parents:
151
diff
changeset
|
92 } |