annotate tests/src/libirccd/irc/main.cpp @ 670:95ac3ace1610

Common: introduce new io code To avoid code duplication in accept, connect, reading and writing we add a new set of classes in `io` namespaces located in the following files: - stream.hpp, acceptor.hpp, connector.hpp These classes consist of pure abstract interfaces for I/O. Then we reimplement them in the following files: - socket_stream.hpp, socket_acceptor.hpp, socket_connector.hpp, - tls_stream.hpp, tls_acceptor.hpp, tls_conncetor.hpp (for SSL). This allows future independant connections such as DBus, fifo or any other fancy optional stuff. We also no longer need large class hierarchy such as `connection` for irccdctl controller or transport_server, transport_client classes.
author David Demelier <markand@malikania.fr>
date Tue, 10 Apr 2018 21:20:30 +0200
parents 27587ff92a64
children e8c4ba5ed1c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
549
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * main.cpp -- test irc functions
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
628
27587ff92a64 Misc: update copyrights
David Demelier <markand@malikania.fr>
parents: 611
diff changeset
4 * Copyright (c) 2013-2018 David Demelier <markand@malikania.fr>
549
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #define BOOST_TEST_MODULE "irc"
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <boost/test/unit_test.hpp>
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
596
35832b7f4f9d Irccd: move files to daemon folder, closes #731
David Demelier <markand@malikania.fr>
parents: 581
diff changeset
22 #include <irccd/daemon/irc.hpp>
549
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
23
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 namespace irccd {
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
25
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 BOOST_AUTO_TEST_SUITE(message_parse)
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
27
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 BOOST_AUTO_TEST_CASE(no_prefix)
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 {
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 irc::message m;
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
31
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 BOOST_TEST(!m);
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
33
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 m = irc::message::parse("PRIVMSG jean :bonjour à toi");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 BOOST_TEST(m);
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 BOOST_TEST(m.prefix().empty());
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 BOOST_TEST(m.command() == "PRIVMSG");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 BOOST_TEST(m.args().size() == 2U);
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 BOOST_TEST(m.args()[0] == "jean");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 BOOST_TEST(m.args()[1] == "bonjour à toi");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 }
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 BOOST_AUTO_TEST_CASE(prefix)
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 {
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 irc::message m;
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
46
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 BOOST_TEST(!m);
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 m = irc::message::parse(":127.0.0.1 PRIVMSG jean :bonjour à toi");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 BOOST_TEST(m);
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 BOOST_TEST(m.prefix() == "127.0.0.1");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 BOOST_TEST(m.command() == "PRIVMSG");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 BOOST_TEST(m.args().size() == 2U);
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 BOOST_TEST(m.args()[0] == "jean");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 BOOST_TEST(m.args()[1] == "bonjour à toi");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 }
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 BOOST_AUTO_TEST_SUITE_END()
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 BOOST_AUTO_TEST_SUITE(user_parse)
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
61
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 BOOST_AUTO_TEST_CASE(basics)
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 {
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 auto user = irc::user::parse("jean!~jean@127.0.0.1");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
65
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 BOOST_TEST(user.nick() == "jean");
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 BOOST_TEST(user.host() == "~jean@127.0.0.1");
550
64cb98dd8e9d Irccd: finish custom IRC library, closes #581
David Demelier <markand@malikania.fr>
parents: 549
diff changeset
68
64cb98dd8e9d Irccd: finish custom IRC library, closes #581
David Demelier <markand@malikania.fr>
parents: 549
diff changeset
69 auto usersimple = irc::user::parse("jean");
64cb98dd8e9d Irccd: finish custom IRC library, closes #581
David Demelier <markand@malikania.fr>
parents: 549
diff changeset
70
64cb98dd8e9d Irccd: finish custom IRC library, closes #581
David Demelier <markand@malikania.fr>
parents: 549
diff changeset
71 BOOST_TEST(usersimple.nick() == "jean");
64cb98dd8e9d Irccd: finish custom IRC library, closes #581
David Demelier <markand@malikania.fr>
parents: 549
diff changeset
72 BOOST_TEST(usersimple.host().empty());
549
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 }
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
74
550
64cb98dd8e9d Irccd: finish custom IRC library, closes #581
David Demelier <markand@malikania.fr>
parents: 549
diff changeset
75 BOOST_AUTO_TEST_CASE(empty)
549
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 {
550
64cb98dd8e9d Irccd: finish custom IRC library, closes #581
David Demelier <markand@malikania.fr>
parents: 549
diff changeset
77 auto user = irc::user::parse("");
549
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
78
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 BOOST_TEST(user.nick().empty());
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 BOOST_TEST(user.host().empty());
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 }
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
82
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 BOOST_AUTO_TEST_SUITE_END()
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
68032209609d Irccd: initial custom IRC code
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 } // !irccd