src/test/irc_net.c
branchnew-transport
changeset 168 a58ad50911fc
equal deleted inserted replaced
167:0d2d8ca879d8 168:a58ad50911fc
       
     1 #include "irc_net.h"
       
     2 #include "test.h"
       
     3 
       
     4 struct irc_net* setup_irc_net_unregistered (struct transport_test *tp)
       
     5 {
       
     6     struct irc_net *net;
       
     7     struct irc_net_info net_info = {
       
     8         .register_info = {
       
     9             "nick", "user", "realname"
       
    10         },
       
    11     };
       
    12     struct error_info err;
       
    13 
       
    14     // create the irc_net
       
    15     net_info.transport = transport_test_cast(tp);
       
    16     assert_success(irc_net_create(&net, &net_info, &err));
       
    17 
       
    18     // test register output
       
    19     assert_transport_data(tp, "NICK nick\r\nUSER user 0 * realname\r\n");
       
    20     
       
    21     // ok
       
    22     return net; 
       
    23 }
       
    24 
       
    25 void test_irc_net_welcome (struct transport_test *tp, struct irc_net *net)
       
    26 {
       
    27     // registration reply
       
    28     transport_test_push_fmt(tp, "001 mynick :Blaa blaa blaa\r\n");
       
    29     assert(net->conn->registered);
       
    30     assert_strcmp(net->conn->nickname, "mynick");
       
    31 
       
    32 }
       
    33 
       
    34 struct irc_net* setup_irc_net (struct transport_test *tp)
       
    35 {
       
    36     struct irc_net *net;   
       
    37 
       
    38     net = setup_irc_net_unregistered(tp);
       
    39     test_irc_net_welcome(tp, net);
       
    40     
       
    41     // ok
       
    42     return net;
       
    43 }
       
    44 
       
    45 void test_irc_net (void)
       
    46 {
       
    47     struct transport_test *tp = setup_transport_test();
       
    48 
       
    49     // XXX: test connected/connecting/disconnected/etc stuff
       
    50     
       
    51     // create the network
       
    52     log_info("test irc_net_create");
       
    53     struct irc_net *net = setup_irc_net_unregistered(tp);
       
    54 
       
    55     // send the registration reply
       
    56     log_info("test irc_conn_on_RPL_WELCOME");
       
    57     test_irc_net_welcome(tp, net);
       
    58 
       
    59     // test errors by setting EOF
       
    60     log_info("test irc_net_error");
       
    61     transport_test_push_eof(tp);
       
    62     assert(net->conn == NULL);
       
    63 
       
    64     // cleanup
       
    65     irc_net_destroy(net);
       
    66 }
       
    67