403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.216.15
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_ipaddress.cpython-36.pyc
3

�w2_�Y�@s�dZddlZddlZddlZddlZddlZddlZddlZddlZGdd�dej	�Z
Gdd�d�ZGdd�de�ZGd	d
�d
e�Z
Gdd�de
e�ZGd
d�de
e
�ZGdd�de�ZGdd�de
e�ZGdd�de
e�ZGdd�de
�ZGdd�de
e�ZGdd�de
e�ZGdd�de
�ZejGdd�d��ZejGdd �d ��ZGd!d"�d"ej	�ZGd#d$�d$ej	�Zed%k�r~ej�dS)&zUnittest for ipaddress module.�Nc@s>eZdZedd��Zejdd��Zdd�Zdd�Z	d	d
�Z
dS)�BaseTestCasecCst�dS)N)�NotImplementedError)�self�r�8/opt/alt/python36/lib64/python3.6/test/test_ipaddress.py�factory$szBaseTestCase.factoryc	gsL|r||}|j||�}|�}|VWdQRX|jjdk	rH|j|jj�dS)z{
        Ensure exception does not display a context by default

        Wraps unittest.TestCase.assertRaisesRegex
        N)�assertRaisesRegexZ	exception�__context__�
assertTrue�__suppress_context__)r�exc_type�details�args�cm�excrrr�assertCleanError(szBaseTestCase.assertCleanErrorcGs|jtj|f|��S)z Ensure a clean AddressValueError)r�	ipaddress�AddressValueError)rr
rrrr�assertAddressError8szBaseTestCase.assertAddressErrorcGs|jtj|f|��S)z Ensure a clean NetmaskValueError)rrZNetmaskValueError)rr
rrrr�assertNetmaskError=szBaseTestCase.assertNetmaskErrorcCs|j|j|�|j|��dS)z8Check constructor arguments produce equivalent instancesN)�assertEqualr)r�lhs�rhsrrr�assertInstancesEqualBsz!BaseTestCase.assertInstancesEqualN)�__name__�
__module__�__qualname__�propertyr�
contextlib�contextmanagerrrrrrrrrrs
rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�CommonTestMixinc	Cs$|jd��|jd�WdQRXdS)NzAddress cannot be empty�)rr)rrrr�test_empty_addressIsz"CommonTestMixin.test_empty_addressc	Cs.|jtjtd����|jd�WdQRXdS)Nz1.0g�?)r�re�escape�reprr)rrrr�test_floats_rejectedMsz$CommonTestMixin.test_floats_rejectedcCsB|jttj|jd��|jtt|jd��|jtt|jd��dS)N�)�assertRaises�	TypeError�operator�indexr�hex�bytes)rrrr�test_not_an_index_issue15559Qsz,CommonTestMixin.test_not_an_index_issue15559cCs\xVttjd�D]D}|j|d��.|j|�}tjtj||��}|j||�WdQRXqWdS)Nr')�proto)�range�pickleZHIGHEST_PROTOCOLZsubTestr�loads�dumpsr)r�addrr/�x�yrrr�pickle_testXs

zCommonTestMixin.pickle_testN)rrrr"r&r.r7rrrrr Gsr c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�CommonTestMixin_v4cCs|jdd�|jdd�dS)Nz000.000.000.000z0.0.0.0z192.168.000.001z192.168.0.1)r)rrrr�test_leading_zerosbsz%CommonTestMixin_v4.test_leading_zeroscCs|jdd�|jdd�dS)Nrz0.0.0.0lPz192.168.0.1)r)rrrr�test_intfszCommonTestMixin_v4.test_intcCs(|jtjd�d�|jtjd�d�dS)N�00000000z0.0.0.0�c0a80001z192.168.0.1)rr-�fromhex)rrrr�test_packedjszCommonTestMixin_v4.test_packedc	Cs.d}|jtj|���|jd�WdQRXdS)Nz,-1 (< 0) is not permitted as an IPv4 addressr'���)rr#r$r)r�msgrrr�test_negative_ints_rejectednsz.CommonTestMixin_v4.test_negative_ints_rejectedc
Cs2d}|jtj|d���|jd�WdQRXdS)Nz1%d (>= 2**32) is not permitted as an IPv4 address�� ll)rr#r$r)rr@rrr�test_large_ints_rejectedssz+CommonTestMixin_v4.test_large_ints_rejectedcs �fdd�}|d�|d�dS)Nc	s>d|}d}�jtj|||f����j|�WdQRXdS)N�z4%r (len %d != 4) is not permitted as an IPv4 address)rr#r$r)�lengthr4r@)rrr�assertBadLengthyszBCommonTestMixin_v4.test_bad_packed_length.<locals>.assertBadLength��r)rrGr)rr�test_bad_packed_lengthxsz)CommonTestMixin_v4.test_bad_packed_lengthN)	rrrr9r:r>rArDrJrrrrr8`sr8c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�CommonTestMixin_v6cCs|jdd�|jdd�dS)Nz
0000::0000z::z000::c0a8:0001z::c0a8:1)r)rrrrr9�sz%CommonTestMixin_v6.test_leading_zeroscCs|jdd�|jdd�dS)Nrz::lPz::c0a8:1)r)rrrrr:�szCommonTestMixin_v6.test_intcCsRdtjd�}|j|d�d	tjd�}|j|d�tjd�d
}|j|d�dS)NrE�r;z::r<z::c0a8:1zc0a8:1::sss)r-r=r)rr4rrrr>�szCommonTestMixin_v6.test_packedc	Cs.d}|jtj|���|jd�WdQRXdS)Nz,-1 (< 0) is not permitted as an IPv6 addressr'r?)rr#r$r)rr@rrrrA�sz.CommonTestMixin_v6.test_negative_ints_rejectedc
Cs:d}|jtj|dd���|jdd�WdQRXdS)Nz2%d (>= 2**128) is not permitted as an IPv6 addressrB�)rr#r$r)rr@rrrrD�sz+CommonTestMixin_v6.test_large_ints_rejectedcs �fdd�}|d�|d�dS)Nc	sHd|}d}�jtj|||f����j|��j|�WdQRXdS)NrEz5%r (len %d != 16) is not permitted as an IPv6 address)rr#r$r)rFr4r@)rrrrG�s

zBCommonTestMixin_v6.test_bad_packed_length.<locals>.assertBadLength��r)rrGr)rrrJ�sz)CommonTestMixin_v6.test_bad_packed_lengthN)	rrrr9r:r>rArDrJrrrrrK�srKc@sZeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�ZdS)�AddressTestCase_v4c	Cs*d}|jd|��tj|�WdQRXdS)Nz127.0.0.1/24zUnexpected '/' in %r)rr�IPv4Address)rr4rrr�test_network_passed_as_address�sz1AddressTestCase_v4.test_network_passed_as_addresscs��fdd�}|d�|d�|d�|d�|d�|d�|d	�|d
�|d�|d�|d
�|d�|d�|d�|d�|d�|d�|d�|d�|d�|d�|d�|d�dS)Nc	s&�jd|��tj|�WdQRXdS)NzExpected 4 octets in %r)rrrQ)r4)rrr�assertBadSplit�szAAddressTestCase_v4.test_bad_address_split.<locals>.assertBadSplitz127.0.1z42.42.42.42.42z42.42.42z42.42Z42z42..42.42.42z42.42.42.42.z42.42.42.42...z.42.42.42.42z...42.42.42.42z016.016.016z016.016�016Z000z0x0a.0x0a.0x0az	0x0a.0x0a�0x0a�.�bogusz	bogus.comZ1000Z1000000000000000z192.168.0.1.comr)rrSr)rr�test_bad_address_split�s0z)AddressTestCase_v4.test_bad_address_splitcs �fdd�}|d�|d�dS)Nc	s&�jd|��tj|�WdQRXdS)NzEmpty octet not permitted in %r)rrrQ)r4)rrr�assertBadOctet�sz;AddressTestCase_v4.test_empty_octet.<locals>.assertBadOctetz	42..42.42z...r)rrYr)rr�test_empty_octet�sz#AddressTestCase_v4.test_empty_octetcsj�fdd�}|dd�|dd�|dd�|d	d
�|dd�|d
d�|dd�|dd�|dd�dS)Nc	s6d||f}�jtj|���tj|�WdQRXdS)Nz)Only decimal digits permitted in %r in %r)rr#r$rrQ)r4�octetr@)rrrrY�szBAddressTestCase_v4.test_invalid_characters.<locals>.assertBadOctetz0x0a.0x0a.0x0a.0x0arUz0xa.0x0a.0x0a.0x0aZ0xaz42.42.42.-0z-0z42.42.42.+0z+0z42.42.42.-42z-42z
+1.+2.+3.4z+1z	1.2.3.4e0Z4e0z	1.2.3.4::z4::z1.a.2.3�ar)rrYr)rr�test_invalid_characters�s







