comparison tests/src/dynlib-plugin/main.cpp @ 581:a51b5dd5b761

Tests: put everything in src/
author David Demelier <markand@malikania.fr>
date Mon, 04 Dec 2017 14:12:13 +0100
parents tests/dynlib_plugin/main.cpp@458e34f16c1f
children 55cc4ba15026
comparison
equal deleted inserted replaced
580:2e16c3623531 581:a51b5dd5b761
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.hpp>
32 #include <dynlib_plugin.hpp>
33 #include <journal_server.hpp>
34
35 namespace irccd {
36
37 class fixture {
38 protected:
39 std::shared_ptr<journal_server> server_;
40 std::shared_ptr<plugin> plugin_;
41 irccd irccd_;
42
43 inline fixture()
44 : server_(std::make_shared<journal_server>("test"))
45 {
46 plugin_ = dynlib_plugin_loader({CMAKE_CURRENT_BINARY_DIR}).find("test-plugin");
47
48 if (!plugin_)
49 throw std::runtime_error("test plugin not found");
50 }
51 };
52
53 BOOST_FIXTURE_TEST_SUITE(dynlib_plugin_suite, fixture)
54
55 BOOST_AUTO_TEST_CASE(on_command)
56 {
57 plugin_->on_command(irccd_, {server_, "", "", ""});
58
59 BOOST_TEST(server_->cqueue().size() == 1U);
60 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
61 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_command");
62 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
63 }
64
65 BOOST_AUTO_TEST_CASE(on_connect)
66 {
67 plugin_->on_connect(irccd_, {server_});
68
69 BOOST_TEST(server_->cqueue().size() == 1U);
70 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
71 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_connect");
72 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
73 }
74
75 BOOST_AUTO_TEST_CASE(on_channel_mode)
76 {
77 plugin_->on_channel_mode(irccd_, {server_, "", "", "", ""});
78
79 BOOST_TEST(server_->cqueue().size() == 1U);
80 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
81 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_channel_mode");
82 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
83 }
84
85 BOOST_AUTO_TEST_CASE(on_channel_notice)
86 {
87 plugin_->on_channel_notice(irccd_, {server_, "", "", ""});
88
89 BOOST_TEST(server_->cqueue().size() == 1U);
90 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
91 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_channel_notice");
92 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
93 }
94
95 BOOST_AUTO_TEST_CASE(on_invite)
96 {
97 plugin_->on_invite(irccd_, {server_, "", "", ""});
98
99 BOOST_TEST(server_->cqueue().size() == 1U);
100 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
101 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_invite");
102 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
103 }
104
105 BOOST_AUTO_TEST_CASE(on_join)
106 {
107 plugin_->on_join(irccd_, {server_, "", ""});
108
109 BOOST_TEST(server_->cqueue().size() == 1U);
110 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
111 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_join");
112 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
113 }
114
115 BOOST_AUTO_TEST_CASE(on_kick)
116 {
117 plugin_->on_kick(irccd_, {server_, "", "", "", ""});
118
119 BOOST_TEST(server_->cqueue().size() == 1U);
120 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
121 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_kick");
122 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
123 }
124
125 BOOST_AUTO_TEST_CASE(on_message)
126 {
127 plugin_->on_message(irccd_, {server_, "", "", ""});
128
129 BOOST_TEST(server_->cqueue().size() == 1U);
130 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
131 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_message");
132 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
133 }
134
135 BOOST_AUTO_TEST_CASE(on_me)
136 {
137 plugin_->on_me(irccd_, {server_, "", "", ""});
138
139 BOOST_TEST(server_->cqueue().size() == 1U);
140 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
141 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_me");
142 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
143 }
144
145 BOOST_AUTO_TEST_CASE(on_mode)
146 {
147 plugin_->on_mode(irccd_, {server_, "", ""});
148
149 BOOST_TEST(server_->cqueue().size() == 1U);
150 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
151 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_mode");
152 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
153 }
154
155 BOOST_AUTO_TEST_CASE(on_names)
156 {
157 plugin_->on_names(irccd_, {server_, "", {}});
158
159 BOOST_TEST(server_->cqueue().size() == 1U);
160 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
161 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_names");
162 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
163 }
164
165 BOOST_AUTO_TEST_CASE(on_nick)
166 {
167 plugin_->on_nick(irccd_, {server_, "", ""});
168
169 BOOST_TEST(server_->cqueue().size() == 1U);
170 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
171 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_nick");
172 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
173 }
174
175 BOOST_AUTO_TEST_CASE(on_notice)
176 {
177 plugin_->on_notice(irccd_, {server_, "", ""});
178
179 BOOST_TEST(server_->cqueue().size() == 1U);
180 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
181 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_notice");
182 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
183 }
184
185 BOOST_AUTO_TEST_CASE(on_part)
186 {
187 plugin_->on_part(irccd_, {server_, "", "", ""});
188
189 BOOST_TEST(server_->cqueue().size() == 1U);
190 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
191 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_part");
192 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
193 }
194
195 BOOST_AUTO_TEST_CASE(on_query)
196 {
197 plugin_->on_query(irccd_, {server_, "", ""});
198
199 BOOST_TEST(server_->cqueue().size() == 1U);
200 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
201 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_query");
202 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
203 }
204
205 BOOST_AUTO_TEST_CASE(on_query_command)
206 {
207 plugin_->on_query_command(irccd_, {server_, "", ""});
208
209 BOOST_TEST(server_->cqueue().size() == 1U);
210 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
211 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_query_command");
212 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
213 }
214
215 BOOST_AUTO_TEST_CASE(on_query_topic)
216 {
217 plugin_->on_topic(irccd_, {server_, "", "", ""});
218
219 BOOST_TEST(server_->cqueue().size() == 1U);
220 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
221 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_topic");
222 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
223 }
224
225 BOOST_AUTO_TEST_CASE(on_whois)
226 {
227 plugin_->on_whois(irccd_, {server_, {"", "", "", "", {}}});
228
229 BOOST_TEST(server_->cqueue().size() == 1U);
230 BOOST_TEST(server_->cqueue()[0]["command"].get<std::string>() == "message");
231 BOOST_TEST(server_->cqueue()[0]["message"].get<std::string>() == "on_whois");
232 BOOST_TEST(server_->cqueue()[0]["target"].get<std::string>() == "test");
233 }
234
235 BOOST_AUTO_TEST_SUITE_END()
236
237 } // !irccd