ó
\K]c           @   s¨   d  d l  m Z d  d l Z d  d l m Z d  d l  m Z m Z d  d l	 Z	 d „  Z
 d „  Z d „  Z d „  Z d	 e j f d
 „  ƒ  YZ e d k r¤ e j ƒ  n  d S(   iÿÿÿÿ(   t   unittest_supportN(   t   compile_isolated(   t   typest   njitc         C   s   t  j |  ƒ S(   N(   R   t   int32(   t   x(    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   float_to_int   s    c         C   s   t  j |  ƒ d S(   Ni   (   R   t   float64(   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   int_to_float   s    c         C   s   t  j |  ƒ S(   N(   R   t   uint32(   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   float_to_unsigned   s    c         C   s   t  j |  ƒ S(   N(   R   t
   complex128(   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   float_to_complex   s    t   TestCastingc           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s±   t  } t | t j g ƒ } | j } |  j | j j t j ƒ |  j | d ƒ | d ƒ ƒ |  j | d ƒ t	 d ƒ ƒ |  j | d ƒ | d ƒ ƒ |  j | d ƒ t	 d ƒ ƒ d  S(   Ngš™™™™™(@gš™™™™™(À(
   R   R   R   t   float32t   entry_pointt   assertEqualt	   signaturet   return_typeR   t   int(   t   selft   pyfunct   crt   cfunc(    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   test_float_to_int   s    	c         C   sw   t  } t | t j g ƒ } | j } |  j | j j t j ƒ |  j | d ƒ | d ƒ ƒ |  j | d ƒ d d ƒ d  S(   NiA  g     t@i   (	   R   R   R   t   int64R   R   R   R   R   (   R   R   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   test_int_to_float$   s    	c         C   s   t  } t | t j g ƒ } | j } |  j | j j t j ƒ |  j | d ƒ | d ƒ ƒ |  j | d ƒ t	 j
 d t	 j d d ƒ ƒ d ƒ d  S(   Ng®Gáz®	@t   It   ii   i    (   R
   R   R   R   R   R   R   R   R	   t   structt   unpackt   pack(   R   R   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   test_float_to_unsigned-   s    	!c         C   ss   t  } t | t j g ƒ } | j } |  j | j j t j ƒ |  j | d ƒ | d ƒ ƒ |  j | d ƒ d ƒ d  S(   Ng®Gáz®	Ày                y®Gáz®	À        (	   R   R   R   R   R   R   R   R   R   (   R   R   R   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   test_float_to_complex7   s    	c            sŒ   t  d ƒ d „  ƒ ‰  ˆ  j ƒ  t  d ƒ ‡  f d †  ƒ } t j d g d t j ƒ} |  j | | ƒ | d ƒ |  j t ˆ  j ƒ d ƒ d	 S(
   s<   Make sure this compiles.

        Cast C to A array
        s	   f8(f8[:])c         S   s   |  d S(   Ni    (    (   R   (    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   innerD   s    s   f8(f8[::1])c            s
   ˆ  |  ƒ S(   N(    (   R   (   R"   (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   driverJ   s    iÒ  t   dtypei    i   N(   R   t   disable_compilet   npt   arrayR   R   t   lent	   overloads(   R   R#   R   (    (   R"   s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   test_array_to_array?   s    
c         C   sr   t  j t  j ƒ } t  j t  j ƒ } | | ƒ } t | ƒ d „  ƒ } |  j | d ƒ d ƒ |  j | d ƒ ƒ d S(   s   
        Test error due mishandling of Optional to Optional casting

        Related issue: https://github.com/numba/numba/issues/1718
        c         S   s   |  S(   N(    (   t   a(    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   foo]   s    i   N(   R   t   Optionalt   intpR   R   R   t   assertIsNonet   None(   R   t   opt_intt   opt_fltt   sigR,   (    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   test_optional_to_optionalR   s    (   t   __name__t
   __module__R   R   R    R!   R*   R4   (    (    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyR      s   				
		t   __main__(   t   numbaR    t   unittestt   numpyR&   t   numba.compilerR   R   R   R   R   R   R
   R   t   TestCaseR   R5   t   main(    (    (    s7   lib/python2.7/site-packages/numba/tests/test_casting.pyt   <module>   s   				M