diff options
author | pmoody@google.com <pmoody@google.com@09200d28-7f98-11dd-ad27-0f66e57d2035> | 2011-02-08 01:56:52 +0000 |
---|---|---|
committer | pmoody@google.com <pmoody@google.com@09200d28-7f98-11dd-ad27-0f66e57d2035> | 2011-02-08 01:56:52 +0000 |
commit | bc8a8e75c1e96366440427f7810fcc43d76cf455 (patch) | |
tree | 5315ef2c3b03239ef71afcf10c98eaddcf25743e | |
parent | e1c6e4a7c811c91d6f6806a179ebe8cb40dbbd33 (diff) | |
download | ipaddr-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.py | 9 | ||||
-rwxr-xr-x | trunk/ipaddr_test.py | 13 |
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')) |