Logo Search packages:      
Sourcecode: poco version File versions  Download package

IPAddressTest.cpp

//
// IPAddressTest.cpp
//
// $Id: //poco/1.2/Net/testsuite/src/IPAddressTest.cpp#1 $
//
// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
// and Contributors.
//
// Permission is hereby granted, free of charge, to any person or organization
// obtaining a copy of the software and accompanying documentation covered by
// this license (the "Software") to use, reproduce, display, distribute,
// execute, and transmit the Software, and to prepare derivative works of the
// Software, and to permit third-parties to whom the Software is furnished to
// do so, all subject to the following:
// 
// The copyright notices in the Software and this entire statement, including
// the above license grant, this restriction and the following disclaimer,
// must be included in all copies of the Software, in whole or in part, and
// all derivative works of the Software, unless such copies or derivative
// works are solely in the form of machine-executable object code generated by
// a source language processor.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
//


#include "IPAddressTest.h"
#include "CppUnit/TestCaller.h"
#include "CppUnit/TestSuite.h"
#include "Poco/Net/IPAddress.h"
#include "Poco/Net/NetException.h"


using Poco::Net::IPAddress;
using Poco::Net::InvalidAddressException;


IPAddressTest::IPAddressTest(const std::string& name): CppUnit::TestCase(name)
{
}


IPAddressTest::~IPAddressTest()
{
}


void IPAddressTest::testStringConv()
{
      IPAddress ia1("127.0.0.1");
      assert (ia1.family() == IPAddress::IPv4);
      assert (ia1.toString() == "127.0.0.1");
      
      IPAddress ia2("192.168.1.120");
      assert (ia2.family() == IPAddress::IPv4);
      assert (ia2.toString() == "192.168.1.120");
      
      IPAddress ia3("255.255.255.255");
      assert (ia3.family() == IPAddress::IPv4);
      assert (ia3.toString() == "255.255.255.255");

      IPAddress ia4("0.0.0.0");
      assert (ia4.family() == IPAddress::IPv4);
      assert (ia4.toString() == "0.0.0.0");
}


void IPAddressTest::testStringConv6()
{
#ifdef POCO_HAVE_IPv6
      IPAddress ia1("1080:0:0:0:8:600:200A:425C");
      assert (ia1.family() == IPAddress::IPv6);
      assert (ia1.toString() == "1080::8:600:200A:425C");
      
      IPAddress ia2("1080::8:600:200A:425C");
      assert (ia2.family() == IPAddress::IPv6);
      assert (ia2.toString() == "1080::8:600:200A:425C");
      
      IPAddress ia3("::192.168.1.120");
      assert (ia3.family() == IPAddress::IPv6);
      assert (ia3.toString() == "::192.168.1.120");

      IPAddress ia4("::FFFF:192.168.1.120");
      assert (ia4.family() == IPAddress::IPv6);
      assert (ia4.toString() == "::FFFF:192.168.1.120");
#endif
}


void IPAddressTest::testParse()
{
      IPAddress ip;
      assert (IPAddress::tryParse("192.168.1.120", ip));
      
      assert (!IPAddress::tryParse("192.168.1.280", ip));

      ip = IPAddress::parse("192.168.1.120");
      try
      {
            ip = IPAddress::parse("192.168.1.280");
            fail("bad address - must throw");
      }     
      catch (InvalidAddressException&)
      {
      }
}


