î
{ÐR\‘  ã               @   s²   d  d l  Z  d  d l m Z d d l m Z d d l m Z d  d l Z d  d l Z d d „  Z Gd d	 „  d	 e j	 ƒ Z
 e j e
 e ƒ d
 d „  Z e d k r® e j ƒ  n  d S)é    N)Úwrapsé   )Ú	testutils)Úunittestc                s"   t  ˆ  ƒ ‡  f d d †  ƒ } | S)Nc                sX   t  j d  d … d k  rN y d d  l } WqN t k
 rJ |  j d ƒ SYqN Xn  ˆ  |  ƒ S)Né   é   r   z 'ipaddress' module not available)r   r   )ÚsysÚversion_infoÚ	ipaddressÚImportErrorZskipTest)Úselfr
   )Úf© úR/var/www/dbchiro/venv/lib/python3.4/site-packages/psycopg2/tests/test_ipaddress.pyÚskip_if_no_ipaddress_   s    z3skip_if_no_ipaddress.<locals>.skip_if_no_ipaddress_)r   )r   r   r   )r   r   Úskip_if_no_ipaddress   s    
r   c               @   s|   e  Z d  Z d d „  Z e j d d ƒ d d „  ƒ Z d d „  Z d	 d
 „  Z e j d d ƒ d d „  ƒ Z	 d d „  Z
 d S)ÚNetworkingTestCasec             C   s	  d d  l  } |  j j ƒ  } t j j | ƒ | j d ƒ |  j | j ƒ  d d  k ƒ | j d ƒ | j ƒ  d } |  j t	 | | j
 ƒ t | ƒ ƒ |  j | | j d ƒ ƒ | j d ƒ | j ƒ  d } |  j t	 | | j ƒ t | ƒ ƒ |  j | | j d ƒ ƒ d  S)Nr   zselect null::inetzselect '127.0.0.1/24'::inetz127.0.0.1/24z!select '::ffff:102:300/128'::inetz::ffff:102:300/128)r
   ÚconnÚcursorÚpsycopg2ÚextrasÚregister_ipaddressÚexecuteÚ
assertTrueÚfetchoneÚ
isinstanceÚIPv4InterfaceÚreprÚassertEqualÚip_interfaceÚIPv6Interface)r   ÚipÚcurÚobjr   r   r   Útest_inet_cast,   s    ""z!NetworkingTestCase.test_inet_casté   r   c             C   sÝ   d d  l  } |  j j ƒ  } t j j | ƒ | j d ƒ | j ƒ  d } |  j | d d  k ƒ |  j	 | d | j
 d ƒ ƒ |  j	 | d | j
 d ƒ ƒ |  j t | d | j ƒ | ƒ |  j t | d | j ƒ | ƒ d  S)Nr   z4select '{NULL,127.0.0.1,::ffff:102:300/128}'::inet[]r   z	127.0.0.1r   z::ffff:102:300/128)r
   r   r   r   r   r   r   r   r   r   r   r   r   r    )r   r!   r"   Úlr   r   r   Útest_inet_array_cast>   s     z'NetworkingTestCase.test_inet_array_castc             C   s›   d d  l  } |  j j ƒ  } t j j | ƒ | j d | j d ƒ g ƒ |  j | j	 ƒ  d d ƒ | j d | j d ƒ g ƒ |  j | j	 ƒ  d d ƒ d  S)Nr   z	select %sz127.0.0.1/24z::ffff:102:300/128)
r
   r   r   r   r   r   r   r   r   r   )r   r!   r"   r   r   r   Útest_inet_adaptK   s    z"NetworkingTestCase.test_inet_adaptc             C   s	  d d  l  } |  j j ƒ  } t j j | ƒ | j d ƒ |  j | j ƒ  d d  k ƒ | j d ƒ | j ƒ  d } |  j t	 | | j
 ƒ t | ƒ ƒ |  j | | j d ƒ ƒ | j d ƒ | j ƒ  d } |  j t	 | | j ƒ t | ƒ ƒ |  j | | j d ƒ ƒ d  S)Nr   zselect null::cidrzselect '127.0.0.0/24'::cidrz127.0.0.0/24z!select '::ffff:102:300/128'::cidrz::ffff:102:300/128)r
   r   r   r   r   r   r   r   r   r   ÚIPv4Networkr   r   Ú
ip_networkÚIPv6Network)r   r!   r"   r#   r   r   r   Útest_cidr_castV   s    ""z!NetworkingTestCase.test_cidr_castc             C   sÝ   d d  l  } |  j j ƒ  } t j j | ƒ | j d ƒ | j ƒ  d } |  j | d d  k ƒ |  j	 | d | j
 d ƒ ƒ |  j	 | d | j
 d ƒ ƒ |  j t | d | j ƒ | ƒ |  j t | d | j ƒ | ƒ d  S)Nr   z4select '{NULL,127.0.0.1,::ffff:102:300/128}'::cidr[]r   z	127.0.0.1r   z::ffff:102:300/128)r
   r   r   r   r   r   r   r   r   r   r*   r   r)   r+   )r   r!   r"   r&   r   r   r   Útest_cidr_array_casth   s     z'NetworkingTestCase.test_cidr_array_castc             C   s›   d d  l  } |  j j ƒ  } t j j | ƒ | j d | j d ƒ g ƒ |  j | j	 ƒ  d d ƒ | j d | j d ƒ g ƒ |  j | j	 ƒ  d d ƒ d  S)Nr   z	select %sz127.0.0.0/24z::ffff:102:300/128)
r
   r   r   r   r   r   r   r*   r   r   )r   r!   r"   r   r   r   Útest_cidr_adaptu   s    z"NetworkingTestCase.test_cidr_adaptN)Ú__name__Ú
__module__Ú__qualname__r$   r   Zskip_before_postgresr'   r(   r,   r-   r.   r   r   r   r   r   +   s   r   c               C   s   t  j ƒ  j t ƒ S)N)r   Z
TestLoaderZloadTestsFromNamer/   r   r   r   r   Ú
test_suiteƒ   s    r2   Ú__main__)r   Ú	functoolsr   Ú r   r   r   Zpsycopg2.extrasr   ZConnectingTestCaser   Zdecorate_all_testsr2   r/   Úmainr   r   r   r   Ú<module>   s   U