diff options
author | Philipp Hagemeister <phihag@phihag.de> | 2015-07-13 04:57:55 +0200 |
---|---|---|
committer | Philipp Hagemeister <phihag@phihag.de> | 2015-07-13 04:57:55 +0200 |
commit | caa4192d70a288a83b67213b7bdbe54318dc8dd8 (patch) | |
tree | 196bba20c9bd226c100bae2422eb4fb71841a70b /test_ipaddress.py | |
parent | 802b1e4233f248aff40d15f384d7c728b018e703 (diff) | |
download | ipaddress-caa4192d70a288a83b67213b7bdbe54318dc8dd8.tar.gz |
Add subnet_of / supernet_of (fixes #18)
Diffstat (limited to 'test_ipaddress.py')
-rw-r--r-- | test_ipaddress.py | 82 |
1 files changed, 81 insertions, 1 deletions
diff --git a/test_ipaddress.py b/test_ipaddress.py index af0fac6..9c8ffe1 100644 --- a/test_ipaddress.py +++ b/test_ipaddress.py @@ -106,7 +106,6 @@ class CommonTestMixin: y = pickle.loads(pickle.dumps(x, proto)) self.assertEqual(y, x) - class CommonTestMixin_v4(CommonTestMixin): def test_leading_zeros(self): @@ -503,6 +502,42 @@ class InterfaceTestCase_v4(BaseTestCase, NetmaskTestMixin_v4): class NetworkTestCase_v4(BaseTestCase, NetmaskTestMixin_v4): factory = ipaddress.IPv4Network + def test_subnet_of(self): + # containee left of container + self.assertFalse( + self.factory('10.0.0.0/30').subnet_of( + self.factory('10.0.1.0/24'))) + # containee inside container + self.assertTrue( + self.factory('10.0.0.0/30').subnet_of( + self.factory('10.0.0.0/24'))) + # containee right of container + self.assertFalse( + self.factory('10.0.0.0/30').subnet_of( + self.factory('10.0.1.0/24'))) + # containee larger than container + self.assertFalse( + self.factory('10.0.0.0/24').subnet_of( + self.factory('10.0.0.0/30'))) + + def test_supernet_of(self): + # containee left of container + self.assertFalse( + self.factory('10.0.0.0/30').supernet_of( + self.factory('10.0.1.0/24'))) + # containee inside container + self.assertFalse( + self.factory('10.0.0.0/30').supernet_of( + self.factory('10.0.0.0/24'))) + # containee right of container + self.assertFalse( + self.factory('10.0.0.0/30').supernet_of( + self.factory('10.0.1.0/24'))) + # containee larger than container + self.assertTrue( + self.factory('10.0.0.0/24').supernet_of( + self.factory('10.0.0.0/30'))) + class NetmaskTestMixin_v6(CommonTestMixin_v6): """Input validation on interfaces and networks is very similar""" @@ -565,6 +600,43 @@ class InterfaceTestCase_v6(BaseTestCase, NetmaskTestMixin_v6): class NetworkTestCase_v6(BaseTestCase, NetmaskTestMixin_v6): factory = ipaddress.IPv6Network + def test_subnet_of(self): + # containee left of container + self.assertFalse( + self.factory('2000:999::/56').subnet_of( + self.factory('2000:aaa::/48'))) + # containee inside container + self.assertTrue( + self.factory('2000:aaa::/56').subnet_of( + self.factory('2000:aaa::/48'))) + # containee right of container + self.assertFalse( + self.factory('2000:bbb::/56').subnet_of( + self.factory('2000:aaa::/48'))) + # containee larger than container + self.assertFalse( + self.factory('2000:aaa::/48').subnet_of( + self.factory('2000:aaa::/56'))) + + def test_supernet_of(self): + # containee left of container + self.assertFalse( + self.factory('2000:999::/56').supernet_of( + self.factory('2000:aaa::/48'))) + # containee inside container + self.assertFalse( + self.factory('2000:aaa::/56').supernet_of( + self.factory('2000:aaa::/48'))) + # containee right of container + self.assertFalse( + self.factory('2000:bbb::/56').supernet_of( + self.factory('2000:aaa::/48'))) + # containee larger than container + self.assertTrue( + self.factory('2000:aaa::/48').supernet_of( + self.factory('2000:aaa::/56'))) + + class FactoryFunctionErrors(BaseTestCase): @@ -1986,5 +2058,13 @@ class SingleIssuesTest(unittest.TestCase): def test_issue_14(self): self.assertTrue(ipaddress.ip_address('127.0.0.1').is_private) + def test_issue_18(self): + net1 = ipaddress.ip_network("192.0.2.0/24") + net2 = ipaddress.ip_network("192.0.2.112/29") + self.assertFalse(net1.subnet_of(net2)) + self.assertTrue(net1.supernet_of(net2)) + self.assertTrue(net2.subnet_of(net1)) + self.assertFalse(net2.supernet_of(net1)) + if __name__ == '__main__': unittest.main() |