add irc_conn_self_nick test
authorTero Marttila <terom@fixme.fi>
Thu, 26 Mar 2009 23:29:06 +0200
changeset 76 b3672e3d9665
parent 75 ff6272398d2e
child 77 5478ade62546
add irc_conn_self_nick test
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,
-
 };
 
 /**