z*AddressTestCase_v4.test_invalid_characterscs$�fdd�}|dd�|dd�dS)Nc	s6d}�jtj|||f���tj|�WdQRXdS)Nz9Ambiguous (octal/decimal) value in %r not permitted in %r)rr#r$rrQ)r4r[r@)rrrrY�szGAddressTestCase_v4.test_octal_decimal_ambiguity.<locals>.assertBadOctetz016.016.016.016rTz001.000.008.016Z008r)rrYr)rr�test_octal_decimal_ambiguity�s
z/AddressTestCase_v4.test_octal_decimal_ambiguitycs$�fdd�}|dd�|dd�dS)Nc	s6d}�jtj|||f���tj|�WdQRXdS)Nz*At most 3 characters permitted in %r in %r)rr#r$rrQ)r4r[r@)rrrrY�sz<AddressTestCase_v4.test_octet_length.<locals>.assertBadOctetz0000.000.000.000Z0000z12345.67899.-54321.-98765Z12345r)rrYr)rr�test_octet_length�s
z$AddressTestCase_v4.test_octet_lengthcs$�fdd�}|dd�|dd�dS)Nc	s6d||f}�jtj|���tj|�WdQRXdS)Nz$Octet %d (> 255) not permitted in %r)rr#r$rrQ)r4r[r@)rrrrY�sz;AddressTestCase_v4.test_octet_limit.<locals>.assertBadOctetz	257.0.0.0iz
192.168.0.999i�r)rrYr)rr�test_octet_limit�s
z#AddressTestCase_v4.test_octet_limitcCs|jd�dS)Nz	192.0.2.1)r7)rrrr�test_pickleszAddressTestCase_v4.test_picklecCstj|jd��dS)Nz	192.0.2.1)�weakref�refr)rrrr�test_weakrefszAddressTestCase_v4.test_weakrefN)rrrrrQrrRrXrZr]r^r_r`rardrrrrrP�s				rPc@szeZdZejZdd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS)�AddressTestCase_v6c	Cs*d}|jd|��tj|�WdQRXdS)Nz::1/24zUnexpected '/' in %r)rr�IPv6Address)rr4rrrrRsz1AddressTestCase_v6.test_network_passed_as_addresscs(�fdd�}|d�|d�|d�dS)Nc	s*d}�j||��tj|�WdQRXdS)NzAt least 3 parts expected in %r)rrrf)r4r@)rrrrSszUAddressTestCase_v6.test_bad_address_split_v6_not_enough_parts.<locals>.assertBadSplit�:z:1z	FEDC:9878r)rrSr)rr�*test_bad_address_split_v6_not_enough_partssz=AddressTestCase_v6.test_bad_address_split_v6_not_enough_partscs8�fdd�}|d�|d�|d�|d�|d�dS)Nc	s*d}�j||��tj|�WdQRXdS)Nz At most 8 colons permitted in %r)rrrf)r4r@)rrrrSszTAddressTestCase_v6.test_bad_address_split_v6_too_many_colons.<locals>.assertBadSplitz9:8:7:6:5:4:3::2:1z10:9:8:7:6:5:4:3:2:1z::8:7:6:5:4:3:2:1z8:7:6:5:4:3:2:1::z10:9:8:7:6:5:4:3:42.42.42.42r)rrSr)rr�)test_bad_address_split_v6_too_many_colonssz<AddressTestCase_v6.test_bad_address_split_v6_too_many_colonscs8�fdd�}|d�|d�|d�|d�|d�dS)Nc	s*d}�j||��tj|�WdQRXdS)Nz+Exactly 8 parts expected without '::' in %r)rrrf)r4r@)rrrrS+szSAddressTestCase_v6.test_bad_address_split_v6_too_many_parts.<locals>.assertBadSplitz3ffe:0:0:0:0:0:0:0:1z9:8:7:6:5:4:3:2:1z
7:6:5:4:3:2:1z9:8:7:6:5:4:3:42.42.42.42z7:6:5:4:3:42.42.42.42r)rrSr)rr�(test_bad_address_split_v6_too_many_parts*sz;AddressTestCase_v6.test_bad_address_split_v6_too_many_partscs�fdd�}|d�dS)Nc	s*d}�j||��tj|�WdQRXdS)Nz.Expected at most 7 other parts with '::' in %r)rrrf)r4r@)rrrrS8szeAddressTestCase_v6.test_bad_address_split_v6_too_many_parts_with_double_colon.<locals>.assertBadSplitz1:2:3:4::5:6:7:8r)rrSr)rr�:test_bad_address_split_v6_too_many_parts_with_double_colon7szMAddressTestCase_v6.test_bad_address_split_v6_too_many_parts_with_double_coloncs`�fdd�}|d�|d�|d�|d�|d�|d�|d	�|d
�|d�|d�dS)
Nc	s*d}�j||��tj|�WdQRXdS)Nz At most one '::' permitted in %r)rrrf)r4r@)rrrrS@szZAddressTestCase_v6.test_bad_address_split_v6_repeated_double_colon.<locals>.assertBadSplitz
3ffe::1::1z1::2::3::4:5z2001::db:::1z	3ffe::1::z	::3ffe::1z:3ffe::1::1z3ffe::1::1:z:3ffe::1::1:z:::z2001:db8:::1r)rrSr)rr�/test_bad_address_split_v6_repeated_double_colon?szBAddressTestCase_v6.test_bad_address_split_v6_repeated_double_coloncs0�fdd�}|d�|d�|d�|d�dS)Nc	s*d}�j||��tj|�WdQRXdS)Nz0Leading ':' only permitted as part of '::' in %r)rrrf)r4r@)rrrrSQszRAddressTestCase_v6.test_bad_address_split_v6_leading_colon.<locals>.assertBadSplitz:2001:db8::1z:1:2:3:4:5:6:7z
:1:2:3:4:5:6:z:6:5:4:3:2:1::r)rrSr)rr�'test_bad_address_split_v6_leading_colonPs
z:AddressTestCase_v6.test_bad_address_split_v6_leading_coloncs0�fdd�}|d�|d�|d�|d�dS)Nc	s*d}�j||��tj|�WdQRXdS)Nz1Trailing ':' only permitted as part of '::' in %r)rrrf)r4r@)rrrrS\szSAddressTestCase_v6.test_bad_address_split_v6_trailing_colon.<locals>.assertBadSplitz2001:db8::1:z1:2:3:4:5:6:7:z
::1.2.3.4:z::7:6:5:4:3:2:r)rrSr)rr�(test_bad_address_split_v6_trailing_colon[s
z;AddressTestCase_v6.test_bad_address_split_v6_trailing_coloncsB�fdd�}|dd�|dd�|dd�|d	d
�|dd�dS)
Nc	s(�jd||��tj|�WdQRXdS)Nz%s in %r)rrrf)r4Zv4_error)rrr�assertBadAddressPartgszDAddressTestCase_v6.test_bad_v4_part_in.<locals>.assertBadAddressPartz3ffe::1.netzExpected 4 octets in '1.net'z
3ffe::127.0.1zExpected 4 octets in '127.0.1'z::1.2.3zExpected 4 octets in '1.2.3'z::1.2.3.4.5z Expected 4 octets in '1.2.3.4.5'z3ffe::1.1.1.netz5Only decimal digits permitted in 'net' in '1.1.1.net'r)rror)rr�test_bad_v4_part_infs
z&AddressTestCase_v6.test_bad_v4_part_incsL�fdd�}|dd�|dd�|dd�|d	d
�|dd�|d
d�dS)Nc	s6d||f}�jtj|���tj|�WdQRXdS)Nz%Only hex digits permitted in %r in %r)rr#r$rrf)r4�partr@)rrr�
assertBadPartwszAAddressTestCase_v6.test_invalid_characters.<locals>.assertBadPartz
3ffe::googZgoogz3ffe::-0z-0z3ffe::+0z+0z3ffe::-1z-1z	1.2.3.4::z1.2.3.4z1234:axy::bZaxyr)rrrr)rrr]vs




z*AddressTestCase_v6.test_invalid_characterscs8�fdd�}|dd�|dd�|dd�|d	d
�dS)Nc	s,d}�j|||��tj|�WdQRXdS)Nz*At most 4 characters permitted in %r in %r)rrrf)r4rqr@)rrrrr�sz:AddressTestCase_v6.test_part_length.<locals>.assertBadPartz::00000Z00000z3ffe::10000Z10000z02001:db8::Z02001z2001:888888::1Z888888r)rrrr)rr�test_part_length�s



z#AddressTestCase_v6.test_part_lengthcCs|jd�dS)Nz
2001:db8::)r7)rrrrra�szAddressTestCase_v6.test_picklecCstj|jd��dS)Nz
2001:db8::)rbrcr)rrrrrd�szAddressTestCase_v6.test_weakrefN)rrrrrfrrRrhrirjrkrlrmrnrpr]rsrardrrrrres



rec@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�NetmaskTestMixin_v4z;Input validation on interfaces and networks is very similarcCs|jt|jd��d�dS)Nz1.2.3.4z
1.2.3.4/32)r�strr)rrrr�test_no_mask�sz NetmaskTestMixin_v4.test_no_maskc	Cs,d}|jd|��|j|�WdQRXdS)Nz
1.2.3.4/32/24zOnly one '/' permitted in %r)rr)rr4rrr�test_split_netmask�sz&NetmaskTestMixin_v4.test_split_netmaskcs\�fdd�}|dd�|dd�|dd�|dd�|d	d�|d
d�|dtjd
��dS)Nc	s$�j|���j|�WdQRXdS)N)rr)r4r
)rrr�assertBadAddress�szANetmaskTestMixin_v4.test_address_errors.<locals>.assertBadAddress�/zAddress cannot be emptyz/8rWzExpected 4 octetsz
google.comz10/8z	::1.2.3.4zOnly decimal digitsz	1.2.3.256z256 (> 255))r#r$)rrxr)rr�test_address_errors�s





z'NetmaskTestMixin_v4.test_address_errorscCs�|jt|jd��d�x�tdd�D]�}d|}|j|�}|jt|�|�|jt|jd|j��|�|jt|jd|��|�|d	kr�dd|}|jt|jd|j��|�q"WdS)
Nz192.0.2.0/255.255.255.0z192.0.2.0/24r�!z
0.0.0.0/%dz
0.0.0.0/%sz0.0.0.0/0%drC)rCr)rrurr0�netmask�hostmask)r�i�net_str�netrrr�test_valid_netmask�s
z&NetmaskTestMixin_v4.test_valid_netmaskcs��fdd�}|dd�|dd�|dd�|dd�|dd�|dd	�|dd
�|dd�|dd
�|dd�|dd�|dd�|dd�|dd�dS)Ncs:d|}�jtj|����jd||f�WdQRXdS)Nz%r is not a valid netmaskz%s/%s)rr#r$r)r4r|r@)rrr�assertBadNetmask�szANetmaskTestMixin_v4.test_netmask_errors.<locals>.assertBadNetmaskz1.2.3.4r!z-1z+1z 1 �0x1Z33z254.254.255.256z1.a.2.3z1.1.1.1z254.xyz.2.3z240.255.0.0z
255.254.128.0z0.1.127.255�puddingz::r)rr�r)rr�test_netmask_errors�s












z'NetmaskTestMixin_v4.test_netmask_errorscCs"|jd�|jd�|jd�dS)Nz192.0.2.0/27z192.0.2.0/31z	192.0.2.0)r7)rrrrra�s

zNetmaskTestMixin_v4.test_pickleN)
rrr�__doc__rvrwrzr�r�rarrrrrt�s
rtc@seZdZejZdS)�InterfaceTestCase_v4N)rrrr�
IPv4Interfacerrrrrr��sr�c@seZdZejZdS)�NetworkTestCase_v4N)rrrr�IPv4Networkrrrrrr��sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�NetmaskTestMixin_v6z;Input validation on interfaces and networks is very similarc	Cs,d}|jd|��|j|�WdQRXdS)Nzcafe:cafe::/128/190zOnly one '/' permitted in %r)rr)rr4rrrrw�sz&NetmaskTestMixin_v6.test_split_netmaskcsL�fdd�}|dd�|dd�|dd�|dd�|d	d�|d
d�dS)Nc	s$�j|���j|�WdQRXdS)N)rr)r4r
)rrrrx�szANetmaskTestMixin_v6.test_address_errors.<locals>.assertBadAddressryzAddress cannot be emptyz/8z
google.comzAt least 3 partsz1.2.3.4z10/8z1234:axy::bzOnly hex digitsr)rrxr)rrrz�s




z'NetmaskTestMixin_v6.test_address_errorscCsf|jt|jd��d�xJtdd�D]<}d|}|jt|j|��|�|jt|jd|��|�q"WdS)Nz
2001:db8::/32r�z::/%dz::/0%d)rrurr0)rr~rrrrr��s
z&NetmaskTestMixin_v6.test_valid_netmaskcs~�fdd�}|dd�|dd�|dd�|dd�|dd�|dd�|dd	�|dd
�|dd�|dd�|d
d
�dS)Ncs:d|}�jtj|����jd||f�WdQRXdS)Nz%r is not a valid netmaskz%s/%s)rr#r$r)r4r|r@)rrrr�szANetmaskTestMixin_v6.test_netmask_errors.<locals>.assertBadNetmaskz::1r!z1::z-1z+1z 1 r�Z129z1.2.3.4r�z::r)rr�r)rrr�s









z'NetmaskTestMixin_v6.test_netmask_errorscCs"|jd�|jd�|jd�dS)Nz2001:db8::1000/124z2001:db8::1000/127z2001:db8::1000)r7)rrrrras

zNetmaskTestMixin_v6.test_pickleN)	rrrr�rwrzr�r�rarrrrr��sr�c@seZdZejZdS)�InterfaceTestCase_v6N)rrrr�
IPv6Interfacerrrrrr�sr�c@seZdZejZdS)�NetworkTestCase_v6N)rrrr�IPv6Networkrrrrrr�sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�FactoryFunctionErrorsc	Cs0d}d}|jt|||��||�WdQRXdS)z3Ensure a clean ValueError with the expected messageZcamelotz+%r does not appear to be an IPv4 or IPv6 %sN)r�
ValueError)rrZkindr4r@rrr�assertFactoryError%sz(FactoryFunctionErrors.assertFactoryErrorcCs|jtjd�dS)N�address)r�r�
ip_address)rrrr�test_ip_address,sz%FactoryFunctionErrors.test_ip_addresscCs|jtjd�dS)NZ	interface)r�r�ip_interface)rrrr�test_ip_interface/sz'FactoryFunctionErrors.test_ip_interfacecCs|jtjd�dS)N�network)r�r�
ip_network)rrrr�test_ip_network2sz%FactoryFunctionErrors.test_ip_networkN)rrrr�r�r�r�rrrrr�#sr�c@seZdZdd�Zdd�ZdS)�
LargestObjectcCs
t|t�S)N)�
isinstancer�)r�otherrrr�__eq__8szLargestObject.__eq__cCsdS)NFr)rr�rrr�__lt__:szLargestObject.__lt__N)rrrr�r�rrrrr�6sr�c@seZdZdd�Zdd�ZdS)�SmallestObjectcCs
t|t�S)N)r�r�)rr�rrrr�?szSmallestObject.__eq__cCsdS)NFr)rr�rrr�__gt__AszSmallestObject.__gt__N)rrrr�r�rrrrr�=sr�c@s�eZdZejd�Zejd�Zejd�Z	ej
d�Zejd�Z
ejd�Zee	gZeegZeegZee
gZeeZejd�Zejd�Zejd�Zej
d�Zejd�Zejd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z dd�Z!dd�Z"dd�Z#dS)�ComparisonTestsr'rBcCsXt�}xL|jD]B}|j||�|j||k�|j|j|�t�|j|j|�t�qWdS)N)�object�objects�assertNotEqual�assertFalserr��NotImplemented�__ne__)rr��objrrr�test_foreign_type_equality[sz*ComparisonTests.test_foreign_type_equalitycCs:x4|jD]*}x$|jD]}||kr"q|j||�qWqWdS)N)r�r�)rrrrrr�test_mixed_type_equalityds
z(ComparisonTests.test_mixed_type_equalitycCs8x2|jD](}|j||�|j||�|j||�qWdS)N)r�r�assertLessEqual�assertGreaterEqual)rr�rrr�test_same_type_equalitymsz'ComparisonTests.test_same_type_equalitycCs�x�|j|jf|j|jf|j|jf|j|jf|j|j	f|j
|jffD]|\}}|j||�|j
||�|j||�|j||�|j||�|j||k�|j||k�|j||k�|j||k�qBWdS)N)�v4addr�v4addr2�v4net�v4net2�v4intf�v4intf2�v6addr�v6addr2�v6net�v6net2�v6intf�v6intf2r�Z
assertLessr�Z
assertGreaterr�r�)rrrrrr�test_same_type_orderingss 




z'ComparisonTests.test_same_type_orderingcCs�x|jD]}|j||j�qWx|jD]}|j||j�q&Wx$|j|jgD]}|j||j�qLWx$|j|jgD]}|j||j�qrWdS)N)�v4_addresses�assertInr��v6_addressesr��
v4_objects�assertNotIn�
v6_objects)rr�rrr�test_containment�sz ComparisonTests.test_containmentcs�x�|jD]��x�|jD]z�t�t���st�t���r6q|jt��fdd��|jt��fdd��|jt��fdd��|jt��fdd��qWqWdS)Ncs��kS)Nrr)rrrr�<lambda>�sz:ComparisonTests.test_mixed_type_ordering.<locals>.<lambda>cs��kS)Nrr)rrrrr��scs��kS)Nrr)rrrrr��scs��kS)Nrr)rrrrr��s)r�r��typer(r))rr)rrr�test_mixed_type_ordering�sz(ComparisonTests.test_mixed_type_orderingc Cst�}t�}t�}x�|jD]�}|jt��||kWdQRX|jt��||kWdQRX|jt��||kWdQRX|jt��||kWdQRX|j||k�|j||k�|j||k�|j||k�|j||k�|j||k�|j||k�|j||k�qWdS)N)r�r�r�r�r(r)r
r�)rr�ZsmallestZlargestr�rrr�test_foreign_type_ordering�s(z*ComparisonTests.test_foreign_type_orderingcCs�|j|j|jg}|j|j|jg}|j|t|jt	j
d��|j|t|jt	j
d��|j||t|jt	j
d��|jt
t	j
t��dS)N)�key)r�r�r�r�r�r�r�sortedr�rZget_mixed_type_keyr�r�r�r�)rZ
v4_orderedZ
v6_orderedrrr�test_mixed_type_key�s
z#ComparisonTests.test_mixed_type_keycCs�tjd�}tjd�}tjd�}tjd�}|jt|j|�|jt|j|�|jt|j|�|jt|j|�|jt|j|�|jt|j|�|jt|j|�|jt|j|�dS)Nz1.1.1.1z::1)rr�r�r(r)r�r�)rr�r�r�r�rrr�test_incompatible_versions�s



z*ComparisonTests.test_incompatible_versionsN)$rrrrrQr�r�r�r�r�rfr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�Ds4













		

r�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2dadb�Z3dcdd�Z4dedf�Z5dgdh�Z6didj�Z7dkdl�Z8dmdn�Z9dodp�Z:dqdr�Z;dsdt�Z<dudv�Z=dwdx�Z>dydz�Z?d{d|�Z@d}d~�ZAdd��ZBd�d��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�S)��IpaddrUnitTestcCsLtjd�|_tjd�|_tjd�|_tjd�|_tjd�|_	tj
d�|_dS)Nz1.2.3.4z
1.2.3.4/24z
1.2.3.0/24z2001:658:22a:cafe:200:0:0:1z2001:658:22a:cafe:200:0:0:1/64z2001:658:22a:cafe::/64)rrQ�ipv4_addressr��ipv4_interfacer��ipv4_networkr��ipv6_address�ipv6_interfacer��ipv6_network)rrrr�setUp�szIpaddrUnitTest.setUpcCs0|jdttjd���|jdttjd���dS)NzIPv4Interface('1.2.3.4/32')z1.2.3.4zIPv6Interface('::1/128')z::1)rr%rr�r�)rrrr�testRepr�szIpaddrUnitTest.testReprc/Cs�tjd�}tjd�}|jtjd�|�|jtj|df�|�|jtjd�|�|jtjd�|�|jtj|df�|�|jtjd�|�|jt��tjd�WdQRX|jt��tj|df�WdQRX|jt��tjd�WdQRX|jt��tjd�WdQRX|jt��tj|df�WdQRX|jt��tjd�WdQRXtjd�}|jtjdd	d
�|�|jtj|dfd	d
�|�|jtjdd	d
�|�|jtjdd	d
�|�|jtj|dfd	d
�|�|jtjdd	d
�|�tjd�}tjd�}|jtjd�|�|jtj|df�|�|jtjd�|�|jtjd�|�|jtj|df�|�|jtjd�|�|jtjd�tjd
��|jtjd�tjd
��dS) N�	192.0.2.1z192.0.2.1/32rC��255.255.255.255��
255.255.255.0z192.0.2.0/24F)�strict�	192.0.2.0�z192.0.2.1/24)r�rC)r�rC)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rrQr�rr(r�r�)r�ipr�rrr�
testIPv4Tuple�sl













zIpaddrUnitTest.testIPv4TuplecCs�tjd�}tjd�}|jtjd�|�|jtjd�|�|jtj|df�|�tjd�}tjd�}|jtjd�|�|jtjd�|�|jtj|df�|�tjd	�}|jt��tjd�WdQRX|jt��tjd�WdQRX|jt��tj|df�WdQRXtjd�}|jtjddd�|�|jtjddd�|�|jtj|dfdd�|�|jtjd�tjd
��|jtjd�tjd
��dS)N�
2001:db8::z2001:db8::/128�128�	n� rMz
2001:db8::/96�96�`�2001:db8::1�	n� F)r�z2001:db8::1/96)r�r�)r�rM)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)r�r�)rrfr�rr(r�r�)rr�r�rrr�
testIPv6Tuple$sR






