# HG changeset patch # User Tero Marttila # Date 1238102946 -7200 # Node ID b3672e3d9665563068f0707403896b2dcbf77b61 # Parent ff6272398d2ed4967d3415bc00f7c15243edbfc6 add irc_conn_self_nick test diff -r ff6272398d2e -r b3672e3d9665 src/test.c --- a/src/test.c Thu Mar 26 23:15:55 2009 +0200 +++ b/src/test.c Thu Mar 26 23:29:06 2009 +0200 @@ -387,13 +387,14 @@ line_proto_release(lp); } -struct _test_irc_conn_ctx { +struct test_conn_ctx { + /** Callback flags */ bool on_registered, on_TEST, on_error, on_quit; }; static void _conn_on_registered (struct irc_conn *conn, void *arg) { - struct _test_irc_conn_ctx *ctx = arg; + struct test_conn_ctx *ctx = arg; (void) conn; @@ -404,7 +405,7 @@ static void _conn_on_error (struct irc_conn *conn, struct error_info *err, void *arg) { - struct _test_irc_conn_ctx *ctx = arg; + struct test_conn_ctx *ctx = arg; (void) conn; (void) err; @@ -416,7 +417,7 @@ static void _conn_on_quit (struct irc_conn *conn, void *arg) { - struct _test_irc_conn_ctx *ctx = arg; + struct test_conn_ctx *ctx = arg; (void) conn; @@ -427,7 +428,7 @@ static void _conn_on_TEST (const struct irc_line *line, void *arg) { - struct _test_irc_conn_ctx *ctx = arg; + struct test_conn_ctx *ctx = arg; assert_null(line->source); assert_strcmp(line->command, "TEST"); @@ -450,7 +451,10 @@ { NULL, NULL } }; -struct irc_conn* setup_irc_conn (struct sock_test *sock, bool noisy, struct _test_irc_conn_ctx *ctx) +/** + * Create and return a new irc_conn with the given ctx (will be initialized to zero). + */ +struct irc_conn* setup_irc_conn (struct sock_test *sock, bool noisy, struct test_conn_ctx *ctx) { struct irc_conn *conn; struct error_info err; @@ -458,6 +462,9 @@ "nick", "user", "realname" }; + // init the ctx + memset(ctx, 0, sizeof(*ctx)); + // create the irc_conn assert_success(irc_conn_create(&conn, SOCK_TEST_BASE(sock), &_conn_callbacks, ctx, &err)); @@ -478,16 +485,10 @@ void test_irc_conn (void) { - struct sock_test *sock; - struct irc_conn *conn; - struct _test_irc_conn_ctx ctx = { false, false, false, false }; + struct test_conn_ctx ctx; + struct sock_test *sock = setup_sock_test(); + struct irc_conn *conn = setup_irc_conn(sock, true, &ctx); - // create the test socket - assert((sock = sock_test_create())); - - // setup the basic irc_conn - conn = setup_irc_conn(sock, true, &ctx); - // add our test handlers assert_success(irc_conn_add_cmd_handlers(conn, _conn_handlers, &ctx)); @@ -518,6 +519,20 @@ irc_conn_destroy(conn); } +void test_irc_conn_self_nick (void) +{ + struct test_conn_ctx ctx; + struct sock_test *sock = setup_sock_test(); + struct irc_conn *conn = setup_irc_conn(sock, false, &ctx); + + log_info("test irc_conn_on_NICK"); + test_sock_push(sock, ":mynick!user@somehost NICK mynick2\r\n"); + assert_strcmp(conn->nickname, "mynick2"); + + // cleanup + irc_conn_destroy(conn); +} + struct test_chan_ctx { /** The channel we're supposed to be testing */ struct irc_chan *chan; @@ -845,7 +860,7 @@ { "line_proto", &test_line_proto }, // XXX: irc_line_parse_invalid_prefix { "irc_conn", &test_irc_conn }, - // XXX: irc_conn_self_nick + { "irc_conn_self_nick", &test_irc_conn_self_nick }, { "irc_net", &test_irc_net }, { "irc_chan_add_offline", &test_irc_chan_add_offline }, { "irc_chan_namreply", &test_irc_chan_namreply }, @@ -864,7 +879,6 @@ /** Options without short names */ _OPT_EXT_BEGIN = 0x00ff, - }; /**