X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FINet%2FINetAddressing.test.cc;h=52f94aacd5c8f71f20abb7d7c5ded8179232f812;hb=1ad3873b372da6187b1fbc645bf276287d2efb54;hp=c8c8024952c1a626ce6d9c8fac50fe1bb73eedac;hpb=ca133fb5d47ad2bd90d95e21626df59fdd78571a;p=senf.git diff --git a/Socket/Protocols/INet/INetAddressing.test.cc b/Socket/Protocols/INet/INetAddressing.test.cc index c8c8024..52f94aa 100644 --- a/Socket/Protocols/INet/INetAddressing.test.cc +++ b/Socket/Protocols/INet/INetAddressing.test.cc @@ -28,13 +28,13 @@ // Custom includes #include "INetAddressing.hh" -#include +#include "../../../Utils/auto_unit_test.hh" #include #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// -BOOST_AUTO_UNIT_TEST(inet4Address) +BOOST_AUTO_UNIT_TEST(inet4SocketAddress) { using senf::INet4SocketAddress; using senf::INet4Address; @@ -45,7 +45,7 @@ BOOST_AUTO_UNIT_TEST(inet4Address) BOOST_CHECK( ! addr ); addr = INet4SocketAddress("127.0.0.1:12345"); - BOOST_CHECK ( addr != INet4SocketAddress() ); + BOOST_CHECK ( addr != INet4SocketAddress("127.0.0.2:12345") ); } { @@ -57,7 +57,8 @@ BOOST_AUTO_UNIT_TEST(inet4Address) INet4SocketAddress(INet4Address::Loopback,12345) ); BOOST_CHECK_THROW( INet4SocketAddress("127.0.0.1"), INet4SocketAddress::SyntaxException ); - BOOST_CHECK_THROW( INet4SocketAddress("foo@bar:12345"), INet4Address::SyntaxException ); + BOOST_CHECK_THROW( INet4SocketAddress("foo:bar"), INet4SocketAddress::SyntaxException ); + BOOST_CHECK_THROW( INet4SocketAddress(":12345"), INet4SocketAddress::SyntaxException ); BOOST_CHECK_THROW( INet4SocketAddress("127.0.0.1:1234a"), INet4SocketAddress::SyntaxException ); BOOST_CHECK_EQUAL( INet4SocketAddress("127.0.0.1:12345").address(), INet4Address::Loopback ); @@ -78,87 +79,54 @@ BOOST_AUTO_UNIT_TEST(inet4Address) } } -BOOST_AUTO_UNIT_TEST(inet6Address) +BOOST_AUTO_UNIT_TEST(inet6SocketAddress) { using senf::INet6Address; using senf::INet6SocketAddress; { - INet6Address addr1 ("0102:0304:0506:0708:090A:0B0C:0D0E:0F00"); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[0], 1 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[1], 2 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[2], 3 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[3], 4 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[4], 5 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[5], 6 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[6], 7 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[7], 8 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[8], 9 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[9], 10 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[10], 11 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[11], 12 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[12], 13 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[13], 14 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[14], 15 ); - BOOST_CHECK_EQUAL( addr1.addr().s6_addr[15], 0 ); - INet6Address addr2; - BOOST_CHECK_EQUAL( addr2, "::" ); - addr2 = "::1"; - BOOST_CHECK( addr1 != addr2 ); - addr1 ="::1"; - BOOST_CHECK_EQUAL( addr1, addr2 ); - BOOST_CHECK_EQUAL( addr1.address(),"::1" ); - addr1.clear(); - addr2 = "::"; - BOOST_CHECK_EQUAL( addr1, addr2 ); - BOOST_CHECK_THROW( addr1 = "", INet6Address::SyntaxException ); - BOOST_CHECK_EQUAL( boost::lexical_cast(addr1), "::" ); - unsigned char data[] = { 0x12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x21, 0 }; - INet6Address addr3 (std::make_pair(&data[0],&data[0]+sizeof(data)-1)); - BOOST_CHECK_EQUAL( addr3, "1200::21" ); - BOOST_CHECK_THROW( INet6Address(std::make_pair(&data[0],&data[0]+sizeof(data))), - INet6Address::SyntaxException ); - BOOST_CHECK_THROW( INet6Address(std::make_pair(&data[0],&data[0]+sizeof(data)-2)), - INet6Address::SyntaxException ); - } - - { INet6SocketAddress addr; - BOOST_CHECK_EQUAL( addr.host(), "::" ); + BOOST_CHECK_EQUAL( boost::lexical_cast(addr.address()), "::" ); BOOST_CHECK_EQUAL( addr.port(), 0u ); BOOST_CHECK_EQUAL( addr.iface(), "" ); - addr = "[12::21]:12345"; - BOOST_CHECK_EQUAL( addr.host(), "12::21" ); + addr = senf::INet6SocketAddress("[12::21]:12345"); + BOOST_CHECK_EQUAL( addr.address(), INet6Address::from_string("12::21") ); BOOST_CHECK_EQUAL( addr.port(), 12345u ); BOOST_CHECK_EQUAL( addr.iface(), "" ); BOOST_CHECK_EQUAL( addr, INet6SocketAddress("[12::21]:12345") ); + BOOST_CHECK_NO_THROW( INet6SocketAddress("www.6bone.net:80") ); + addr = senf::INet6SocketAddress("1.2.3.4:12345", INet6Address::ResolveINet4); + BOOST_CHECK_EQUAL( addr.address(), INet6Address::from_string("::ffff:1.2.3.4") ); + BOOST_CHECK_EQUAL( addr.port(), 12345u ); } { - INet6SocketAddress addr ("::1", 1); - BOOST_CHECK_EQUAL( addr, "[::1]:1" ); + INet6SocketAddress addr (INet6Address::from_string("::1"), 1); + BOOST_CHECK_EQUAL( addr,senf::INet6SocketAddress("[::1]:1") ); BOOST_CHECK_EQUAL( addr.iface(), "" ); } { - INet6SocketAddress addr ("::1", 1, "lo"); - BOOST_CHECK_EQUAL( addr, "[::1@lo]:1" ); + INet6SocketAddress addr (INet6Address::Loopback, 1, "lo"); + BOOST_CHECK_EQUAL( addr, senf::INet6SocketAddress("[::1%lo]:1") ); BOOST_CHECK_EQUAL( addr.iface(), "lo" ); addr.iface(""); BOOST_CHECK_EQUAL( addr.iface(), "" ); addr.port(100u); BOOST_CHECK_EQUAL( addr.port(), 100u ); - addr.host("::2"); - BOOST_CHECK_EQUAL( addr.host(), "::2" ); - BOOST_CHECK_THROW( addr = "", INet6SocketAddress::SyntaxException ); - BOOST_CHECK_THROW( addr = "[::1]", INet6SocketAddress::SyntaxException ); - BOOST_CHECK_THROW( addr = "[::1]1234", INet6SocketAddress::SyntaxException ); - addr = "[12::21@lo]:12345"; - BOOST_CHECK_EQUAL( addr.address(), "[12::21@lo]:12345" ); - BOOST_CHECK_EQUAL( addr.host(), "12::21" ); + addr.address(INet6Address::from_string("::2")); + BOOST_CHECK_EQUAL( addr.address(), INet6Address::from_string("::2") ); + BOOST_CHECK_THROW( senf::INet6SocketAddress(""), INet6SocketAddress::SyntaxException ); + BOOST_CHECK_THROW( senf::INet6SocketAddress("[::1]"), + INet6SocketAddress::SyntaxException ); + BOOST_CHECK_THROW( senf::INet6SocketAddress("[::1]1234"), + INet6SocketAddress::SyntaxException ); + addr = senf::INet6SocketAddress("[12::21%lo]:12345"); + BOOST_CHECK_EQUAL( boost::lexical_cast(addr), "[12::21%lo]:12345" ); + BOOST_CHECK_EQUAL( addr.address(), INet6Address::from_string("12::21") ); BOOST_CHECK_EQUAL( addr.port(), 12345u ); BOOST_CHECK_EQUAL( addr.iface(), "lo" ); - BOOST_CHECK_EQUAL( boost::lexical_cast(addr), "[12::21@lo]:12345" ); + BOOST_CHECK_EQUAL( boost::lexical_cast(addr), "[12::21%lo]:12345" ); } }