zIpaddrUnitTest.testIPv6TuplecCst|jtjd�dtjd��|jtjd�dtjd��|jtjd�dtjd	��|jtjd	�d
tjd��dS)Nz1.1.1.1�z1.1.2.0�z1.1.0.1z::1rB�z::ffffii��ii��)rrrQrf)rrrr�testAddressIntMathVsz!IpaddrUnitTest.testAddressIntMathcCsP|jttjd�|jttjdtj�|jttjd�|jttjdtj�dS)Nr'rBr?r?)r(r�rZv4_int_to_packedZ
IPV4LENGTHZv6_int_to_packedZ
IPV6LENGTH)rrrr�testInvalidIntToBytes`s

z$IpaddrUnitTest.testInvalidIntToBytescCs�tjd�}tjd�}tjd�}|jttj|g��||fg�|jttj||g��||f||fg�|jttj|||g��||fg�|jdtjdd��|jdt|j��dS)Nz10.10.10.10z10.10.10.11z10.10.10.12rMrzIPv4Network('1.2.3.0/24'))rrQr�listZ_find_address_rangeZ_count_righthand_zero_bitsr%r�)r�ip1�ip2�ip3rrr�
testInternalshs


zIpaddrUnitTest.testInternalsc	Cs<Gdd�dtj�}|d�}|jtd��|jWdQRXdS)Nc@seZdZdS)z8IpaddrUnitTest.testMissingNetworkVersion.<locals>.BrokenN)rrrrrrr�Brokenvsr�z	127.0.0.1zBroken.*version)r�_BaseNetworkrr�version)rr��brokenrrr�testMissingNetworkVersionusz(IpaddrUnitTest.testMissingNetworkVersionc	Cs<Gdd�dtj�}|d�}|jtd��|jWdQRXdS)Nc@seZdZdS)z6IpaddrUnitTest.testMissingAddressClass.<locals>.BrokenN)rrrrrrrr�}sr�z	127.0.0.1zBroken.*address)rr�rrZ_address_class)rr�r�rrr�testMissingAddressClass|sz&IpaddrUnitTest.testMissingAddressClasscCsh|jt|jj�d�|jt|jj�d�|jt|jj�d�|jt|jj�d�|jt|jj�d�dS)Niz1.2.3.0l	�/YE� z2001:658:22a:cafe::z::ffff:ffff:ffff:ffff)r�intr��network_addressrur�r})rrrr�testGetNetwork�szIpaddrUnitTest.testGetNetworkcCs�|j|jjtjd�j�tjd�}tjd�}|j|tjt|j���|j|tjt|j���d}|j|jjtj	|�j�|jtj|j
j�jd�|jtj|jj�jd�dS)Niz1.2.3.4z2001:658:22a:cafe:200:0:0:1l	�/YE� ��)
rr��_iprr�r�r�r�r�r�r�r�r�)r�ipv4�ipv6Zv6_intrrr�
testIpFromInt�s



zIpaddrUnitTest.testIpFromIntcCsvtj}|j|jjtjd�j�|j|d�|d��|j|jjtjd�j�|j|d�|d��|j|d
�|d��dS)Nsz255.254.253.252s����s X*�zffff:2:3:4:ffff::s��s��rEr�z::r�s
����ss����s)rr�rr�r�r�r�r�)rr�rrr�testIpFromPacked�s






zIpaddrUnitTest.testIpFromPackedcCsT|jt|jj�d�|jt|jj�d�|jt|jj�d�|jt|jj�d�dS)Niz1.2.3.4l	�/YE� z2001:658:22a:cafe:200::1)rr�r�r�rur�)rrrr�	testGetIp�szIpaddrUnitTest.testGetIpcCsP|jt|jj�d�|jt|jj�d�|jt|jj�d�|j|jjd�dS)Nl�z
255.255.255.0l	������@)rr�r�r|rur��	prefixlen)rrrr�testGetNetmask�s
zIpaddrUnitTest.testGetNetmaskcCs�tjd�}|jt|jj�d�|j|jd�d�|j|jd��|j|jd��|j	|jd��tj
d�}|jt|jj�d�|j|jd�d�dS)Nz	1.2.3.4/0r�0z0.0.0.0�invalidz::1/0)rr�rr�r�r|Z_prefix_from_prefix_stringr
�_is_valid_netmaskr�r�)rZipv4_zero_netmaskZipv6_zero_netmaskrrr�testZeroNetmask�s

zIpaddrUnitTest.testZeroNetmaskcCs�|j}|j|jd��|j|jd��|j|jd��|j|jd��|j|jd��|j|jd��|j|jd��|j|jd��|j|jd��tjd	�}|j|jd
�dS)Nrz128.128.128.128z128.128.128.127z128.128.128.255z255.128.128.128z128.255.255.255z255.255.255.255z1.2.3.4z127.0.0.0/0.0.0.255r�)	r�r�rr
Z_is_hostmaskrr�rr)rr�rrr�testIPv4NetAndHostmasks�s
z&IpaddrUnitTest.testIPv4NetAndHostmaskscCsT|jt|jj�d�|jt|jj�d�|jt|jj�d�|jt|jj�d�dS)Ni�z	1.2.3.255l	�����/YE� z%2001:658:22a:cafe:ffff:ffff:ffff:ffff)rr�r��broadcast_addressrur�)rrrr�testGetBroadcast�szIpaddrUnitTest.testGetBroadcastcCs(|j|jjjd�|j|jjjd�dS)Nr�r)rr�r�rr�)rrrr�testGetPrefixlen�szIpaddrUnitTest.testGetPrefixlencCs�|j|jj�jd�|jt|jj�j�d�|jtjd�jj�tj	d��|j|j
j�jd�|jt|j
j�j�d�|jtjd�jj�tjd��dS)N�z1.2.2.0z	0.0.0.0/0�?z2001:658:22a:cafe::z::0/0)
rr��supernetrrur�rr�r�r�r�r�r�)rrrr�testGetSupernet�szIpaddrUnitTest.testGetSupernetcCsd|j|jjd�jd�|jt|jjd�j�d�|j|jjd�jd�|jt|jjd�j�d�dS)NrH�z1.2.0.0�=z2001:658:22a:caf8::)rr�rrrur�r�)rrrr�testGetSupernet3�szIpaddrUnitTest.testGetSupernet3cCs�|jt|jjddd�|jt|jjdd�|j|jjdd�|jjdd��|jt|jjddd�|jt|jjdd�|j|jjdd�|jjd	d��dS)
NrBr')�prefixlen_diff�
new_prefix�)r)r��A�>)r(r�r�rrr�)rrrr�testGetSupernet4s

zIpaddrUnitTest.testGetSupernet4cCs�t|jj��}|jdt|��|jtjd�|d�|jtjd�|d�tjd�}t|j��}|jdt|��|jtjd�|d�|jtjd	�|d�tjd
�tjd�g}d}d}|j|ttj	|�j���|j|ttj	|�j���|jttj	|�j��ttj	|�j���tjd�tjd�g}d}d}|j|ttj	|�j���|j|ttj	|�j���|jttj	|�j��ttj	|�j���dS)N�z1.2.3.1rz	1.2.3.254r'z2001:658:22a:cafe::/120r�z2001:658:22a:cafe::1z2001:658:22a:cafe::ff�2.0.0.0z2.0.0.1z
2.0.0.0/31��2001:658:22a:cafe::z2001:658:22a:cafe::/127�r?r?)rr)rr)
r�r��hostsr�lenrrQr�rfr�)rr r�ZaddrsZstr_argsZtpl_argsrrr�	testHostss2
zIpaddrUnitTest.testHostscCs�|jt|jjdd��t|jjdd���|jtt|jjdd��|jtt|jjddd��|jt|jjdd��t|jjdd���|jtt|jjd	d��|jtt|jjddd��dS)
NrH)r�)rr
)rrr��Dr)rr�r��subnetsr(r�r�r�)rrrr�testFancySubnetting.s
z"IpaddrUnitTest.testFancySubnettingcCs||jt|jj��djd�|jtt|jj��dj�d�|jtt|jj��dj�d�|jt|jj��djd�dS)Nrrz1.2.3.0r'z	1.2.3.128r)rr�r�r%rrur�r�)rrrr�testGetSubnets>szIpaddrUnitTest.testGetSubnetscCsNtjd�}dd�|j�D�}dd�|jd�D�}|j|dg�|j||�dS)Nz
1.2.3.4/32cSsg|]}t|��qSr)ru)�.0r5rrr�
<listcomp>Ksz;IpaddrUnitTest.testGetSubnetForSingle32.<locals>.<listcomp>cSsg|]}t|��qSr)ru)r(r5rrrr)LsrB)rr�r%r)rr��subnets1�subnets2rrr�testGetSubnetForSingle32Is

z'IpaddrUnitTest.testGetSubnetForSingle32cCsNtjd�}dd�|j�D�}dd�|jd�D�}|j|dg�|j||�dS)Nz::1/128cSsg|]}t|��qSr)ru)r(r5rrrr)Rsz<IpaddrUnitTest.testGetSubnetForSingle128.<locals>.<listcomp>cSsg|]}t|��qSr)ru)r(r5rrrr)SsrB)rr�r%r)rr�r*r+rrr�testGetSubnetForSingle128Ps

z(IpaddrUnitTest.testGetSubnetForSingle128cCsXdd�|jjd�D�}|j|ddddg�dd�|jjd�D�}|j|d	d
ddg�dS)
NcSsg|]}t|��qSr)ru)r(r5rrrr)Xsz.IpaddrUnitTest.testSubnet2.<locals>.<listcomp>rBz
1.2.3.0/26z1.2.3.64/26z1.2.3.128/26z1.2.3.192/26cSsg|]}t|��qSr)ru)r(r5rrrr)]sz2001:658:22a:cafe::/66z2001:658:22a:cafe:4000::/66z2001:658:22a:cafe:8000::/66z2001:658:22a:cafe:c000::/66)r�r%rr�)rZipsZipsv6rrr�testSubnet2WszIpaddrUnitTest.testSubnet2cCs�dd�|jjd�D�}|j|dd�dddg�|j|dd�dd	d
g�|jt|�d�tjd�}d
d�|jd�D�}|j|dd�dddg�|j|dd�dddg�|jt|�d�dS)NcSsg|]}t|��qSr)ru)r(r5rrrr)fsz2IpaddrUnitTest.testGetSubnets3.<locals>.<listcomp>�rHz
1.2.3.0/32z
1.2.3.1/32z
1.2.3.2/32z1.2.3.253/32z1.2.3.254/32z1.2.3.255/32r�z2001:658:22a:cafe::/120cSsg|]}t|��qSr)ru)r(r5rrrr)nsz2001:658:22a:cafe::/128z2001:658:22a:cafe::1/128z2001:658:22a:cafe::2/128z2001:658:22a:cafe::fd/128z2001:658:22a:cafe::fe/128z2001:658:22a:cafe::ff/128���r0)r�r%rr!rr�)rr%r�rrr�testGetSubnets3es"
zIpaddrUnitTest.testGetSubnets3cCs`|jtt|jjjd��|jtt|jjd��|jtt|jjjd��|jtt|jjd��dS)N�	r)	r(r�r�r�r�r%r�r�r�)rrrr�testSubnetFailsForLargeCidrDiffysz.IpaddrUnitTest.testSubnetFailsForLargeCidrDiffcCs,|jt|jjjd�|jt|jjjd�dS)Nrr)r(r�r�r�rr�)rrrr�!testSupernetFailsForLargeCidrDiff�sz0IpaddrUnitTest.testSupernetFailsForLargeCidrDiffcCs`|jtt|jjjd��|jtt|jjd��|jtt|jjjd��|jtt|jjd��dS)Nr'r?r?r?r?)	r(r�r�r�r�r%r�r�r�)rrrr�"testSubnetFailsForNegativeCidrDiff�sz1IpaddrUnitTest.testSubnetFailsForNegativeCidrDiffcCs�|j|jjd�|jt|jj��djd�|j|jj�jd�|j|jjd�|jt|jj��djd�|j|jj�jd�dS)Nr�rrMilll )rr�Z
num_addressesr�r%rr�)rrrr�testGetNum_Addresses�sz#IpaddrUnitTest.testGetNum_AddressescCs`|jtjd�|j�|jtjd�|j�tjd�}|j||j�|jtjd�jtjd���dS)Nz1.2.3.128/25z
1.2.4.1/24z1.2.3.37z
1.1.0.0/16z
1.0.0.0/15)	r�rr�r�r�rQr�r��__contains__)r�addr1rrr�testContains�s
zIpaddrUnitTest.testContainscCsT|jt|jd�d�|jt|jjd�|jt|jd�d�|jt|jjd�dS)NrIz1.2.3.5r�z2001:658:22a:cafe::5r'rl)rrur�r(�
IndexError�__getitem__r�)rrrr�testNth�s
zIpaddrUnitTest.testNthcCs�tjd�}|jd|j�t|�}|jdt|d��|jdt|d��|jdt|d��|jdt|d��|j|d	|d
�dS)Nz172.31.255.128/255.255.255.240�z172.31.255.128rz172.31.255.143r'r?r?r?r?)rr�rrr�ru)rr4Z	addr_listrrr�testGetitem�s
zIpaddrUnitTest.testGetitemcCs�|j|jtjd�k�|j|jtjd�k�|j|jtjd�k�|j|jdk�|j|jgk�|j|jdk�|j|jtjd�k�|j|jtjd�k�|j|jtjd�k�|j|jdk�|j|jgk�|j|jdk�dS)Nz
1.2.3.4/24z
1.2.3.4/23z::1.2.3.4/24r!rBz2001:658:22a:cafe:200::1/64z2001:658:22a:cafe:200::1/63)r
r�rr�r�r�r�)rrrr�	testEqual�s$zIpaddrUnitTest.testEqualcCst|j|jtjd�k�|j|jtjd�k�|j|jtjd�k�|j|jdk�|j|jgk�|j|jdk�|j|jtjd�k�|j|jdk�|j|jgk�|j|jdk�|j|jtjd�k�|j|jtjd�k�|j|jtjd�k�|j|jdk�|j|jgk�|j|jdk�|j|j	tjd	�k�|j|j	dk�|j|j	gk�|j|j	dk�dS)
Nz
1.2.3.4/24z
1.2.3.4/23z::1.2.3.4/24r!rBz1.2.3.5z2001:658:22a:cafe:200::1/64z2001:658:22a:cafe:200::1/63z1.2.3.4)
r�r�rr�r
r�r�rQr�r�)rrrr�testNotEqual�s8zIpaddrUnitTest.testNotEqualcCs|jttjd��d�dS)Nz1.2.3.4/255.255.255.255z
1.2.3.4/32)rrurr�)rrrr�testSlash32Constructor�s
z%IpaddrUnitTest.testSlash32ConstructorcCs|jttjd��d�dS)Nz::1/128)rrurr�)rrrr�testSlash128Constructor�sz&IpaddrUnitTest.testSlash128ConstructorcCs|jttjd��d�dS)Nz1.2.3.4/0.0.0.0z	1.2.3.4/0)rrurr�)rrrr�testSlash0Constructor�sz$IpaddrUnitTest.testSlash0ConstructorcCs\tjd�}tjd�}tjd�}tjd�}tjd�}tjd�}tj||||||g�}|jt|�tjd�tjd�g�tjd�}tjd�}tjd�}tjd�}tj||||g�}|jt|�tjd�g�tjd�}tjd	�}tjd
�}tjd�}tjd�}tjd
�}tj||||||g�}|jt|�tjd
�tjd�g�tj||g�}|jt|�tjd�g�tjd�}}	|jttj||	g��|g�tjd�}}	|jttj||	g��tjd�g�tjd�}tjd�}tjd�}tj|||g�}|jt|�|g�tjd�tjd�ftjd�tjd�ftjd�tjd�fg}
x&|
D]\}}|j	t
tj||g��q6WdS)Nz1.1.1.0z1.1.1.1z1.1.1.2z1.1.1.3z1.1.1.4z
1.1.1.0/30z
1.1.1.4/32z
1.1.0.0/24z
1.1.1.0/24z
1.1.2.0/24z
1.1.3.0/24z
1.1.4.0/24z
1.1.0.0/22z
1.1.0.0/23z
1.1.1.1/32z
2001::/100z
2001::/120z	2001::/96z::1z
1.1.0.0/32z
2001::/128)rrQZcollapse_addressesrr�r�r�r�r�r(r))rr�r�r��ip4Zip5Zip6Z	collapsedZip_same1Zip_same2Zaddr_tuplesrrr�testCollapsingsl





























