Mercurial > irccd
annotate tests/test-dl-plugin.c @ 1004:3ea3361f0fc7
irccd: now track modes
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 16 Feb 2021 18:37:22 +0100 |
parents | bbb3d3075ec2 |
children | a35537c50f09 |
rev | line source |
---|---|
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * test-dl-plugin.c -- test dl-plugin.h functions |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2013-2021 David Demelier <markand@malikania.fr> |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
1003 | 19 #include <err.h> |
20 | |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #define GREATEST_USE_ABBREVS 0 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <greatest.h> |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 |
1003 | 24 #include <irccd/compat.h> |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 #include <irccd/dl-plugin.h> |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 #include <irccd/event.h> |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 #include <irccd/plugin.h> |
1003 | 28 #include <irccd/server.h> |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 |
1003 | 30 static struct irc_plugin *plugin; |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 static void |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 setup(void *udata) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 (void)udata; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 /* TODO: No idea how to stop greatest from here. */ |
1003 | 38 if ((plugin = dl_plugin_open("example", EXAMPLE_DL_PLUGIN)) == NULL) |
39 err(1, "dlopen"); | |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 static void |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 teardown(void *udata) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 (void)udata; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 |
1003 | 47 irc_plugin_finish(plugin); |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 GREATEST_TEST |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 options_set_get(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 { |
1003 | 53 irc_plugin_set_option(plugin, "option-1", "new-value-1"); |
54 GREATEST_ASSERT_STR_EQ("new-value-1", irc_plugin_get_option(plugin, "option-1")); | |
55 GREATEST_ASSERT(!irc_plugin_get_option(plugin, "not-found")); | |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 GREATEST_PASS(); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 GREATEST_TEST |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 options_list(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 { |
1003 | 62 const char **options = irc_plugin_get_options(plugin); |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 GREATEST_ASSERT_STR_EQ("option-1", options[0]); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 GREATEST_ASSERT(!options[1]); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 GREATEST_PASS(); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 GREATEST_SUITE(suite_options) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 GREATEST_SET_SETUP_CB(setup, NULL); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 GREATEST_SET_TEARDOWN_CB(teardown, NULL); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 GREATEST_RUN_TEST(options_set_get); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 GREATEST_RUN_TEST(options_list); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 GREATEST_TEST |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 paths_set_get(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 { |
1003 | 80 irc_plugin_set_path(plugin, "path-1", "new-value-1"); |
81 GREATEST_ASSERT_STR_EQ("new-value-1", irc_plugin_get_path(plugin, "path-1")); | |
82 GREATEST_ASSERT(!irc_plugin_get_path(plugin, "not-found")); | |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 GREATEST_PASS(); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 GREATEST_TEST |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 paths_list(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 { |
1003 | 89 const char **paths = irc_plugin_get_paths(plugin); |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 GREATEST_ASSERT_STR_EQ("path-1", paths[0]); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 GREATEST_ASSERT(!paths[1]); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 GREATEST_PASS(); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 GREATEST_SUITE(suite_paths) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 GREATEST_SET_SETUP_CB(setup, NULL); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 GREATEST_SET_TEARDOWN_CB(teardown, NULL); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 GREATEST_RUN_TEST(paths_set_get); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 GREATEST_RUN_TEST(paths_list); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 GREATEST_TEST |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 templates_set_get(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 { |
1003 | 107 irc_plugin_set_template(plugin, "template-1", "new-value-1"); |
108 GREATEST_ASSERT_STR_EQ("new-value-1", irc_plugin_get_template(plugin, "template-1")); | |
109 GREATEST_ASSERT(!irc_plugin_get_template(plugin, "not-found")); | |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 GREATEST_PASS(); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 GREATEST_TEST |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 templates_list(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 { |
1003 | 116 const char **templates = irc_plugin_get_templates(plugin); |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 GREATEST_ASSERT_STR_EQ("template-1", templates[0]); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 GREATEST_ASSERT(!templates[1]); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 GREATEST_PASS(); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 GREATEST_SUITE(suite_templates) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 GREATEST_SET_SETUP_CB(setup, NULL); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 GREATEST_SET_TEARDOWN_CB(teardown, NULL); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 GREATEST_RUN_TEST(templates_set_get); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 GREATEST_RUN_TEST(templates_list); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 GREATEST_TEST |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 calls_simple(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 { |
1003 | 134 struct irc_server server = { |
135 .state = IRC_SERVER_STATE_CONNECTED | |
136 }; | |
137 struct irc_event ev = { | |
138 .server = &server | |
139 }; | |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 |
1003 | 141 irc_plugin_load(plugin); |
142 irc_plugin_unload(plugin); | |
143 irc_plugin_reload(plugin); | |
144 irc_plugin_handle(plugin, &ev); | |
145 GREATEST_ASSERT_STR_EQ("EVENT\r\n", server.conn.out); | |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 GREATEST_PASS(); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 GREATEST_SUITE(suite_calls) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 GREATEST_SET_SETUP_CB(setup, NULL); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 GREATEST_SET_TEARDOWN_CB(teardown, NULL); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 GREATEST_RUN_TEST(calls_simple); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
156 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 GREATEST_MAIN_DEFS(); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 int |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 main(int argc, char **argv) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
161 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
162 GREATEST_MAIN_BEGIN(); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
163 GREATEST_RUN_SUITE(suite_options); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
164 GREATEST_RUN_SUITE(suite_paths); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
165 GREATEST_RUN_SUITE(suite_templates); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
166 GREATEST_RUN_SUITE(suite_calls); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
167 GREATEST_MAIN_END(); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
168 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
169 return 0; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
170 } |