X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Socket%2FINetAddressing.test.cc;h=40b3aa6b6fc43ac00e2c08b5bca3b7fd67c1c03a;hb=9a988902090d28007578e93bffd809f6bd913155;hp=04b66009c3480b4d653049f0e1bc5acb117447f6;hpb=ac6a813d9d99f7add4e13aff7a4bcd314d5604a6;p=senf.git diff --git a/Socket/INetAddressing.test.cc b/Socket/INetAddressing.test.cc index 04b6600..40b3aa6 100644 --- a/Socket/INetAddressing.test.cc +++ b/Socket/INetAddressing.test.cc @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // Stefan Bund @@ -41,10 +41,10 @@ BOOST_AUTO_UNIT_TEST(inet4Address) { INet4Address addr; - + addr = "127.0.0.1:12345"; } - + { INet4Address addr1("127.0.0.1:12345"); INet4Address addr2(std::string("127.0.0.1:12345")); @@ -77,6 +77,87 @@ BOOST_AUTO_UNIT_TEST(inet4Address) BOOST_AUTO_UNIT_TEST(inet6Address) { + using senf::INet6Address; + using senf::INet6SocketAddress; + using senf::InvalidINetAddressException; + + { + 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 = "", InvalidINetAddressException ); + 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))), + InvalidINetAddressException ); + BOOST_CHECK_THROW( INet6Address(std::make_pair(&data[0],&data[0]+sizeof(data)-2)), + InvalidINetAddressException ); + } + + { + INet6SocketAddress addr; + BOOST_CHECK_EQUAL( addr.host(), "::" ); + BOOST_CHECK_EQUAL( addr.port(), 0u ); + BOOST_CHECK_EQUAL( addr.iface(), "" ); + addr = "[12::21]:12345"; + BOOST_CHECK_EQUAL( addr.host(), "12::21" ); + BOOST_CHECK_EQUAL( addr.port(), 12345u ); + BOOST_CHECK_EQUAL( addr.iface(), "" ); + BOOST_CHECK_EQUAL( addr, INet6SocketAddress("[12::21]:12345") ); + } + + { + INet6SocketAddress addr ("::1", 1); + BOOST_CHECK_EQUAL( addr, "[::1]:1" ); + BOOST_CHECK_EQUAL( addr.iface(), "" ); + } + + { + INet6SocketAddress addr ("::1", 1, "lo"); + BOOST_CHECK_EQUAL( addr, "[::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 = "", InvalidINetAddressException ); + BOOST_CHECK_THROW( addr = "[::1]", InvalidINetAddressException ); + BOOST_CHECK_THROW( addr = "[::1]1234", InvalidINetAddressException ); + addr = "[12::21@lo]:12345"; + BOOST_CHECK_EQUAL( addr.address(), "[12::21@lo]:12345" ); + BOOST_CHECK_EQUAL( addr.host(), "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" ); + } } ///////////////////////////////cc.e//////////////////////////////////////// @@ -85,5 +166,8 @@ BOOST_AUTO_UNIT_TEST(inet6Address) // Local Variables: // mode: c++ +// fill-column: 100 // c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" // End: