netwatch.py/netaddr-0.7.10/netaddr/tests/2.x/ip/iprange.txt

160 lines
3.1 KiB
Plaintext

=IPRange Tests=
Copyright (c) 2008-2012, David P. D. Moss. All rights reserved.
{{{
>>> from netaddr import *
}}}
Constructor tests.
{{{
>>> iprange = IPRange('192.0.2.1', '192.0.2.254')
>>> iprange
IPRange('192.0.2.1', '192.0.2.254')
>>> '%s' % iprange
'192.0.2.1-192.0.2.254'
>>> IPRange('::ffff:192.0.2.1', '::ffff:192.0.2.254')
IPRange('::ffff:192.0.2.1', '::ffff:192.0.2.254')
>>> IPRange('192.0.2.1', '192.0.2.1')
IPRange('192.0.2.1', '192.0.2.1')
>>> IPRange('208.049.164.000', '208.050.066.255', flags=ZEROFILL)
IPRange('208.49.164.0', '208.50.66.255')
}}}
Bad constructor tests.
{{{
>>> IPRange('192.0.2.2', '192.0.2.1')
Traceback (most recent call last):
...
AddrFormatError: lower bound IP greater than upper bound!
>>> IPRange('::', '0.0.0.1')
Traceback (most recent call last):
...
AddrFormatError: base address '0.0.0.1' is not IPv6
>>> IPRange('0.0.0.0', '::1')
Traceback (most recent call last):
...
AddrFormatError: base address '::1' is not IPv4
}}}
Indexing and slicing tests.
{{{
>>> iprange = IPRange('192.0.2.1', '192.0.2.254')
>>> len(iprange)
254
>>> iprange.first == 3221225985
True
>>> iprange.last == 3221226238
True
>>> iprange[0]
IPAddress('192.0.2.1')
>>> iprange[-1]
IPAddress('192.0.2.254')
>>> iprange[512]
Traceback (most recent call last):
...
IndexError: index out range for address range size!
>>> list(iprange[0:3])
[IPAddress('192.0.2.1'), IPAddress('192.0.2.2'), IPAddress('192.0.2.3')]
>>> list(iprange[0:10:2])
[IPAddress('192.0.2.1'), IPAddress('192.0.2.3'), IPAddress('192.0.2.5'), IPAddress('192.0.2.7'), IPAddress('192.0.2.9')]
>>> list(iprange[0:1024:512])
[IPAddress('192.0.2.1')]
>>> IPRange('::ffff:192.0.2.1', '::ffff:192.0.2.254')[0:10:2]
Traceback (most recent call last):
...
TypeError: IPv6 slices are not supported!
}}}
Membership tests.
{{{
>>> IPRange('192.0.2.5', '192.0.2.10') in IPRange('192.0.2.1', '192.0.2.254')
True
>>> IPRange('fe80::1', 'fe80::fffe') in IPRange('fe80::', 'fe80::ffff:ffff:ffff:ffff')
True
>>> IPRange('192.0.2.5', '192.0.2.10') in IPRange('::', '::255.255.255.255')
False
}}}
Sorting tests.
{{{
>>> ipranges = (IPRange('192.0.2.40', '192.0.2.50'), IPRange('192.0.2.20', '192.0.2.30'), IPRange('192.0.2.1', '192.0.2.254'),)
>>> sorted(ipranges)
[IPRange('192.0.2.1', '192.0.2.254'), IPRange('192.0.2.20', '192.0.2.30'), IPRange('192.0.2.40', '192.0.2.50')]
>>> ipranges = list(ipranges)
>>> ipranges.append(IPRange('192.0.2.45', '192.0.2.49'))
>>> sorted(ipranges)
[IPRange('192.0.2.1', '192.0.2.254'), IPRange('192.0.2.20', '192.0.2.30'), IPRange('192.0.2.40', '192.0.2.50'), IPRange('192.0.2.45', '192.0.2.49')]
}}}
CIDR interoperability tests.
{{{
>>> IPRange('192.0.2.5', '192.0.2.10').cidrs()
[IPNetwork('192.0.2.5/32'), IPNetwork('192.0.2.6/31'), IPNetwork('192.0.2.8/31'), IPNetwork('192.0.2.10/32')]
>>> IPRange('fe80::', 'fe80::ffff:ffff:ffff:ffff').cidrs()
[IPNetwork('fe80::/64')]
}}}
Various additional tests.
{{{
>>> iprange.info
{'IPv4': [{'date': '1993-05',
'designation': 'Administered by ARIN',
'prefix': '192/8',
'status': 'Legacy',
'whois': 'whois.arin.net'}]}
>>> iprange.is_private()
True
>>> iprange.version
4
}}}