168
|
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 |
|