1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-05 18:25:43 +02:00

irc: use parsed command parameters in "cap" command callback

This commit is contained in:
Sébastien Helleu
2021-10-10 21:53:01 +02:00
parent 15392e4a81
commit 56edeba7fc
3 changed files with 359 additions and 277 deletions
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -35,7 +35,7 @@
int argc, \
char **argv, \
char **argv_eol, \
char **params, \
const char **params, \
int num_params)
#define IRCB(__message, __decode_color, __keep_trailing_spaces, \
__func_cb) \
@@ -111,7 +111,7 @@ typedef int (t_irc_recv_func)(struct t_irc_server *server,
const char *host, const char *command,
int ignored,
int argc, char **argv, char **argv_eol,
char **params, int num_params);
const char **params, int num_params);
struct t_irc_protocol_msg
{
@@ -46,6 +46,7 @@ extern const char *irc_protocol_nick_address (struct t_irc_server *server,
struct t_irc_nick *nick,
const char *nickname,
const char *address);
extern char *irc_protocol_string_params (const char **params, int start_arg);
extern char *irc_protocol_cap_to_enable (const char *capabilities,
int sasl_requested);
}
@@ -305,6 +306,43 @@ TEST(IrcProtocol, ParseTime)
LONGS_EQUAL(1547386699, irc_protocol_parse_time ("1547386699"));
}
/*
* Tests functions:
* irc_protocol_string_params
*/
TEST(IrcProtocol, StringParams)
{
char *str;
const char *params_empty[] = { "", NULL };
const char *params_1[] = { "param1", NULL };
const char *params_2[] = { "param1", "param2", NULL };
const char *params_3[] = { "param1", "param2", "param3", NULL };
/* invalid arguments */
WEE_TEST_STR("", irc_protocol_string_params (NULL, -1));
WEE_TEST_STR("", irc_protocol_string_params (NULL, 0));
/* empty parameter */
WEE_TEST_STR("", irc_protocol_string_params (params_empty, 0));
WEE_TEST_STR("", irc_protocol_string_params (params_empty, 1));
/* one parameter */
WEE_TEST_STR("param1", irc_protocol_string_params (params_1, 0));
WEE_TEST_STR("", irc_protocol_string_params (params_1, 1));
/* two parameters */
WEE_TEST_STR("param1 param2", irc_protocol_string_params (params_2, 0));
WEE_TEST_STR("param2", irc_protocol_string_params (params_2, 1));
WEE_TEST_STR("", irc_protocol_string_params (params_2, 2));
/* three parameters */
WEE_TEST_STR("param1 param2 param3", irc_protocol_string_params (params_3, 0));
WEE_TEST_STR("param2 param3", irc_protocol_string_params (params_3, 1));
WEE_TEST_STR("param3", irc_protocol_string_params (params_3, 2));
WEE_TEST_STR("", irc_protocol_string_params (params_3, 3));
}
TEST_GROUP(IrcProtocolWithServer)
{
void server_recv (const char *command)