From 2fcd73d7cb9e1e0ce375fcc001c9b7940bb85347 Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" Date: Fri, 8 May 2009 23:19:47 +0000 Subject: Merged revisions 72489 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r72489 | gregory.p.smith | 2009-05-08 16:16:47 -0700 (Fri, 08 May 2009) | 3 lines Fix an off by one error on negative indexs to __getitem__ http://code.google.com/p/ipaddr-py/issues/detail?id=15 ........ --- Lib/ipaddr.py | 1 + Lib/test/test_ipaddr.py | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/Lib/ipaddr.py b/Lib/ipaddr.py index e0966c6..ef61f85 100644 --- a/Lib/ipaddr.py +++ b/Lib/ipaddr.py @@ -209,6 +209,7 @@ class BaseIP(object): raise IndexError return self._string_from_ip_int(self.network + n) else: + n += 1 if self.broadcast + n < self.network: raise IndexError return self._string_from_ip_int(self.broadcast + n) diff --git a/Lib/test/test_ipaddr.py b/Lib/test/test_ipaddr.py index b0fda04..afa8da3 100755 --- a/Lib/test/test_ipaddr.py +++ b/Lib/test/test_ipaddr.py @@ -274,6 +274,17 @@ class IpaddrUnitTest(unittest.TestCase): self.assertEqual(self.ipv6[5], '2001:658:22a:cafe::5') + def test_getitem(self): + # http://code.google.com/p/ipaddr-py/issues/detail?id=15 + addr = ipaddr.IPv4('172.31.255.128/255.255.255.240') + self.assertEqual(28, addr.prefixlen) + addr_list = list(addr) + self.assertEqual('172.31.255.128', addr_list[0]) + self.assertEqual('172.31.255.128', addr[0]) + self.assertEqual('172.31.255.143', addr_list[-1]) + self.assertEqual('172.31.255.143', addr[-1]) + self.assertEqual(addr_list[-1], addr[-1]) + def test_equals(self): self.assertTrue(self.ipv4 == ipaddr.IPv4('1.2.3.4/24')) self.assertFalse(self.ipv4 == ipaddr.IPv4('1.2.3.4/23')) -- cgit v0.12