zIpaddrUnitTest.testCollapsingcCs�tj}tjd�}tjd�}Gdd�dtj�}|d�}|d�}|jtt|||��|jtt||tjd���|jt|||��dtj	d��tjd�}|jt|||��tj	d	�tj	d�g�tj
d�}tj
tj
j�}|jtjd
�gt|||���tjd�}tjd�}|jt|||��dtj	d
��tjd�}|jt|||��tj	d
�tj	d�g�|jtt|tjd�tjd���|jtt|tj	d�tj	d���|jtt|tj	d�tj	d���|jtt|tjd�tj	d���dS)Nz1.1.1.0z	1.1.1.255c@seZdZedd��ZdS)z3IpaddrUnitTest.testSummarizing.<locals>.IPv7AddresscSsdS)N�r)rrrrr�Ysz;IpaddrUnitTest.testSummarizing.<locals>.IPv7Address.versionN)rrrrr�rrrr�IPv7AddressXsrGz::1rz
1.1.1.0/24z1.1.1.8z
1.1.1.0/29z	0.0.0.0/0z1::z$1:ffff:ffff:ffff:ffff:ffff:ffff:ffffz1::/16z2::z2::/128z1.1.0.0z::)
rZsummarize_address_ranger�rfr(r�r�r)rr�rQZ	_ALL_ONESr�)rZ	summarizer�r�rGZip_invalid1Zip_invalid2rrr�testSummarizingPsP