void IPAddressTest::testClassification()
{
      IPAddress ip1("0.0.0.0"); // wildcard
      assert (ip1.isWildcard());
      assert (!ip1.isBroadcast());
      assert (!ip1.isLoopback());
      assert (!ip1.isMulticast());
      assert (!ip1.isUnicast());
      assert (!ip1.isLinkLocal());
      assert (!ip1.isSiteLocal());
      assert (!ip1.isWellKnownMC());
      assert (!ip1.isNodeLocalMC());
      assert (!ip1.isLinkLocalMC());
      assert (!ip1.isSiteLocalMC());
      assert (!ip1.isOrgLocalMC());
      assert (!ip1.isGlobalMC());
            
      IPAddress ip2("255.255.255.255"); // broadcast
      assert (!ip2.isWildcard());
      assert (ip2.isBroadcast());
      assert (!ip2.isLoopback());
      assert (!ip2.isMulticast());
      assert (!ip2.isUnicast());
      assert (!ip2.isLinkLocal());
      assert (!ip2.isSiteLocal());
      assert (!ip2.isWellKnownMC());
      assert (!ip2.isNodeLocalMC());
      assert (!ip2.isLinkLocalMC());
      assert (!ip2.isSiteLocalMC());
      assert (!ip2.isOrgLocalMC());
      assert (!ip2.isGlobalMC());
      
      IPAddress ip3("127.0.0.1"); // loopback
      assert (!ip3.isWildcard());
      assert (!ip3.isBroadcast());
      assert (ip3.isLoopback());
      assert (!ip3.isMulticast());
      assert (ip3.isUnicast());
      assert (!ip3.isLinkLocal());
      assert (!ip3.isSiteLocal());
      assert (!ip3.isWellKnownMC());
      assert (!ip3.isNodeLocalMC());
      assert (!ip3.isLinkLocalMC());
      assert (!ip3.isSiteLocalMC());
      assert (!ip3.isOrgLocalMC());
      assert (!ip3.isGlobalMC());

      IPAddress ip4("80.122.195.86"); // unicast
      assert (!ip4.isWildcard());
      assert (!ip4.isBroadcast());
      assert (!ip4.isLoopback());
      assert (!ip4.isMulticast());
      assert (ip4.isUnicast());
      assert (!ip4.isLinkLocal());
      assert (!ip4.isSiteLocal());
      assert (!ip4.isWellKnownMC());
      assert (!ip4.isNodeLocalMC());
      assert (!ip4.isLinkLocalMC());
      assert (!ip4.isSiteLocalMC());
      assert (!ip4.isOrgLocalMC());
      assert (!ip4.isGlobalMC());

      IPAddress ip5("169.254.1.20"); // link local unicast
      assert (!ip5.isWildcard());
      assert (!ip5.isBroadcast());
      assert (!ip5.isLoopback());
      assert (!ip5.isMulticast());
      assert (ip5.isUnicast());
      assert (ip5.isLinkLocal());
      assert (!ip5.isSiteLocal());
      assert (!ip5.isWellKnownMC());
      assert (!ip5.isNodeLocalMC());
      assert (!ip5.isLinkLocalMC());
      assert (!ip5.isSiteLocalMC());
      assert (!ip5.isOrgLocalMC());
      assert (!ip5.isGlobalMC());

      IPAddress ip6("192.168.1.120"); // site local unicast
      assert (!ip6.isWildcard());
      assert (!ip6.isBroadcast());
      assert (!ip6.isLoopback());
      assert (!ip6.isMulticast());
      assert (ip6.isUnicast());
      assert (!ip6.isLinkLocal());
      assert (ip6.isSiteLocal());
      assert (!ip6.isWellKnownMC());
      assert (!ip6.isNodeLocalMC());
      assert (!ip6.isLinkLocalMC());
      assert (!ip6.isSiteLocalMC());
      assert (!ip6.isOrgLocalMC());
      assert (!ip6.isGlobalMC());

      IPAddress ip7("10.0.0.138"); // site local unicast
      assert (!ip7.isWildcard());
      assert (!ip7.isBroadcast());
      assert (!ip7.isLoopback());
      assert (!ip7.isMulticast());
      assert (ip7.isUnicast());
      assert (!ip7.isLinkLocal());
      assert (ip7.isSiteLocal());
      assert (!ip7.isWellKnownMC());
      assert (!ip7.isNodeLocalMC());
      assert (!ip7.isLinkLocalMC());
      assert (!ip7.isSiteLocalMC());
      assert (!ip7.isOrgLocalMC());
      assert (!ip7.isGlobalMC());

      IPAddress ip8("172.18.1.200"); // site local unicast
      assert (!ip8.isWildcard());
      assert (!ip8.isBroadcast());
      assert (!ip8.isLoopback());
      assert (!ip8.isMulticast());
      assert (ip8.isUnicast());
      assert (!ip8.isLinkLocal());
      assert (ip8.isSiteLocal());
      assert (!ip8.isWellKnownMC());
      assert (!ip8.isNodeLocalMC());
      assert (!ip8.isLinkLocalMC());
      assert (!ip8.isSiteLocalMC());
      assert (!ip8.isOrgLocalMC());
      assert (!ip8.isGlobalMC());
}


