]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Make Ip::Address < operator work with NOADDR
authorAmos Jeffries <squid3@treenet.co.nz>
Sat, 1 May 2010 08:55:19 +0000 (20:55 +1200)
committerAmos Jeffries <squid3@treenet.co.nz>
Sat, 1 May 2010 08:55:19 +0000 (20:55 +1200)
src/ip/IpAddress.cc
src/ip/testIpAddress.cc

index 58081c9f38e208657e8f8efe4543b6a2fda70874..5455e0b24d6f5e9600c508ecaa5955dd6d8e72db 100644 (file)
@@ -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);
index 67c66705488fcb4c7d661b292e26e6396f971693..e7f7f8e1a43ff113bf8b18e1a4d3b7a3899a0d0b 100644 (file)
@@ -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 ) );