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