From: Amos Jeffries Date: Sat, 1 May 2010 08:55:19 +0000 (+1200) Subject: Make Ip::Address < operator work with NOADDR X-Git-Tag: SQUID_3_1_2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=29f19daed74f5ba5821b73639e0bbb2bf4c50efd;p=thirdparty%2Fsquid.git Make Ip::Address < operator work with NOADDR --- diff --git a/src/ip/IpAddress.cc b/src/ip/IpAddress.cc index 58081c9f38..5455e0b24d 100644 --- a/src/ip/IpAddress.cc +++ b/src/ip/IpAddress.cc @@ -904,7 +904,7 @@ bool IpAddress::operator >(const IpAddress &rhs) const bool IpAddress::operator <(const IpAddress &rhs) const { - if (IsNoAddr() && !rhs.IsNoAddr()) + if (IsAnyAddr() && !rhs.IsAnyAddr()) return true; return ( matchIPAddr(rhs) < 0); diff --git a/src/ip/testIpAddress.cc b/src/ip/testIpAddress.cc index 67c6670548..e7f7f8e1a4 100644 --- a/src/ip/testIpAddress.cc +++ b/src/ip/testIpAddress.cc @@ -332,6 +332,28 @@ testIpAddress::testBooleans() CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); CPPUNIT_ASSERT( !( lhsIPA < rhsIPA ) ); + /* test equality versus ANYADDR */ + lhsIPA.SetAnyAddr(); + rhsIPA.SetAnyAddr(); + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) == 0 ); + CPPUNIT_ASSERT( ( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA < rhsIPA ) ); + + /* test equality versus NOADDR */ + lhsIPA.SetNoAddr(); + rhsIPA.SetNoAddr(); + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) == 0 ); + CPPUNIT_ASSERT( ( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA < rhsIPA ) ); + /* test inequality (less than) */ lhsIPA = valLow; rhsIPA = valHigh; @@ -343,8 +365,52 @@ testIpAddress::testBooleans() CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); CPPUNIT_ASSERT( ( lhsIPA < rhsIPA ) ); + /* test inequality versus ANYADDR (less than) */ + lhsIPA.SetAnyAddr(); + rhsIPA = valHigh; + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) < 0 ); + CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA < rhsIPA ) ); + + /* test inequality versus NOADDR (less than) */ + lhsIPA = valLow; + rhsIPA.SetNoAddr(); + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) < 0 ); + CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA < rhsIPA ) ); + + /* test inequality (greater than) */ + lhsIPA = valHigh; + rhsIPA = valLow; + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) > 0 ); + CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA < rhsIPA ) ); + /* test inequality (greater than) */ lhsIPA = valHigh; + rhsIPA.SetAnyAddr(); + CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) > 0 ); + CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA != rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA >= rhsIPA ) ); + CPPUNIT_ASSERT( ( lhsIPA > rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA <= rhsIPA ) ); + CPPUNIT_ASSERT( !( lhsIPA < rhsIPA ) ); + + /* test inequality versus NOADDR (greater than) */ + lhsIPA.SetNoAddr(); rhsIPA = valLow; CPPUNIT_ASSERT( lhsIPA.matchIPAddr(rhsIPA) > 0 ); CPPUNIT_ASSERT( !( lhsIPA == rhsIPA ) );