zIpaddrUnitTest.testSummarizingcCsl|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�dS)Nz1.1.1.1z1.1.1.2z::1z::2)r
rr�)rrrr�testAddressComparison�sz$IpaddrUnitTest.testAddressComparisoncCsp|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�dS)	Nz
1.1.1.1/24z
1.1.1.1/16z
1.1.1.2/24z
1.1.1.2/16z::1/64z::1/80z::2/64z::2/48)r
rr�)rrrr�testInterfaceComparison�s8z&IpaddrUnitTest.testInterfaceComparisonc	Csbtjd�}tjd�}tjd�}|j||k�|j||k�|j|j|�d�|j|j|�d�|j|j|�d�|j|j|�d�|j|j|�d�|j|j�|j�k�tjd�}tjd�}tjd�}|j||k�|j||k�|j|j|�d�|j|j�|j�k�|jt|j	j|j
�tjd	�}tjd
�}|jt|j
|�|jt|j|�|jt|j
|�|jt|j|�tjd�}|j||k�|j||k�tjd�}|j||k�|j||k�|j||k�|j||k�tjd
�}|j||k�|j||k�|j||k�|j||k�tjd�}tjd�}tjd�}tjd�}||||g}||||g}|j�|j||�||||g}|j�|j||�|j|j
tjd��t�|j|j
tjd��t�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�|jtjd�tjd�k�dS)Nz
1.1.1.0/24z
1.1.1.0/32z
1.1.2.0/24rr'z2001:2000::/96z2001:2001::/96z2001:ffff:2000::/96z::/0z	0.0.0.0/0z
10.1.2.128/25z10.1.3.0/24z10.1.3.0/25z
10.10.10.0/31z
10.10.10.0z
10.10.10.2/31z
10.10.10.2z1.1.1.1z1.1.1.2z::1z::2r?r?r?)rr�r
rZcompare_networksZ_get_networks_keyr�r(r)r�r�r�r�r�r�r�r��sortZassertIsr�r�)	rr�r�r�r�r�rDr�Zunsortedrrr�testNetworkComparison�s�














