ó
j1dc           @  sj  d  d l  m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d l	 m
 Z
 m Z m Z d  d l m Z d  d l m Z d  d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d	 l  m! Z! m" Z" m# Z# m$ Z$ m% Z% m& Z& d
 e f d „  ƒ  YZ' d e f d „  ƒ  YZ( d e f d „  ƒ  YZ) d e f d „  ƒ  YZ* d S(   iÿÿÿÿ(   t   unicode_literals(   t   VERSION(   t   ip_interfacet
   ip_network(   t   EUI(   t   Caset   Ft   When(   t   TestCase(   t   skipIf(   t   Abbrevt	   Broadcastt   Familyt   Hostt   Hostmaskt   Macaddr8Set7bitt   Masklent   Netmaskt   Networkt
   SetMasklent   AsTextt   IsSameFamilyt   Merget   Trunc(   t   AggregateTestChildModelt   AggregateTestModelt   CidrTestModelt   InetTestModelt   MACTestModelt   MAC8TestModelt   TestInetFieldFunctionsc           B  s}   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z RS(   c         C  s*   t  j j d d ƒ t  j j d d ƒ d  S(   Nt   fieldu   10.1.0.1/16u   2001:4f8:3:ba::1/64(   R   t   objectst   create(   t   self(    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   setUp&   s    c         C  sS   t  j j d t t d ƒ ƒ ƒ } |  j | d j d ƒ |  j | d j d ƒ d  S(   Nt   abbrvu   fieldi    u   10.1.0.1/16i   u   2001:4f8:3:ba::1/64(   R   R    t   annotateR
   R   t   assertEqualR$   (   R"   t   qs(    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_abbreviate*   s    !c         C  s_   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ |  j | d j t d ƒ ƒ d  S(   Nt	   broadcastu   fieldi    u   10.1.255.255/16i   u$   2001:4f8:3:ba:ffff:ffff:ffff:ffff/64(   R   R    R%   R   R   R&   R)   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_broadcast/   s    !c         C  sS   t  j j d t t d ƒ ƒ ƒ } |  j | d j d ƒ |  j | d j d ƒ d  S(   Nt   familyu   fieldi    i   i   i   (   R   R    R%   R   R   R&   R+   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_family4   s    !c         C  sS   t  j j d t t d ƒ ƒ ƒ } |  j | d j d ƒ |  j | d j d ƒ d  S(   Nt   hostu   fieldi    u   10.1.0.1i   u   2001:4f8:3:ba::1(   R   R    R%   R   R   R&   R-   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt	   test_host9   s    !c         C  s_   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ |  j | d j t d ƒ ƒ d  S(   Nt   hostmasku   fieldi    u   0.0.255.255i   u   ::ffff:ffff:ffff:ffff(   R   R    R%   R   R   R&   R/   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_hostmask>   s    !c         C  sS   t  j j d t t d ƒ ƒ ƒ } |  j | d j d ƒ |  j | d j d ƒ d  S(   Nt   masklenu   fieldi    i   i   i@   (   R   R    R%   R   R   R&   R1   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_masklenC   s    !c         C  s_   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ |  j | d j t d ƒ ƒ d  S(   Nt   netmasku   fieldi    u   255.255.0.0i   u   ffff:ffff:ffff:ffff::(   R   R    R%   R   R   R&   R3   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_netmaskH   s    !c         C  s_   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ |  j | d j t d ƒ ƒ d  S(   Nt   networku   fieldi    u   10.1.0.0/16i   u   2001:4f8:3:ba::/64(   R   R    R%   R   R   R&   R5   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_networkM   s    !c         C  s½   t  j j d t t d ƒ ƒ ƒ j d t t d d d t t d ƒ d ƒ ƒ t d d d t t d ƒ d ƒ ƒ ƒ ƒ t  j j	 ƒ  } |  j
 | d	 j t d
 ƒ ƒ |  j
 | d j t d ƒ ƒ d  S(   NR+   u   fieldR   i   t   theni   i   ix   i    u   10.1.0.1/24i   u   2001:4f8:3:ba::1/120(   R   R    R%   R   R   t   updateR   R   R   t   allR&   R   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_set_masklenR   s    !(c         C  sS   t  j j d t t d ƒ ƒ ƒ } |  j | d j d ƒ |  j | d j d ƒ d  S(   Nt   textu   fieldi    u   10.1.0.1/16i   u   2001:4f8:3:ba::1/64(   R   R    R%   R   R   R&   R;   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_as_texta   s    !c         C  s¸   t  j j d d ƒ } t j j d | d d d d ƒ t j j d | d d d d ƒ t j j d	 t t d
 ƒ t d ƒ ƒ ƒ j d ƒ } |  j | d j	 t
 ƒ |  j | d j	 t ƒ d  S(   Nt   inetu	   0.0.0.0/0t   parentu   10.1.0.1/16R5   u   10.1.0.0/16u   2001:4f8:3:ba::1/64u   2001:4f8:3:ba::/64t   is_same_familyu   inetu   parent__inetu   idi    i   (   R   R    R!   R   R%   R   R   t   order_byR&   R?   t   Truet   False(   R"   R>   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_is_same_familyf   s    	c         C  sÒ   t  j j d d ƒ } t j j d | d d d d ƒ t  j j d d ƒ } t j j d | d d d d	 ƒ t j j d
 t t d ƒ t d ƒ ƒ ƒ } |  j | d j | d j	 ƒ |  j | d j | d j	 ƒ d  S(   NR=   u   10.0.0.0/24R>   u   10.0.1.0/24R5   u   10.0.0.0/23u   2001:4f8:3:ba::/64u   2001:4f8:3:bb::/64u   2001:4f8:3:ba::/63t   mergedu   inetu   parent__ineti    i   (
   R   R    R!   R   R%   R   R   R&   RD   R5   (   R"   R>   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt
   test_mergex   s    (   t   __name__t
   __module__R#   R(   R*   R,   R.   R0   R2   R4   R6   R:   R<   RC   RE   (    (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR   %   s   												t   TestCidrFieldFunctionsc           B  s›   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z e e d k  d ƒ d „  ƒ Z RS(   c         C  s*   t  j j d d ƒ t  j j d d ƒ d  S(   NR   u   10.1.0.0/16u   2001:4f8:3:ba::/64(   R   R    R!   (   R"   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR#      s    c         C  sS   t  j j d t t d ƒ ƒ ƒ } |  j | d j d ƒ |  j | d j d ƒ d  S(   NR$   u   fieldi    u   10.1/16i   u   2001:4f8:3:ba/64(   R   R    R%   R
   R   R&   R$   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR(   ‘   s    !c         C  s_   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ |  j | d j t d ƒ ƒ d  S(   NR)   u   fieldi    u   10.1.255.255/16i   u$   2001:4f8:3:ba:ffff:ffff:ffff:ffff/64(   R   R    R%   R   R   R&   R)   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR*   –   s    !c         C  sS   t  j j d t t d ƒ ƒ ƒ } |  j | d j d ƒ |  j | d j d ƒ d  S(   NR+   u   fieldi    i   i   i   (   R   R    R%   R   R   R&   R+   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR,   ›   s    !c         C  sS   t  j j d t t d ƒ ƒ ƒ } |  j | d j d ƒ |  j | d j d ƒ d  S(   NR-   u   fieldi    u   10.1.0.0i   u   2001:4f8:3:ba::(   R   R    R%   R   R   R&   R-   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR.       s    !c         C  s_   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ |  j | d j t d ƒ ƒ d  S(   NR/   u   fieldi    u   0.0.255.255i   u   ::ffff:ffff:ffff:ffff(   R   R    R%   R   R   R&   R/   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR0   ¥   s    !c         C  sS   t  j j d t t d ƒ ƒ ƒ } |  j | d j d ƒ |  j | d j d ƒ d  S(   NR1   u   fieldi    i   i   i@   (   R   R    R%   R   R   R&   R1   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR2   ª   s    !c         C  s_   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ |  j | d j t d ƒ ƒ d  S(   NR3   u   fieldi    u   255.255.0.0i   u   ffff:ffff:ffff:ffff::(   R   R    R%   R   R   R&   R3   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR4   ¯   s    !c         C  s_   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ |  j | d j t d ƒ ƒ d  S(   NR5   u   fieldi    u   10.1.0.0/16i   u   2001:4f8:3:ba::/64(   R   R    R%   R   R   R&   R5   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR6   ´   s    !c         C  s½   t  j j d t t d ƒ ƒ ƒ j d t t d d d t t d ƒ d ƒ ƒ t d d d t t d ƒ d ƒ ƒ ƒ ƒ t  j j	 ƒ  } |  j
 | d	 j t d
 ƒ ƒ |  j
 | d j t d ƒ ƒ d  S(   NR+   u   fieldR   i   R7   i   i   ix   i    u   10.1.0.0/24i   u   2001:4f8:3:ba::/120(   R   R    R%   R   R   R8   R   R   R   R9   R&   R   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR:   ¹   s    !(c         C  sS   t  j j d t t d ƒ ƒ ƒ } |  j | d j d ƒ |  j | d j d ƒ d  S(   NR;   u   fieldi    u   10.1.0.0/16i   u   2001:4f8:3:ba::/64(   R   R    R%   R   R   R&   R;   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR<   È   s    !c         C  s¸   t  j j d d ƒ } t j j d | d d d d ƒ t j j d | d d d d ƒ t j j d	 t t d
 ƒ t d ƒ ƒ ƒ j d ƒ } |  j | d j	 t
 ƒ |  j | d j	 t ƒ d  S(   NR5   u	   0.0.0.0/0R>   R=   u   10.1.0.1/16u   10.1.0.0/16u   2001:4f8:3:ba::1/64u   2001:4f8:3:ba::/64R?   u   networku   parent__networku   idi    i   (   R   R    R!   R   R%   R   R   R@   R&   R?   RA   RB   (   R"   R>   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyRC   Í   s    	c         C  sÒ   t  j j d d ƒ } t j j d | d d d d ƒ t  j j d d ƒ } t j j d | d d d d	 ƒ t j j d
 t t d ƒ t d ƒ ƒ ƒ } |  j | d j | d j	 ƒ |  j | d j | d j	 ƒ d  S(   NR5   u   10.0.0.0/24R>   R=   u   10.0.1.0/24u   10.0.0.0/23u   2001:4f8:3:ba::/64u   2001:4f8:3:bb::/64u   2001:4f8:3:ba::/63RD   u   networku   parent__networki    i   (
   R   R    R!   R   R%   R   R   R&   RD   R5   (   R"   R>   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyRE   ß   s    i   i    uF   Django unable to resolve type of num_ips to be IntegerField until 2.0.c      	   C  sb   t  j j d t t d ƒ ƒ d d d t t d ƒ ƒ ƒ j d d ƒ } |  j | d j d ƒ d  S(	   NR+   u   fieldt   num_ipsi   i    i   i    i   (	   R   R    R%   R   R   R   t   filterR&   RI   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_read_me_exampleò   s
     	(   i   i    (   RF   RG   R#   R(   R*   R,   R.   R0   R2   R4   R6   R:   R<   RC   RE   R	   R   RK   (    (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyRH   Œ   s   													t   TestMacFieldFunctionsc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  s   t  j j d d ƒ d  S(   NR   u   aa:bb:cc:dd:ee:ff(   R   R    R!   (   R"   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR#   ÿ   s    c         C  sB   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ d  S(   Nt   truncu   fieldi    u   aa:bb:cc:00:00:00(   R   R    R%   R   R   R&   RM   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt
   test_trunc  s    !c         C  sB   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ d  S(   Nt   eui64u   fieldi    u   aa:bb:cc:ff:fe:dd:ee:ff(   R   R    R%   R   R   R&   RO   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   test_macaddr8_to7bit  s    !(   RF   RG   R#   RN   RP   (    (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyRL   þ   s   		t   TestMac8FieldFunctionsc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  s   t  j j d d ƒ d  S(   NR   u   88:99:aa:bb:cc:dd:ee:ff(   R   R    R!   (   R"   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyR#     s    c         C  sB   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ d  S(   NRM   u   fieldi    u   88:99:aa:00:00:00:00:00(   R   R    R%   R   R   R&   RM   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyRN     s    !c         C  sB   t  j j d t t d ƒ ƒ ƒ } |  j | d j t d ƒ ƒ d  S(   NRO   u   fieldi    u   8a:99:aa:bb:cc:dd:ee:ff(   R   R    R%   R   R   R&   RO   R   (   R"   R'   (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyRP     s    !(   RF   RG   R#   RN   RP   (    (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyRQ     s   		N(+   t
   __future__R    t   djangoR   t	   ipaddressR   R   t   netaddrR   t   django.db.modelsR   R   R   t   django.testR   t   unittestR	   t   netfields.functionsR
   R   R   R   R   R   R   R   R   R   R   R   R   R   t   test.modelsR   R   R   R   R   R   R   RH   RL   RQ   (    (    (    sM   /home/jfunk/projects/django-postgresql-netfields/test/tests/test_functions.pyt   <module>   s   ^.
gr