terom@168: #include "irc_net.h" terom@168: #include "test.h" terom@168: terom@168: struct irc_net* setup_irc_net_unregistered (struct transport_test *tp) terom@168: { terom@168: struct irc_net *net; terom@168: struct irc_net_info net_info = { terom@168: .register_info = { terom@168: "nick", "user", "realname" terom@168: }, terom@168: }; terom@168: struct error_info err; terom@168: terom@168: // create the irc_net terom@168: net_info.transport = transport_test_cast(tp); terom@168: assert_success(irc_net_create(&net, &net_info, &err)); terom@168: terom@168: // test register output terom@168: assert_transport_data(tp, "NICK nick\r\nUSER user 0 * realname\r\n"); terom@168: terom@168: // ok terom@168: return net; terom@168: } terom@168: terom@168: void test_irc_net_welcome (struct transport_test *tp, struct irc_net *net) terom@168: { terom@168: // registration reply terom@168: transport_test_push_fmt(tp, "001 mynick :Blaa blaa blaa\r\n"); terom@168: assert(net->conn->registered); terom@168: assert_strcmp(net->conn->nickname, "mynick"); terom@168: terom@168: } terom@168: terom@168: struct irc_net* setup_irc_net (struct transport_test *tp) terom@168: { terom@168: struct irc_net *net; terom@168: terom@168: net = setup_irc_net_unregistered(tp); terom@168: test_irc_net_welcome(tp, net); terom@168: terom@168: // ok terom@168: return net; terom@168: } terom@168: terom@168: void test_irc_net (void) terom@168: { terom@168: struct transport_test *tp = setup_transport_test(); terom@168: terom@168: // XXX: test connected/connecting/disconnected/etc stuff terom@168: terom@168: // create the network terom@168: log_info("test irc_net_create"); terom@168: struct irc_net *net = setup_irc_net_unregistered(tp); terom@168: terom@168: // send the registration reply terom@168: log_info("test irc_conn_on_RPL_WELCOME"); terom@168: test_irc_net_welcome(tp, net); terom@168: terom@168: // test errors by setting EOF terom@168: log_info("test irc_net_error"); terom@168: transport_test_push_eof(tp); terom@168: assert(net->conn == NULL); terom@168: terom@168: // cleanup terom@168: irc_net_destroy(net); terom@168: } terom@168: