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)