summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpmoody@google.com <pmoody@google.com@09200d28-7f98-11dd-ad27-0f66e57d2035>2011-02-08 01:56:52 +0000
committerpmoody@google.com <pmoody@google.com@09200d28-7f98-11dd-ad27-0f66e57d2035>2011-02-08 01:56:52 +0000
commitbc8a8e75c1e96366440427f7810fcc43d76cf455 (patch)
tree5315ef2c3b03239ef71afcf10c98eaddcf25743e
parente1c6e4a7c811c91d6f6806a179ebe8cb40dbbd33 (diff)
downloadipaddr-py-bc8a8e75c1e96366440427f7810fcc43d76cf455.tar.gz
+ fix broken network/address comparisons.
git-svn-id: https://ipaddr-py.googlecode.com/svn@206 09200d28-7f98-11dd-ad27-0f66e57d2035
-rw-r--r--trunk/ipaddr.py9
-rwxr-xr-xtrunk/ipaddr_test.py13
2 files changed, 16 insertions, 6 deletions
diff --git a/trunk/ipaddr.py b/trunk/ipaddr.py
index 84db9c1..a0091f1 100644
--- a/trunk/ipaddr.py
+++ b/trunk/ipaddr.py
@@ -442,8 +442,7 @@ class _BaseIP(_IPAddrBase):
def __eq__(self, other):
try:
return (self._ip == other._ip
- and self._version == other._version
- and isinstance(other, _BaseIP))
+ and self._version == other._version)
except AttributeError:
return NotImplemented
@@ -608,7 +607,11 @@ class _BaseNet(_IPAddrBase):
and self.network == other.network
and int(self.netmask) == int(other.netmask))
except AttributeError:
- return NotImplemented
+ if isinstance(other, _BaseIP):
+ # If other is a _BaseIP, we pretend it's a network for
+ # this equality test. It's a slight hack, but it's a
+ # convenient one.
+ return self == IPNetwork(other._ip, version=other._version)
def __ne__(self, other):
eq = self.__eq__(other)
diff --git a/trunk/ipaddr_test.py b/trunk/ipaddr_test.py
index b7be753..0fefb09 100755
--- a/trunk/ipaddr_test.py
+++ b/trunk/ipaddr_test.py
@@ -423,9 +423,17 @@ class IpaddrUnitTest(unittest.TestCase):
self.assertFalse(self.ipv4 == '')
self.assertFalse(self.ipv4 == [])
self.assertFalse(self.ipv4 == 2)
+ self.assertTrue(ipaddr.IPNetwork('1.1.1.1/32') ==
+ ipaddr.IPAddress('1.1.1.1'))
+ self.assertFalse(ipaddr.IPNetwork('1.1.1.1/24') ==
+ ipaddr.IPAddress('1.1.1.1'))
self.assertTrue(self.ipv6 ==
ipaddr.IPv6Network('2001:658:22a:cafe:200::1/64'))
+ self.assertTrue(ipaddr.IPNetwork('::1/128') ==
+ ipaddr.IPAddress('::1'))
+ self.assertFalse(ipaddr.IPNetwork('::1/127') ==
+ ipaddr.IPAddress('::1'))
self.assertFalse(self.ipv6 ==
ipaddr.IPv6Network('2001:658:22a:cafe:200::1/63'))
self.assertFalse(self.ipv6 == ipaddr.IPv4Network('1.2.3.4/23'))
@@ -433,10 +441,10 @@ class IpaddrUnitTest(unittest.TestCase):
self.assertFalse(self.ipv6 == [])
self.assertFalse(self.ipv6 == 2)
+
+
def testNotEquals(self):
- addr1 = ipaddr.IPAddress('1.2.3.4')
self.assertFalse(self.ipv4 != ipaddr.IPv4Network('1.2.3.4/24'))
- self.assertFalse(self.ipv4 == addr1)
self.assertTrue(self.ipv4 != ipaddr.IPv4Network('1.2.3.4/23'))
self.assertTrue(self.ipv4 != ipaddr.IPv6Network('::1.2.3.4/24'))
self.assertTrue(self.ipv4 != '')
@@ -446,7 +454,6 @@ class IpaddrUnitTest(unittest.TestCase):
addr2 = ipaddr.IPAddress('2001:658:22a:cafe:200::1')
self.assertFalse(self.ipv6 !=
ipaddr.IPv6Network('2001:658:22a:cafe:200::1/64'))
- self.assertFalse(self.ipv6 == addr2)
self.assertTrue(self.ipv6 !=
ipaddr.IPv6Network('2001:658:22a:cafe:200::1/63'))
self.assertTrue(self.ipv6 != ipaddr.IPv4Network('1.2.3.4/23'))