summaryrefslogtreecommitdiffstats
path: root/netaddr/tests/ip/test_network_ops.py
diff options
context:
space:
mode:
Diffstat (limited to 'netaddr/tests/ip/test_network_ops.py')
-rw-r--r--netaddr/tests/ip/test_network_ops.py81
1 files changed, 81 insertions, 0 deletions
diff --git a/netaddr/tests/ip/test_network_ops.py b/netaddr/tests/ip/test_network_ops.py
new file mode 100644
index 0000000..f682c4f
--- /dev/null
+++ b/netaddr/tests/ip/test_network_ops.py
@@ -0,0 +1,81 @@
+import types
+
+from netaddr import IPNetwork, cidr_merge
+
+def test_ipnetwork_cidr_merge():
+ ip_list = (
+ list(IPNetwork('fe80::/120')) +
+ [
+ IPNetwork('192.0.2.0/24'),
+ IPNetwork('192.0.4.0/25'),
+ IPNetwork('192.0.4.128/25'),
+ ]
+ + list(map(str, IPNetwork('192.0.3.0/24')))
+ )
+ assert len(ip_list) == 515
+
+ assert cidr_merge(ip_list) == [
+ IPNetwork('192.0.2.0/23'),
+ IPNetwork('192.0.4.0/24'),
+ IPNetwork('fe80::/120'),
+ ]
+
+def test_subnetting():
+ ip = IPNetwork('172.24.0.0/23')
+ assert isinstance(ip.subnet(28), types.GeneratorType)
+
+ subnets = list(ip.subnet(28))
+ assert len(subnets) == 32
+
+ assert subnets == [
+ IPNetwork('172.24.0.0/28'),
+ IPNetwork('172.24.0.16/28'),
+ IPNetwork('172.24.0.32/28'),
+ IPNetwork('172.24.0.48/28'),
+ IPNetwork('172.24.0.64/28'),
+ IPNetwork('172.24.0.80/28'),
+ IPNetwork('172.24.0.96/28'),
+ IPNetwork('172.24.0.112/28'),
+ IPNetwork('172.24.0.128/28'),
+ IPNetwork('172.24.0.144/28'),
+ IPNetwork('172.24.0.160/28'),
+ IPNetwork('172.24.0.176/28'),
+ IPNetwork('172.24.0.192/28'),
+ IPNetwork('172.24.0.208/28'),
+ IPNetwork('172.24.0.224/28'),
+ IPNetwork('172.24.0.240/28'),
+ IPNetwork('172.24.1.0/28'),
+ IPNetwork('172.24.1.16/28'),
+ IPNetwork('172.24.1.32/28'),
+ IPNetwork('172.24.1.48/28'),
+ IPNetwork('172.24.1.64/28'),
+ IPNetwork('172.24.1.80/28'),
+ IPNetwork('172.24.1.96/28'),
+ IPNetwork('172.24.1.112/28'),
+ IPNetwork('172.24.1.128/28'),
+ IPNetwork('172.24.1.144/28'),
+ IPNetwork('172.24.1.160/28'),
+ IPNetwork('172.24.1.176/28'),
+ IPNetwork('172.24.1.192/28'),
+ IPNetwork('172.24.1.208/28'),
+ IPNetwork('172.24.1.224/28'),
+ IPNetwork('172.24.1.240/28'),
+ ]
+
+
+def test_supernetting():
+ ip = IPNetwork('192.0.2.114')
+ supernets = ip.supernet(22)
+
+ assert supernets == [
+ IPNetwork('192.0.0.0/22'),
+ IPNetwork('192.0.2.0/23'),
+ IPNetwork('192.0.2.0/24'),
+ IPNetwork('192.0.2.0/25'),
+ IPNetwork('192.0.2.64/26'),
+ IPNetwork('192.0.2.96/27'),
+ IPNetwork('192.0.2.112/28'),
+ IPNetwork('192.0.2.112/29'),
+ IPNetwork('192.0.2.112/30'),
+ IPNetwork('192.0.2.114/31'),
+ ]