
\K]c           @  s   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l j	 Z
 d  d l m Z m Z d  d l m Z m Z m Z d d l m Z d   Z d   Z d	   Z d
   Z d e f d     YZ e d k r e
 j   n  d S(   i(   t   print_functionN(   t   compile_isolatedt   Flags(   t   typest   jitt   numpy_supporti   (   t   TestCasec         C  s   |  S(   N(    (   t   x(    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   identity   s    c         C  s   |  | S(   N(    (   R   t   y(    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   addition   s    c         C  s
   |  | k S(   N(    (   R   R	   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   equality   s    c         C  s   |  S(   N(    (   R   R	   t   z(    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   foobar   s    t   TestConversionc           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 d   Z d   Z RS(   s-   
    Testing Python to Native conversion
    c         C  s$  t  } t | t j g d t j } d d d d g } x' | D] } |  j | j |  |  q= Wx0 t j |  D] } |  j | j |  |  qp Wt | t j g d t j } d d	 d
 d g } x' | D] } |  j | j |  |  q Wx0 t j |  D] } |  j | j |  |  q Wd  S(   Nt   return_typey              ?i   iy                y      ?      ?y            y      ?        y      ?      ?y            y      ?        (   R   R   R   t	   complex64t   assertEqualt   entry_pointt   npt
   complex128(   t   selft   pyfunct   crest   xsR   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_complex_identity"   s    c         C  sd  t  } t | t j t j g d t j } d d d d g } x4 | D], } | } |  j | j | |  | |  qC Wx= t j |  D], } | } |  j | j | |  | |  q Wt | t j t j g d t j } d d	 d
 d g } x4 | D], } | } |  j | j | |  | |  q Wx= t j |  D], } | } |  j | j | |  | |  q0Wd  S(   NR   y              ?i   iy                y      ?      ?y            y      ?        y      ?      ?y            y      ?        (   R
   R   R   R   R   R   R   R   (   R   R   R   R   R   R	   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_complex_addition6   s&    $$$c         C  s   t  } t | t j t j g  } | j } t t f } d } xB t j	 | |  D]. \ } } |  j
 | | |  | | |   qO Wd  S(   Nii    i   (   ii    i   (   R   R   R   t   booleant   intpR   t   Truet   Falset	   itertoolst   productR   (   R   R   R   t   cfuncR   t   ys(    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_boolean_as_intO   s    	c         C  s   t  } t | t j t j g  } | j } t t f } d } xB t j	 | |  D]. \ } } |  j
 | | |  | | |   qO Wd  S(   Nii    i   (   ii    i   (   R   R   R   R   t   float64R   R   R   R   R    R   (   R   R   R   R!   R   R"   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_boolean_as_floatZ   s    	c         C  s   t  } t | t j t j g  } | j } t t f } t t f } xB t j | |  D]. \ } } |  j	 | | |  | | |   qU Wd  S(   N(
   R   R   R   R   R   R   R   R   R    R   (   R   R   R   R!   R   R"   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_boolean_eq_booleane   s    	c         C  s?   d   } |  j  t  ! t d d t |  d  Wd  QXd  S(   Nc         S  s   |  S(   N(    (   R   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   fv   s    s   uintp(uintp)t   nopythoni(   t   assertRaisest   OverflowErrorR   R   (   R   R'   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_negative_to_unsignedu   s    	c      	   C  s   t  } t | t j t j t j g d t j } | j } d d d f } |  j t  / x' | D] \ } } } | | | |  q_ WWd  QXd  S(   NR   ii    i   (   ii    i   (   i    ii   (   i    i   i(   R   R   R   t   uint64R   R)   R*   (   R   R   R   R!   t   test_fail_argst   at   bt   c(    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt'   test_multiple_args_negative_to_unsigned}   s    	c         C  se  t  } t j d t j f d t j f d t j f g  } t j |  } t | | t j t j g d | } | j	 } t j
 d d | } t j | j  d | _ t j | j  d | _ t j | j  d | _ |  j |  y | d d f | d d f f } x= | D]5 \ } }	 }
 |  j t   | | |	 |
  Wd  QXqW~ ~ ~	 ~
 t j   Wd  QXd  S(	   Nt   pt   rowt   colR   i   t   dtypei   i(   R   R   R5   R$   R   t
   from_dtypeR   R   R,   R   t   recarrayt   aranget   sizeR2   R3   R4   t   assertRefCountR)   R*   t   gct   collect(   R   R   t   mystruct_dtt   mystructR   R!   t   st1R-   R.   R/   R0   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_multiple_args_records   s&    
	c         C  s5   d   } |  j  |   t d d t |     d  S(   Nc           S  s   d  S(   N(    (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyR'      s    s   ()R(   (   R   R   R   (   R   R'   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_with_no_parameters   s    	c           s  d   }   f d       |  } t  | | t j f  } |  j |    | j | d  Wd QX|  j |   + |  j t   | j | d  Wd QXWd QXt  | t j | f  } |  j |    | j d |  Wd QX|  j |   + |  j t   | j d |  Wd QXWd QXd S(   sF   
        Check that argument cleanup doesn't leak references.
        c         S  s   d  S(   N(    (   R   R	   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyR'      s    c           s@   |  g } t  |  t  r< x! |  D] } |   |  7} q Wn  | S(   N(   t
   isinstancet   tuple(   t   objt   objst   v(   t   _objects(    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyRG      s
    	i   Ni(   R   R   t   uint32R:   R   R)   R*   (   R   t   typRD   R'   t   objectsR   (    (   RG   s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   check_argument_cleanup   s    	c         C  s8   t  t d   } |  j t j t j d d  |  d  S(   Nt   xyzi   t   C(   t
   memoryviewt	   bytearrayRK   R   t   Buffert   intc(   R   t   mem(    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_cleanup_buffer   s    c         C  s]   t  j d t  j f d t  j f g  } t  j d d | } |  j t j |  | d  d  S(   NR   R	   i   R5   i    (   R   R5   R$   t   zerosRK   R   R6   (   R   R5   t   recarr(    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_cleanup_record   s    'c         C  sP   t  t d   } t j t j t j d d  d  } |  j | | | f  d  S(   NRL   i   RM   i   (   RN   RO   R   t   UniTupleRP   RQ   RK   (   R   RR   t   tp(    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_cleanup_tuple   s    $c         C  sG   t  t d   } t j t j t j d d   } |  j | |  d  S(   NRL   i   RM   (   RN   RO   R   t   OptionalRP   RQ   RK   (   R   RR   RX   (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   test_cleanup_optional   s    !(   t   __name__t
   __module__t   __doc__R   R   R#   R%   R&   R+   R1   R@   RA   RK   RS   RV   RY   R[   (    (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyR      s   													t   __main__(   t
   __future__R    t   arrayR;   R   t   syst   numpyR   t   numba.unittest_supportt   unittest_supportt   unittestt   numba.compilerR   R   t   numbaR   R   R   t   supportR   R   R
   R   R   R   R\   t   main(    (    (    s:   lib/python2.7/site-packages/numba/tests/test_conversion.pyt   <module>   s    				