]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Make Ip::Address < operator work with NOADDR
authorAmos Jeffries <amosjeffries@squid-cache.org>
Sat, 1 May 2010 07:42:29 +0000 (01:42 -0600)
committerAmos Jeffries <amosjeffries@squid-cache.org>
Sat, 1 May 2010 07:42:29 +0000 (01:42 -0600)
src/ip/IpAddress.cc
src/ip/testIpAddress.cc

index 9cbf4d94a96dbd526331cec47e6ed3c672c720fd..853c652b2cbd34c1994363fa02cf017832c093d4 100644 (file)
@@ -949,7 +949,7 @@ Ip::Address::operator >(const Ip::Address &rhs) const
 bool
 Ip::Address::operator <(const Ip::Address &rhs) const
 {
-    if (IsNoAddr() && !rhs.IsNoAddr())
+    if (IsAnyAddr() && !rhs.IsAnyAddr())
         return true;
 
     return ( matchIPAddr(rhs) < 0);
index c8a93f02f40b785e0ea3073a50fa817970e21573..cc3c5a0ac128cb9cbb1dbf17169b555d4cd6a7b9 100644 (file)
@@ -334,6 +334,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;
@@ -345,8 +367,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 ) );