z$IpaddrUnitTest.testNetworkComparisoncCs$|jttjd�|jttjd�dS)Nz192.168.1.1/24z::1/120)r(r�rr�)rrrr�testStrictNetworkssz!IpaddrUnitTest.testStrictNetworkscCsVtjd�}tjd�}tjd�}|j|jj|��|j|jj|��|j|j|��dS)Nz
1.2.3.0/30z
1.2.2.0/24z1.2.2.64/26)rr�r
r�Zoverlapsr�)rr�Zother2Zother3rrr�testOverlapss


zIpaddrUnitTest.testOverlapscCshd}tj|�}tjd|�}|jt|j�t|j��tjd|�}|j|j|j�|jtjtjd�dS)Nz192.168.0.1z::%sz	::ffff:%sz2001:1.1.1.1:1.1.1.1)	rr�r�rr�r�r�r(r)rZipv4_stringr�Z
v4compat_ipv6Z
v4mapped_ipv6rrr�testEmbeddedIpv4s
zIpaddrUnitTest.testEmbeddedIpv4cCs4|jtjd�tjd��|jtjd�tjd��dS)Nz::FFFF:192.0.2.1z::FFFF:c000:201zFFFF::192.0.2.1zFFFF::c000:201)rrr�)rrrr�testIPv6AddressTooLarge"sz&IpaddrUnitTest.testIPv6AddressTooLargecCs$|j|jjd�|j|jjd�dS)Nr�r�)rr�r�r�)rrrr�
testIPVersion*szIpaddrUnitTest.testIPVersioncCs$|j|jjd�|j|jjd�dS)NrCrM)rr�Z
max_prefixlenr�)rrrr�testMaxPrefixLength.sz"IpaddrUnitTest.testMaxPrefixLengthcCs`|j|jjd�|jtjd�jd�|j|jjd�|jtjd�jd
�|jtjd	�jd�dS)Nsz255.254.253.252s����s X*�zffff:2:3:4:ffff::s
����rEr�z::1:0:0:0:0sr/ss����ssss)rr�Zpackedrr�r�r�)rrrr�
testPacked2s

