=Abbreviated CIDR Tests= Copyright (c) 2008-2012, David P. D. Moss. All rights reserved. {{{ >>> from netaddr import * }}} Abbreviation tests. {{{ >>> ranges = ( ... (IPAddress('::'), IPAddress('::')), ... (IPAddress('0.0.0.0'), IPAddress('255.255.255.255')), ... (IPAddress('::'), IPAddress('::255.255.255.255')), ... (IPAddress('0.0.0.0'), IPAddress('0.0.0.0')), ... ) >>> sorted(ranges) [(IPAddress('0.0.0.0'), IPAddress('0.0.0.0')), (IPAddress('0.0.0.0'), IPAddress('255.255.255.255')), (IPAddress('::'), IPAddress('::')), (IPAddress('::'), IPAddress('::255.255.255.255'))] # Integer values. >>> cidr_abbrev_to_verbose(-1) -1 # Class A >>> cidr_abbrev_to_verbose(0) '0.0.0.0/8' >>> cidr_abbrev_to_verbose(10) '10.0.0.0/8' >>> cidr_abbrev_to_verbose(127) '127.0.0.0/8' # Class B >>> cidr_abbrev_to_verbose(128) '128.0.0.0/16' >>> cidr_abbrev_to_verbose(191) '191.0.0.0/16' # Class C >>> cidr_abbrev_to_verbose(192) '192.0.0.0/24' >>> cidr_abbrev_to_verbose(223) '223.0.0.0/24' # Class D (multicast) >>> cidr_abbrev_to_verbose(224) '224.0.0.0/4' >>> cidr_abbrev_to_verbose(225) '225.0.0.0/4' >>> cidr_abbrev_to_verbose(239) '239.0.0.0/4' # Class E (reserved) >>> cidr_abbrev_to_verbose(240) '240.0.0.0/32' >>> cidr_abbrev_to_verbose(254) '254.0.0.0/32' >>> cidr_abbrev_to_verbose(255) '255.0.0.0/32' >>> cidr_abbrev_to_verbose(256) 256 # String values. >>> cidr_abbrev_to_verbose('-1') '-1' # Class A >>> cidr_abbrev_to_verbose('0') '0.0.0.0/8' >>> cidr_abbrev_to_verbose('10') '10.0.0.0/8' >>> cidr_abbrev_to_verbose('127') '127.0.0.0/8' # Class B >>> cidr_abbrev_to_verbose('128') '128.0.0.0/16' >>> cidr_abbrev_to_verbose('191') '191.0.0.0/16' # Class C >>> cidr_abbrev_to_verbose('192') '192.0.0.0/24' >>> cidr_abbrev_to_verbose('223') '223.0.0.0/24' # Class D (multicast) >>> cidr_abbrev_to_verbose('224') '224.0.0.0/4' >>> cidr_abbrev_to_verbose('225') '225.0.0.0/4' >>> cidr_abbrev_to_verbose('239') '239.0.0.0/4' # Class E (reserved) >>> cidr_abbrev_to_verbose('240') '240.0.0.0/32' >>> cidr_abbrev_to_verbose('254') '254.0.0.0/32' >>> cidr_abbrev_to_verbose('255') '255.0.0.0/32' >>> cidr_abbrev_to_verbose('256') '256' >>> cidr_abbrev_to_verbose('128/8') '128.0.0.0/8' >>> cidr_abbrev_to_verbose('128.0/8') '128.0.0.0/8' >>> cidr_abbrev_to_verbose('128.0.0.0/8') '128.0.0.0/8' >>> cidr_abbrev_to_verbose('128.0.0/8') '128.0.0.0/8' >>> cidr_abbrev_to_verbose('192.168') '192.168.0.0/24' >>> cidr_abbrev_to_verbose('192.0.2') '192.0.2.0/24' >>> cidr_abbrev_to_verbose('192.0.2.0') '192.0.2.0/24' >>> cidr_abbrev_to_verbose('0.0.0.0') '0.0.0.0/8' # No IPv6 support current. >>> cidr_abbrev_to_verbose('::/128') '::/128' # IPv6 proper, not IPv4 mapped? >>> cidr_abbrev_to_verbose('::10/128') '::10/128' >>> cidr_abbrev_to_verbose('0.0.0.0.0') '0.0.0.0.0' >>> cidr_abbrev_to_verbose('') '' >>> cidr_abbrev_to_verbose(None) >>> cidr_abbrev_to_verbose([]) [] >>> cidr_abbrev_to_verbose({}) {} }}} Negative testing. {{{ >>> cidr_abbrev_to_verbose('192.0.2.0') '192.0.2.0/24' >>> cidr_abbrev_to_verbose('192.0.2.0/32') '192.0.2.0/32' #FIXME: >>> cidr_abbrev_to_verbose('192.0.2.0/33') Traceback (most recent call last): ... ValueError: prefixlen in address '192.0.2.0/33' out of range for IPv4! }}} IPv4 octet expansion routine. {{{ >>> from netaddr.strategy import ipv4 >>> ipv4.expand_partial_address('10') '10.0.0.0' >>> ipv4.expand_partial_address('10.1') '10.1.0.0' >>> ipv4.expand_partial_address('192.168.1') '192.168.1.0' }}} IPNetwork constructor testing. {{{ >>> IPNetwork('192.168/16') IPNetwork('192.168.0.0/16') >>> IPNetwork('192.168.0.15') IPNetwork('192.168.0.15/32') >>> IPNetwork('192.168') IPNetwork('192.168.0.0/32') >>> IPNetwork('192.168', implicit_prefix=True) IPNetwork('192.168.0.0/24') >>> IPNetwork('192.168', True) IPNetwork('192.168.0.0/24') >>> IPNetwork('10.0.0.1', True) IPNetwork('10.0.0.1/8') }}}