09bece0e7511f36bbb8700e321744b5e3dbd7e1a" #!/usr/bin/python # # Copyright 2007 Google Inc. # Licensed to PSF under a Contributor Agreement. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """Unittest for ipaddr module.""" import unittest import time import ipaddr # Compatibility function to cast str to bytes objects if ipaddr._compat_has_real_bytes: _cb = lambda bytestr: bytes(bytestr, 'charmap') else: _cb = str class IpaddrUnitTest(unittest.TestCase): def setUp(self): self.ipv4 = ipaddr.IPv4Network('1.2.3.4/24') self.ipv4_hostmask = ipaddr.IPv4Network('10.0.0.1/0.255.255.255') self.ipv6 = ipaddr.IPv6Network('2001:658:22a:cafe:200:0:0:1/64') def tearDown(self): del(self.ipv4) del(self.ipv4_hostmask) del(self.ipv6) del(self) def testRepr(self): self.assertEqual("IPv4Network('1.2.3.4/32')", repr(ipaddr.IPv4Network('1.2.3.4'))) self.assertEqual("IPv6Network('::1/128')", repr(ipaddr.IPv6Network('::1'))) def testAutoMasking(self): addr1 = ipaddr.IPv4Network('1.1.1.255/24') addr1_masked = ipaddr.IPv4Network('1.1.1.0/24') self.assertEqual(addr1_masked, addr1.masked()) addr2 = ipaddr.IPv6Network('2000:cafe::efac:100/96') addr2_masked = ipaddr.IPv6Network('2000:cafe::/96') self.assertEqual(addr2_masked, addr2.masked()) # issue57 def testAddressIntMath(self): self.assertEqual(ipaddr.IPv4Address('1.1.1.1') + 255, ipaddr.IPv4Address('1.1.2.0')) self.assertEqual(ipaddr.IPv4Address('1.1.1.1') - 256, ipaddr.IPv4Address('1.1.0.1')) self.assertEqual(ipaddr.IPv6Address('::1') + (2**16 - 2), ipaddr.IPv6Address('::ffff')) self.assertEqual(ipaddr.IPv6Address('::ffff') - (2**16 - 2), ipaddr.IPv6Address('::1')) def testInvalidStrings(self): def AssertInvalidIP(ip_str): self.assertRaises(ValueError, ipaddr.IPAddress, ip_str) AssertInvalidIP("") AssertInvalidIP("016.016.016.016") AssertInvalidIP("016.016.016") AssertInvalidIP("016.016") AssertInvalidIP("016") AssertInvalidIP("000.000.000.000") AssertInvalidIP("000") AssertInvalidIP("0x0a.0x0a.0x0a.0x0a") AssertInvalidIP("0x0a.0x0a.0x0a") AssertInvalidIP("0x0a.0x0a") AssertInvalidIP("0x0a") AssertInvalidIP("42.42.42.42.42") AssertInvalidIP("42.42.42") AssertInvalidIP("42.42") AssertInvalidIP("42") AssertInvalidIP("42..42.42") AssertInvalidIP("42..42.42.42") AssertInvalidIP("42.42.42.42.") AssertInvalidIP("42.42.42.42...") AssertInvalidIP(".42.42.42.42") AssertInvalidIP("...42.42.42.42") AssertInvalidIP("42.42.42.-0") AssertInvalidIP("42.42.42.+0") AssertInvalidIP(".") AssertInvalidIP("...") AssertInvalidIP("bogus") AssertInvalidIP("bogus.com") AssertInvalidIP("192.168.0.1.com") AssertInvalidIP("12345.67899.-54321.-98765") AssertInvalidIP("257.0.0.0") Asser