zIpaddrUnitTest.testPackedcCsttjd�}tjd�}tjd�}tjd�}|jtjt|��|jtjt|��|jtjt|��|jtjt|��dS)Nz1.2.3.4z	::1.2.3.4)	rr�r�rr�r�rQr�rf)rZipv4netZipv4addrZipv6netZipv6addrrrr�
testIpType@s



zIpaddrUnitTest.testIpTypecCs|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd	�j�|jdtjd
�j�|jdtjd�j�|jdtjd�j�|jdtjd
�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j	�|jdtjd�j�|jdtjd�j	�|jdtj
d�j�|jdtj
d�j�|jdtj
d�j�|jdtj
d�j�|jdtj
d�j�|jdtj
d�j�|jdtj
d�j�|jdtj
d�j�|jdtj
d�j�|jdtj
d	�j�|jdtj
d
�j�|jdtj
d�j�|jdtj
d�j�|jtj
d�j	�|j
tj
d�j	�|jdtj
d�j�|jdtj
d�j�|jdtj
d�j�|jdtjd�j�dS)NTz224.1.1.1/31Fz	240.0.0.0z192.168.1.1/17z192.169.0.0z10.255.255.255z11.0.0.0z172.31.255.255z
172.32.0.0z169.254.1.0/24z169.254.100.200/24z169.255.100.200/24z127.100.200.254/32z
127.42.0.0/16z	128.0.0.0z
100.64.0.0/10z192.0.2.128/25z192.0.3.0/24z0.0.0.0z	224.1.1.1z	240.0.0.1z239.255.255.255z192.168.1.1z169.254.100.200z169.255.100.200z	192.0.7.1z203.0.113.1z127.100.200.254z
127.42.0.0)rrr��is_multicastr��is_reserved�
is_private�
is_link_local�is_loopback�	is_globalr��is_unspecifiedr
r�)rrrr�testReservedIpv4Jsx
















zIpaddrUnitTest.testReservedIpv4cCs�|jdtjd�j�|jdtjddd�j�|jdtjd�j�|jdtjd�j�|jdtjd	�j�|jdtjd
�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd
�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j	�|jdtjd�j	�|jdtjd�j	�|jdtjd�j�|jdtjd�j
�|jdtjd�j�|jdtjddd�j�|jdtjd�j�|jdtjd�j�|jdtjd	�j�|jdtjd
�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd
�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j�|jdtjd�j	�|jdtjd�j	�|jdtjd�j�|jdtjd�j�dS)NTzffff::rBrMr'zff00::Fzfdff::zfecf::zfeff:ffff:ffff:ffff::z
fbf:ffff::zfc00::zfc00:ffff:ffff:ffff::zfbff:ffff::zfe00::zfea0::zfebf:ffff::zfe7f:ffff::zfec0::z	0:0::0:01z::1/127z::z::2z0::0z::1z::/127z2001::1/128z
200::1/128z100::z4000::1/128)
rrr�rUZ
is_site_localrWrXr�rYr[rZr�rV)rrrr�testReservedIpv6�sx



















zIpaddrUnitTest.testReservedIpv6cCsL|jtjd�jtjd��|jtjd�jd�|jtjd�jtjd��dS)Nz::ffff:192.168.1.1z192.168.1.1z
::c0a8:101z::ffff:c0a8:101)rrr�Zipv4_mapped)rrrr�testIpv4Mapped�s
zIpaddrUnitTest.testIpv4MappedcCstjd�}tjd�}tjd�}tjd�}tjd�}tjd�}|jtt|j|���tjd�tjd�g�|jtt|j|��|jt	t|j|��|jt	t|j|��|jt|j|��g�|jtt|j|���tjd	�tjd
�tjd�tjd�tjd
�tjd�tjd�tjd�g�dS)Nz10.1.1.0/24z10.1.1.0/26z10.2.1.0/24z10.1.1.0z2001:db8::0/32z10.1.1.5/32z10.1.1.64/26z
10.1.1.128/25z10.1.1.0/30z10.1.1.4/32z10.1.1.6/31z10.1.1.8/29z10.1.1.16/28z10.1.1.32/27)
rr�r�rr�r�Zaddress_excluder(r�r))rr8�addr2�addr3�addr4�addr5�addr6rrr�testAddrExclude�s,





