comparison tests/src/libirccd/dynlib-plugin/main.cpp @ 611:9fbd1700435b

Tests: reoganize hierarchy
author David Demelier <markand@malikania.fr>
date Fri, 15 Dec 2017 15:37:58 +0100
parents tests/src/dynlib-plugin/main.cpp@9d4da384f5d6
children 27587ff92a64
comparison
equal deleted inserted replaced
610:22b3cd6f991f 611:9fbd1700435b
1 /*
2 * main.cpp -- test dynlib_plugin
3 *
4 * Copyright (c) 2013-2017 David Demelier <markand@malikania.fr>
5 *
6 * Permission to use, copy, modify, and/or distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18
19 #define BOOST_TEST_MODULE "dynlib_plugin"
20 #include <boost/test/unit_test.hpp>
21
22 /*
23 * For this test, we open a plugin written in C++ and pass a journal_server
24 * class for each of the plugin function.
25 *
26 * Then we verify that the appropriate function has been called correctly.
27 *
28 * Functions load, unload and reload can not be tested though.
29 */
30
31 #include <irccd/daemon/dynlib_plugin.hpp>
32 #include <irccd/daemon/irccd.hpp>
33
34 #include <irccd/test/journal_server.hpp>
35
36 namespace irccd {
37
38 class fixture {
39 protected:
40 boost::asio::io_service service_;
41 std::shared_ptr<journal_server> server_;
42 std::shared_ptr<plugin> plugin_;
43 irccd irccd_;
44
45 inline fixture()
46 : server_(std::make_shared<journal_server>(service_, "test"))
47 , irccd_(service_)
48 {
49 plugin_ = dynlib_plugin_loader({CMAKE_CURRENT_BINARY_DIR}).find("test-plugin");
50
51 if (!plugin_)
52 throw std::runtime_error("test plugin not found");
53 }
54 };
55
56 BOOST_FIXTURE_TEST_SUITE(dynlib_plugin_suite, fixture)
57
58 BOOST_AUTO_TEST_CASE(on_command)
59 {
60 plugin_->on_command(irccd_, {server_, "", "", ""});
61
62 BOOST_TEST(server_->cqueue().size() == 1U);
63 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
64 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_command");
65 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
66 }
67
68 BOOST_AUTO_TEST_CASE(on_connect)
69 {
70 plugin_->on_connect(irccd_, {server_});
71
72 BOOST_TEST(server_->cqueue().size() == 1U);
73 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
74 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_connect");
75 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
76 }
77
78 BOOST_AUTO_TEST_CASE(on_invite)
79 {
80 plugin_->on_invite(irccd_, {server_, "", "", ""});
81
82 BOOST_TEST(server_->cqueue().size() == 1U);
83 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
84 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_invite");
85 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
86 }
87
88 BOOST_AUTO_TEST_CASE(on_join)
89 {
90 plugin_->on_join(irccd_, {server_, "", ""});
91
92 BOOST_TEST(server_->cqueue().size() == 1U);
93 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
94 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_join");
95 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
96 }
97
98 BOOST_AUTO_TEST_CASE(on_kick)
99 {
100 plugin_->on_kick(irccd_, {server_, "", "", "", ""});
101
102 BOOST_TEST(server_->cqueue().size() == 1U);
103 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
104 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_kick");
105 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
106 }
107
108 BOOST_AUTO_TEST_CASE(on_message)
109 {
110 plugin_->on_message(irccd_, {server_, "", "", ""});
111
112 BOOST_TEST(server_->cqueue().size() == 1U);
113 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
114 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_message");
115 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
116 }
117
118 BOOST_AUTO_TEST_CASE(on_me)
119 {
120 plugin_->on_me(irccd_, {server_, "", "", ""});
121
122 BOOST_TEST(server_->cqueue().size() == 1U);
123 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
124 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_me");
125 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
126 }
127
128 BOOST_AUTO_TEST_CASE(on_mode)
129 {
130 plugin_->on_mode(irccd_, {server_, "", "", "", "", "", ""});
131
132 BOOST_TEST(server_->cqueue().size() == 1U);
133 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
134 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_mode");
135 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
136 }
137
138 BOOST_AUTO_TEST_CASE(on_names)
139 {
140 plugin_->on_names(irccd_, {server_, "", {}});
141
142 BOOST_TEST(server_->cqueue().size() == 1U);
143 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
144 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_names");
145 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
146 }
147
148 BOOST_AUTO_TEST_CASE(on_nick)
149 {
150 plugin_->on_nick(irccd_, {server_, "", ""});
151
152 BOOST_TEST(server_->cqueue().size() == 1U);
153 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
154 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_nick");
155 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
156 }
157
158 BOOST_AUTO_TEST_CASE(on_notice)
159 {
160 plugin_->on_notice(irccd_, {server_, "", "", ""});
161
162 BOOST_TEST(server_->cqueue().size() == 1U);
163 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
164 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_notice");
165 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
166 }
167
168 BOOST_AUTO_TEST_CASE(on_part)
169 {
170 plugin_->on_part(irccd_, {server_, "", "", ""});
171
172 BOOST_TEST(server_->cqueue().size() == 1U);
173 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
174 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_part");
175 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
176 }
177
178 BOOST_AUTO_TEST_CASE(on_topic)
179 {
180 plugin_->on_topic(irccd_, {server_, "", "", ""});
181
182 BOOST_TEST(server_->cqueue().size() == 1U);
183 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
184 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_topic");
185 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
186 }
187
188 BOOST_AUTO_TEST_CASE(on_whois)
189 {
190 plugin_->on_whois(irccd_, {server_, {"", "", "", "", {}}});
191
192 BOOST_TEST(server_->cqueue().size() == 1U);
193 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
194 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_whois");
195 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
196 }
197
198 BOOST_AUTO_TEST_SUITE_END()
199
200 } // !irccd