void IPAddressTest::testMCClassification()
{
      IPAddress ip1("224.0.0.100"); // well-known multicast
      assert (!ip1.isWildcard());
      assert (!ip1.isBroadcast());
      assert (!ip1.isLoopback());
      assert (ip1.isMulticast());
      assert (!ip1.isUnicast());
      assert (!ip1.isLinkLocal());
      assert (!ip1.isSiteLocal());
      assert (ip1.isWellKnownMC());
      assert (!ip1.isNodeLocalMC());
      assert (ip1.isLinkLocalMC()); // well known are in the range of link local
      assert (!ip1.isSiteLocalMC());
      assert (!ip1.isOrgLocalMC());
      assert (!ip1.isGlobalMC());

      IPAddress ip2("224.1.0.100"); // link local unicast
      assert (!ip2.isWildcard());
      assert (!ip2.isBroadcast());
      assert (!ip2.isLoopback());
      assert (ip2.isMulticast());
      assert (!ip2.isUnicast());
      assert (!ip2.isLinkLocal());
      assert (!ip2.isSiteLocal());
      assert (!ip2.isWellKnownMC());
      assert (!ip2.isNodeLocalMC());
      assert (ip2.isLinkLocalMC());
      assert (!ip2.isSiteLocalMC());
      assert (!ip2.isOrgLocalMC());
      assert (ip2.isGlobalMC()); // link local fall in the range of global

      IPAddress ip3("239.255.0.100"); // site local unicast
      assert (!ip3.isWildcard());
      assert (!ip3.isBroadcast());
      assert (!ip3.isLoopback());
      assert (ip3.isMulticast());
      assert (!ip3.isUnicast());
      assert (!ip3.isLinkLocal());
      assert (!ip3.isSiteLocal());
      assert (!ip3.isWellKnownMC());
      assert (!ip3.isNodeLocalMC());
      assert (!ip3.isLinkLocalMC());
      assert (ip3.isSiteLocalMC());
      assert (!ip3.isOrgLocalMC());
      assert (!ip3.isGlobalMC());

      IPAddress ip4("239.192.0.100"); // org local unicast
      assert (!ip4.isWildcard());
      assert (!ip4.isBroadcast());
      assert (!ip4.isLoopback());
      assert (ip4.isMulticast());
      assert (!ip4.isUnicast());
      assert (!ip4.isLinkLocal());
      assert (!ip4.isSiteLocal());
      assert (!ip4.isWellKnownMC());
      assert (!ip4.isNodeLocalMC());
      assert (!ip4.isLinkLocalMC());
      assert (!ip4.isSiteLocalMC());
      assert (ip4.isOrgLocalMC());
      assert (!ip4.isGlobalMC());

      IPAddress ip5("224.2.127.254"); // global unicast
      assert (!ip5.isWildcard());
      assert (!ip5.isBroadcast());
      assert (!ip5.isLoopback());
      assert (ip5.isMulticast());
      assert (!ip5.isUnicast());
      assert (!ip5.isLinkLocal());
      assert (!ip5.isSiteLocal());
      assert (!ip5.isWellKnownMC());
      assert (!ip5.isNodeLocalMC());
      assert (ip5.isLinkLocalMC()); // link local fall in the range of global
      assert (!ip5.isSiteLocalMC());
      assert (!ip5.isOrgLocalMC());
      assert (ip5.isGlobalMC());
}


void IPAddressTest::testClassification6()
{
#ifdef POCO_HAVE_IPv6
#endif
}


void IPAddressTest::testMCClassification6()
{
#ifdef POCO_HAVE_IPv6
#endif
}


void IPAddressTest::testRelationals()
{
      IPAddress ip1("192.168.1.120");
      IPAddress ip2(ip1);
      IPAddress ip3;
      IPAddress ip4("10.0.0.138");
      
      assert (ip1 != ip4);
      assert (ip1 == ip2);
      assert (!(ip1 != ip2));
      assert (!(ip1 == ip4));
      assert (ip1 > ip4);
      assert (ip1 >= ip4);
      assert (ip4 < ip1);
      assert (ip4 <= ip1);
      assert (!(ip1 < ip4));
      assert (!(ip1 <= ip4));
      assert (!(ip4 > ip1));
      assert (!(ip4 >= ip1));
      
      ip3 = ip1;
      assert (ip1 == ip3);
      ip3 = ip4;
      assert (ip1 != ip3);
      assert (ip3 == ip4);
}


void IPAddressTest::testRelationals6()
{
#ifdef POCO_HAVE_IPv6
#endif
}


void IPAddressTest::setUp()
{
}


void IPAddressTest::tearDown()
{
}


CppUnit::Test* IPAddressTest::suite()
{
      CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("IPAddressTest");

      CppUnit_addTest(pSuite, IPAddressTest, testStringConv);
      CppUnit_addTest(pSuite, IPAddressTest, testStringConv6);
      CppUnit_addTest(pSuite, IPAddressTest, testParse);
      CppUnit_addTest(pSuite, IPAddressTest, testClassification);
      CppUnit_addTest(pSuite, IPAddressTest, testMCClassification);
      CppUnit_addTest(pSuite, IPAddressTest, testClassification6);
      CppUnit_addTest(pSuite, IPAddressTest, testMCClassification6);
      CppUnit_addTest(pSuite, IPAddressTest, testRelationals);
      CppUnit_addTest(pSuite, IPAddressTest, testRelationals6);

      return pSuite;
}

Generated by  Doxygen 1.6.0   Back to index