zIpaddrUnitTest.testAddrExcludecCs�|jttjd��ttjd���|jttjd��ttjd���|jttjd��ttjd���|jttjd��ttjttjd�j����tjd�}tjd�}i}d||j<d||j	<d||<d||<|j
|j|�|j
||�dS)Nz10.1.1.0/24z10.1.1.0z1.2.3.4z1::)r�hashrr�r�r�r�r�r�r�r�)rr�r�Zdummyrrr�testHashs$



zIpaddrUnitTest.testHashcCs6|j}|jd|j�|j}|jt|jddd�dS)Nz
1.2.3.0/24rBrMr')r�r�
compressedr�r(r�Z_string_from_ip_int)rr�rrr�testIPBasesszIpaddrUnitTest.testIPBasescCsD|j}|jd|j�|jd|j�|jd|j�|jdt|��dS)Nz2001:658:22a:cafe::/64z)2001:658:22a:cafe::/ffff:ffff:ffff:ffff::z)2001:658:22a:cafe::/::ffff:ffff:ffff:ffff)r�r�with_prefixlen�with_netmask�
with_hostmaskru)rr�rrr�testIPv6NetworkHelperssz%IpaddrUnitTest.testIPv6NetworkHelperscCsD|j}|jd|j�|jd|j�|jd|j�|jdt|��dS)Nz
1.2.3.0/24z1.2.3.0/255.255.255.0z1.2.3.0/0.0.0.255)r�rrirjrkru)rr�rrr�testIPv4NetworkHelpers$s
z%IpaddrUnitTest.testIPv4NetworkHelperscCs|tjd�}tj|�}tjd�}tj|�}tjd�}tjd�}|j||�|j||�|j|tj|��|j|tj|��dS)Nz10.1.1.0/24z2001:658:22a:cafe:200::1/64z1.1.1.1z2001:658:22a:cafe:200::1)rr�r�rQrfr)rr8r_r`rarbrcrrr�testCopyConstructor+s





z"IpaddrUnitTest.testCopyConstructorcCs^ddddddddd	d
ddd
dddddd�}x.t|j��D]\}}|j|ttj|���q8WdS)Nz1:2:3:4:5:6:7:8/128z2001:0:0:4::8/128z2001::4:5:6:7:8/128z2001:0:3:4:5:6:7:8/128z0:0:3::ffff/128z::4:0:0:0:ffff/128z::5:0:0:ffff/128z1::4:0:0:7:8/128z::/128z::/0z::1/128z2001:658:22a:cafe::/66z
::102:304/128z1:2:3:4:5:ffff:102:304/128z0:7:6:5:4:3:2:1/128z0:7:6:5:4:3:2:0/128z7:6:5:4:3:2:1:0/128z0:6:5:4:3:2:1:0/128)z1:2:3:4:5:6:7:8z2001:0:0:4:0:0:0:8z2001:0:0:4:5:6:7:8z2001:0:3:4:5:6:7:8z0:0:3:0:0:0:0:ffffz0:0:0:4:0:0:0:ffffz0:0:0:0:5:0:0:ffffz1:0:0:4:0:0:7:8z0:0:0:0:0:0:0:0z0:0:0:0:0:0:0:0/0z0:0:0:0:0:0:0:1z*2001:0658:022a:cafe:0000:0000:0000:0000/66z	::1.2.3.4z1:2:3:4:5:ffff:1.2.3.4z::7:6:5:4:3:2:1z::7:6:5:4:3:2:0z7:6:5:4:3:2:1::z0:6:5:4:3:2:1::)r��itemsrrurr�)rZtest_addressesZuncompressedrgrrr�testCompressIPv6Address8s*z&IpaddrUnitTest.testCompressIPv6AddresscCsxtjd�}tjd�}tjd�}tjd�}|jd|j�|jdtjd�j�|jd|j�|jd	|j�|jd|j�dS)
Nz2001::1z2001:0:5ef5:79fd:0:59d:a0e5:ba1z	2001::/96z
192.168.178.1z+2001:0000:0000:0000:0000:0000:0000:0001/128z+0000:0000:0000:0000:0000:0000:0000:0001/128z::1/128z'2001:0000:5ef5:79fd:0000:059d:a0e5:0ba1z*2001:0000:0000:0000:0000:0000:0000:0000/96)rr�rfr�rQrZexploded)rr8r_r`rarrr�testExplodeShortHandIpStrRs



z(IpaddrUnitTest.testExplodeShortHandIpStrcCs4tjd�}tjd�}|jd|j�|jd|j�dS)Nz	127.0.0.1z2001:db8::1z1.0.0.127.in-addr.arpaz21.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.zb.d.0.1.0.0.2.ip6.arpazH1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa)rrQrfrZreverse_pointer)rr8r_rrr�testReversePointerbs

z!IpaddrUnitTest.testReversePointercCs(|jdt|j��|jdt|j��dS)Nil	�/YE� )rr�r�r�)rrrr�testIntRepresentationjsz$IpaddrUnitTest.testIntRepresentationcCs,|jtjd�jd�|jtjd�jd�dS)Nr'r�r�)rrr�r�r�)rrrr�testForceVersionoszIpaddrUnitTest.testForceVersioncCsd|j|jjd�|j|jjd�|j|jjd�|j|jjd�|j|jjd�|j|jjd�dS)Nz
1.2.3.4/24z1.2.3.4/255.255.255.0z1.2.3.4/0.0.0.255z2001:658:22a:cafe:200::1/64z.2001:658:22a:cafe:200::1/ffff:ffff:ffff:ffff::z.2001:658:22a:cafe:200::1/::ffff:ffff:ffff:ffff)rr�rirjrkr�)rrrr�testWithStarss




zIpaddrUnitTest.testWithStarcCs�|jd|jj�|jd|jj�|jd|jj�|j|jjtjd��|j|jjtjd��|j|jjtjd��|j	d|jj�|j	d|jj�|jd|j
j�|jd|j
j�|j|j
jtjd��|j|jj
jtjd��|j|j
jtjd��|j|j
jtjd	��|j|jj
jtjd��|j|jj
jtjd	��|j	d|j
j�|j	d|j
j�|j	d|jj
j�|j	d|jj
j�dS)
Nr�r
r}z1.2.3.0z	1.2.3.255z	0.0.0.255z2001:658:22a:cafe::z%2001:658:22a:cafe:ffff:ffff:ffff:ffffz::ffff:ffff:ffff:ffff)r�r��_cacherr�rrQr
r}r�r�rfr�r�)rrrr�testNetworkElementCaching�s>




z(IpaddrUnitTest.testNetworkElementCachingcCs�tjd�}tjd�}d}|j||ftj|�j�d}|jtj|�j�d}|jtj|�j�tjd�}|jtjd�tjd�f|j�dS)	Nz
65.54.227.120z
192.0.2.45z'2001:0000:4136:e378:8000:63bf:3fff:fdd2z#2000::4136:e378:8000:63bf:3fff:fdd2z'2001:0001:4136:e378:8000:63bf:3fff:fdd2z2001:0:5ef5:79fd:0:59d:a0e5:ba1z94.245.121.253z95.26.244.94)rrQrr�Zteredor�rf)rZserverZclientZteredo_addr�bad_addrrrr�
testTeredo�s




zIpaddrUnitTest.testTeredocCs8tjd�}tjd�}|jtjd�|j�|j|j�dS)Nz2002:ac1d:2d64::1z2000:ac1d:2d64::1z
172.29.45.100)rr�rrQZ	sixtofourr�)rZ
sixtofouraddrrxrrr�
testsixtofour�s


zIpaddrUnitTest.testsixtofourN)Jrrrr�r�r�r�r�r�r�r�r�r�r�rrrrr	rrrrrr"r&r'r,r-r.r1r3r4r5r6r9r<r>r?r@rArBrCrErHrIrJrLrMrNrOrPrQrRrSrTr\r]r^rdrfrhrlrmrnrprqrrrsrtrurwryrzrrrrr��s�?2

			


!O<
V
IM	
-r��__main__)r�Zunittestr#r�	functoolsr*r1rrbZTestCaserr r8rKrPrertr�r�r�r�r�r��total_orderingr�r�r�r�r�mainrrrr�<module>sN6#(`G7


Youez - 2016 - github.com/yon3zu
LinuXploit