X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FProtocols%2FINet%2FINet6Address.test.cc;h=f56ce6ed598bdd3b7a7dfd5b645e24f81b4c7a87;hb=a1fdb7bb122f0b05be809a922d4b7ef5e125fa67;hp=6a6c1d7d2f90c33953af628204630011ee2bf511;hpb=51c2aabf6c125ff09177fc2fa742755b6c5a74c6;p=senf.git diff --git a/Socket/Protocols/INet/INet6Address.test.cc b/Socket/Protocols/INet/INet6Address.test.cc index 6a6c1d7..f56ce6e 100644 --- a/Socket/Protocols/INet/INet6Address.test.cc +++ b/Socket/Protocols/INet/INet6Address.test.cc @@ -21,14 +21,14 @@ // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. /** \file - \brief INet6Address.test unit tests */ + \brief INet6Address unit tests */ //#include "INet6Address.test.hh" //#include "INet6Address.test.ih" // Custom includes -#include #include "INet6Address.hh" +#include "../../../Utils/String.hh" #include "../../../Utils/auto_unit_test.hh" #include @@ -63,7 +63,7 @@ BOOST_AUTO_UNIT_TEST(inet6Address) BOOST_CHECK_EQUAL( addr1[15], 0 ); BOOST_CHECK( INet6Address::from_string("www.6bone.net") != INet6Address::None ); INet6Address addr2; - BOOST_CHECK_EQUAL( boost::lexical_cast(addr2), "::" ); + BOOST_CHECK_EQUAL( senf::str(addr2), "::" ); addr2 = INet6Address::from_string("::1"); BOOST_CHECK( addr1 != addr2 ); addr1 =INet6Address::from_string("::1"); @@ -72,7 +72,7 @@ BOOST_AUTO_UNIT_TEST(inet6Address) addr2 = INet6Address::from_string("::"); BOOST_CHECK_EQUAL( addr1, addr2 ); BOOST_CHECK_THROW( INet6Address::from_string(""), AddressSyntaxException ); - BOOST_CHECK_EQUAL( boost::lexical_cast(addr1), "::" ); + BOOST_CHECK_EQUAL( senf::str(addr1), "::" ); unsigned char data[] = { 0x12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x21, 0 }; INet6Address addr3 (INet6Address::from_data(data)); BOOST_CHECK_EQUAL( addr3, INet6Address::from_string("1200::21") ); @@ -118,11 +118,11 @@ BOOST_AUTO_UNIT_TEST(inet6Address) BOOST_CHECK_EQUAL( INet6Address(0xff0f).scope(), INet6Address::ReservedScope ); BOOST_CHECK_EQUAL( INet6Address(0u,0u,0u,0u,0u,0xFFFF,0x0102u,0x0304).inet4address(), INet4Address(0x01020304) ); - BOOST_CHECK( INet6Address(0u,0u,0u,0u,0u,0u,0x0102u,0x0304).ipv4Compatible() ); - BOOST_CHECK( INet6Address(0u,0u,0u,0u,0u,0xFFFF,0x0102,0x0304).ipv4Mapped() ); - BOOST_CHECK( ! addr.ipv4Compatible() ); - BOOST_CHECK( ! addr.ipv4Mapped() ); - + BOOST_CHECK( INet6Address(0u,0u,0u,0u,0u,0u,0x0102u,0x0304).inet4Compatible() ); + BOOST_CHECK( INet6Address(0u,0u,0u,0u,0u,0xFFFF,0x0102,0x0304).inet4Mapped() ); + BOOST_CHECK( ! addr.inet4Compatible() ); + BOOST_CHECK( ! addr.inet4Mapped() ); + BOOST_CHECK( INet6Address::AllNodes.globalMulticastAddr() ); BOOST_CHECK( ! INet6Address::AllNodes.prefixMulticastAddr() ); BOOST_CHECK( ! INet6Address::AllNodes.embeddedRpAddr() ); @@ -132,6 +132,28 @@ BOOST_AUTO_UNIT_TEST(inet6Address) } { + std::stringstream str; + INet6Address addr; + str >> addr; + BOOST_CHECK( str.fail()); + } + { + std::stringstream str ("invalid.host.fhg.de"); + INet6Address addr; + str >> addr; + BOOST_CHECK( str.fail()); + } + { + std::stringstream str; + INet6Address addr (INet6Address::from_string("2001:dead:beef::1002:3004")); + str << addr; + BOOST_CHECK_EQUAL( str.str(), "2001:dead:beef::1002:3004"); + str >> addr; + BOOST_CHECK( ! str.fail()); + BOOST_CHECK_EQUAL(addr, INet6Address::from_string("2001:dead:beef::1002:3004")); + } + + { INet6Address addr; addr.network(0x2000010203040506ull); BOOST_CHECK_EQUAL( addr, INet6Address(0x2000u,0x0102u,0x0304u,0x0506u) ); @@ -142,34 +164,40 @@ BOOST_AUTO_UNIT_TEST(inet6Address) BOOST_AUTO_UNIT_TEST(inet6Network) { - senf::INet6Network net (senf::INet6Address(0xFF14u,0x1234u),32u); - BOOST_CHECK_EQUAL( boost::lexical_cast(net.address()), "ff14:1234::"); + using senf::INet6Address; + using senf::INet6Network; + using senf::AddressSyntaxException; + + INet6Network net (INet6Address(0xFF14u,0x1234u),32u); + BOOST_CHECK_EQUAL( senf::str(net.address()), "ff14:1234::"); BOOST_CHECK_EQUAL( net.prefix_len(), 32u ); BOOST_CHECK( net ); - BOOST_CHECK( ! senf::INet6Network() ); - - senf::INet6Network net2 ("2001:db8:1234::/44"); - BOOST_CHECK_EQUAL( net2.address(), senf::INet6Address::from_string("2001:db8:1230::") ); + BOOST_CHECK( ! INet6Network() ); + + INet6Network net2 ("2001:db8:1234::/44"); + BOOST_CHECK_EQUAL( net2.address(), INet6Address::from_string("2001:db8:1230::") ); BOOST_CHECK_EQUAL( net2.prefix_len(), 44u ); BOOST_CHECK( net != net2 ); - BOOST_CHECK( net.match(senf::INet6Address::from_string("ff14:1234::1")) ); - BOOST_CHECK( ! net2.match(senf::INet6Address::from_string("ff13:1234::1")) ); + BOOST_CHECK( net.match(INet6Address::from_string("ff14:1234::1")) ); + BOOST_CHECK( ! net2.match(INet6Address::from_string("ff13:1234::1")) ); BOOST_CHECK( ! net.match(net2) ); - BOOST_CHECK( net2.match(senf::INet6Network("2001:db8:1234::/48")) ); - BOOST_CHECK( ! net2.match(senf::INet6Network("2001:db8:1234::/32")) ); + BOOST_CHECK( net2.match(INet6Network("2001:db8:1234::/48")) ); + BOOST_CHECK( ! net2.match(INet6Network("2001:db8:1234::/32")) ); - BOOST_CHECK_EQUAL( boost::lexical_cast(net2), "2001:db8:1230::/44" ); + BOOST_CHECK_EQUAL( senf::str(net2), "2001:db8:1230::/44" ); - BOOST_CHECK_EQUAL( net2.host(0x1234u), senf::INet6Address::from_string("2001:db8:1230::1234") ); - BOOST_CHECK_EQUAL( boost::lexical_cast(net2.subnet(2u,48u)), - "2001:db8:1232::/48" ); + BOOST_CHECK_EQUAL( net2.host(0x1234u), INet6Address::from_string("2001:db8:1230::1234") ); + BOOST_CHECK_EQUAL( senf::str(net2.subnet(2u,48u)), "2001:db8:1232::/48" ); + + BOOST_CHECK_THROW( INet6Network(""), AddressSyntaxException ); + BOOST_CHECK_THROW( INet6Network("2001:db8:1234::/beef"), AddressSyntaxException ); } ///////////////////////////////cc.e//////////////////////////////////////// #undef prefix_ - + // Local Variables: // mode: c++ // fill-column: 100