Mercurial > irccd
comparison tests/test-plugin-joke.c @ 1011:a35537c50f09
irccd: hide conn implementation
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 17 Feb 2021 20:05:00 +0100 |
parents | 0d71bfa6c97a |
children | 8f8ce47aba8a |
comparison
equal
deleted
inserted
replaced
1010:d1ec9b99b580 | 1011:a35537c50f09 |
---|---|
20 | 20 |
21 #define GREATEST_USE_ABBREVS 0 | 21 #define GREATEST_USE_ABBREVS 0 |
22 #include <greatest.h> | 22 #include <greatest.h> |
23 | 23 |
24 #include <irccd/compat.h> | 24 #include <irccd/compat.h> |
25 #include <irccd/conn.h> | |
25 #include <irccd/js-plugin.h> | 26 #include <irccd/js-plugin.h> |
26 #include <irccd/plugin.h> | 27 #include <irccd/plugin.h> |
27 #include <irccd/server.h> | 28 #include <irccd/server.h> |
28 | 29 |
29 #define CALL() do { \ | 30 #define CALL() do { \ |
30 memset(server->conn.out, 0, sizeof (server->conn.out)); \ | 31 memset(server->conn->out, 0, sizeof (server->conn->out)); \ |
31 irc_plugin_handle(plugin, &(const struct irc_event) { \ | 32 irc_plugin_handle(plugin, &(const struct irc_event) { \ |
32 .type = IRC_EVENT_COMMAND, \ | 33 .type = IRC_EVENT_COMMAND, \ |
33 .server = server, \ | 34 .server = server, \ |
34 .message = { \ | 35 .message = { \ |
35 .origin = "jean!jean@localhost", \ | 36 .origin = "jean!jean@localhost", \ |
36 .channel = "#joke", \ | 37 .channel = "#joke", \ |
37 .message = "" \ | 38 .message = "" \ |
38 } \ | 39 } \ |
39 }); \ | 40 }); \ |
40 } while (0) | 41 } while (0) |
41 | 42 |
42 static struct irc_server *server; | 43 static struct irc_server *server; |
43 static struct irc_plugin *plugin; | 44 static struct irc_plugin *plugin; |
44 | 45 |
88 int aaa = 0, bbbb = 0; | 89 int aaa = 0, bbbb = 0; |
89 | 90 |
90 for (int i = 0; i < 2; ++i) { | 91 for (int i = 0; i < 2; ++i) { |
91 CALL(); | 92 CALL(); |
92 | 93 |
93 if (strcmp(server->conn.out, "PRIVMSG #joke :aaa\r\n") == 0) | 94 if (strcmp(server->conn->out, "PRIVMSG #joke :aaa\r\n") == 0) |
94 aaa = 1; | 95 aaa = 1; |
95 else if (strcmp(server->conn.out, "PRIVMSG #joke :bbbb\r\nPRIVMSG #joke :bbbb\r\n") == 0) | 96 else if (strcmp(server->conn->out, "PRIVMSG #joke :bbbb\r\nPRIVMSG #joke :bbbb\r\n") == 0) |
96 bbbb = 1; | 97 bbbb = 1; |
97 } | 98 } |
98 | 99 |
99 GREATEST_ASSERT(aaa); | 100 GREATEST_ASSERT(aaa); |
100 GREATEST_ASSERT(bbbb); | 101 GREATEST_ASSERT(bbbb); |
112 irc_plugin_set_option(plugin, "file", SOURCE "/data/joke/error-toobig.json"); | 113 irc_plugin_set_option(plugin, "file", SOURCE "/data/joke/error-toobig.json"); |
113 irc_plugin_set_option(plugin, "max-list-lines", "2"); | 114 irc_plugin_set_option(plugin, "max-list-lines", "2"); |
114 | 115 |
115 for (int i = 0; i < 64; ++i) { | 116 for (int i = 0; i < 64; ++i) { |
116 CALL(); | 117 CALL(); |
117 GREATEST_ASSERT_STR_EQ("PRIVMSG #joke :a\r\n", server->conn.out); | 118 GREATEST_ASSERT_STR_EQ("PRIVMSG #joke :a\r\n", server->conn->out); |
118 } | 119 } |
119 | 120 |
120 GREATEST_PASS(); | 121 GREATEST_PASS(); |
121 } | 122 } |
122 | 123 |
127 irc_plugin_set_option(plugin, "file", SOURCE "/data/joke/error-invalid.json"); | 128 irc_plugin_set_option(plugin, "file", SOURCE "/data/joke/error-invalid.json"); |
128 irc_plugin_set_option(plugin, "max-list-lines", "2"); | 129 irc_plugin_set_option(plugin, "max-list-lines", "2"); |
129 | 130 |
130 for (int i = 0; i < 64; ++i) { | 131 for (int i = 0; i < 64; ++i) { |
131 CALL(); | 132 CALL(); |
132 GREATEST_ASSERT_STR_EQ("PRIVMSG #joke :a\r\n", server->conn.out); | 133 GREATEST_ASSERT_STR_EQ("PRIVMSG #joke :a\r\n", server->conn->out); |
133 } | 134 } |
134 | 135 |
135 GREATEST_PASS(); | 136 GREATEST_PASS(); |
136 } | 137 } |
137 | 138 |
139 errors_not_found(void) | 140 errors_not_found(void) |
140 { | 141 { |
141 irc_plugin_set_option(plugin, "file", "doesnotexist.json"); | 142 irc_plugin_set_option(plugin, "file", "doesnotexist.json"); |
142 | 143 |
143 CALL(); | 144 CALL(); |
144 GREATEST_ASSERT_STR_EQ("PRIVMSG #joke :error=joke:!joke:test:#joke:jean!jean@localhost:jean\r\n", server->conn.out); | 145 GREATEST_ASSERT_STR_EQ("PRIVMSG #joke :error=joke:!joke:test:#joke:jean!jean@localhost:jean\r\n", server->conn->out); |
145 | 146 |
146 GREATEST_PASS(); | 147 GREATEST_PASS(); |
147 } | 148 } |
148 | 149 |
149 GREATEST_TEST | 150 GREATEST_TEST |
150 errors_not_array(void) | 151 errors_not_array(void) |
151 { | 152 { |
152 irc_plugin_set_option(plugin, "file", SOURCE "/data/joke/error-not-array.json"); | 153 irc_plugin_set_option(plugin, "file", SOURCE "/data/joke/error-not-array.json"); |
153 | 154 |
154 CALL(); | 155 CALL(); |
155 GREATEST_ASSERT_STR_EQ("PRIVMSG #joke :error=joke:!joke:test:#joke:jean!jean@localhost:jean\r\n", server->conn.out); | 156 GREATEST_ASSERT_STR_EQ("PRIVMSG #joke :error=joke:!joke:test:#joke:jean!jean@localhost:jean\r\n", server->conn->out); |
156 | 157 |
157 GREATEST_PASS(); | 158 GREATEST_PASS(); |
158 } | 159 } |
159 | 160 |
160 GREATEST_TEST | 161 GREATEST_TEST |
161 errors_empty(void) | 162 errors_empty(void) |
162 { | 163 { |
163 irc_plugin_set_option(plugin, "file", SOURCE "/data/joke/error-empty.json"); | 164 irc_plugin_set_option(plugin, "file", SOURCE "/data/joke/error-empty.json"); |
164 | 165 |
165 CALL(); | 166 CALL(); |
166 GREATEST_ASSERT_STR_EQ("PRIVMSG #joke :error=joke:!joke:test:#joke:jean!jean@localhost:jean\r\n", server->conn.out); | 167 GREATEST_ASSERT_STR_EQ("PRIVMSG #joke :error=joke:!joke:test:#joke:jean!jean@localhost:jean\r\n", server->conn->out); |
167 | 168 |
168 GREATEST_PASS(); | 169 GREATEST_PASS(); |
169 } | 170 } |
170 | 171 |
171 GREATEST_SUITE(suite_basics) | 172 GREATEST_SUITE(suite_basics) |