ó
\K]c           @` ső   d  d l  m Z m Z m Z d  d l Z d  d l m Z m Z d  d l	 m
 Z
 d  d l m Z m Z d  d l m Z d Z d Z d Z d	   Z d
   Z d   Z d   Z d   Z d   Z d e e j f d     YZ e d k rń e j   n  d S(   i    (   t   print_functiont   divisiont   absolute_importN(   t   cudat   float32(   t
   MacroError(   t   unittestt   SerialMixin(   t   skip_on_cudasimi   i   c         C` s<   t  j j d t d t  } t  j d  } | | |  | <d  S(   Nt   shapet   dtypei   (   R   t   sharedt   arrayt   GLOBAL_CONSTANTR   t   grid(   t   At   sat   i(    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   udt_global_constants   s    c         C` sT   t  j j d t t f d t  } t  j d  \ } } | | | f |  | | f <d  S(   NR	   R
   i   (   R   R   R   R   t   GLOBAL_CONSTANT_2R   R   (   R   R   R   t   j(    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   udt_global_build_tuple   s    	c         C` sT   t  j j d t t g d t  } t  j d  \ } } | | | f |  | | f <d  S(   NR	   R
   i   (   R   R   R   R   R   R   R   (   R   R   R   R   (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   udt_global_build_list   s    	c         C` sN   t  j j d t d t  } t  j d  \ } } | | | f |  | | f <d  S(   NR	   R
   i   (   R   R   R   t   GLOBAL_CONSTANT_TUPLER   R   (   R   R   R   R   (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   udt_global_constant_tuple!   s    c         C` s@   t  j j d |  d d t  } t  j d  } | | |  | <d  S(   NR	   i    R
   i   (   R   R   R   R   R   (   R   R   R   (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   udt_invalid_1'   s    c         C` sX   t  j j d d |  d f d t  } t  j d  \ } } | | | f |  | | f <d  S(   NR	   i   i    R
   i   (   R   R   R   R   R   (   R   R   R   R   (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   udt_invalid_2-   s    %t	   TestMacroc           B` st   e  Z d    Z d   Z d   Z d   Z e d  d    Z d   Z e d  d    Z	 e d  d	    Z
 RS(
   c         C` s   t  j d d t  j d d S(   Nid   R
   t   ndmini   (   t   npR   R   (   t   self(    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   getarg4   s    c         C` s   |  j    j d d  S(   Ni   (   R   t   reshape(   R   (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   getarg27   s    c         C` s-   t  j t f  t  } | |  j    d  S(   N(   R   t   jitR   R   R   (   R   t   udt(    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   test_global_constants:   s    c         C` sB   t  j t d  d   d  d   f f  t  } | |  j    d  S(   N(   R   R"   R   R   R!   (   R   R#   (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   test_global_build_tuple>   s    .s*   Simulator does not perform macro expansionc      	   C` sj   |  j  t  3 } t j t d  d   d  d   f f  t  Wd  QX|  j d j t  t	 | j
   d  S(   Ns   invalid type for shape; got {0}(   t   assertRaisesR   R   R"   R   R   t   assertInt   formatt   listt   strt	   exception(   R   t   raises(    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   test_global_build_listB   s    2c         C` sB   t  j t d  d   d  d   f f  t  } | |  j    d  S(   N(   R   R"   R   R   R!   (   R   R#   (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   test_global_constant_tupleJ   s    .s&   Can't check for constants in simulatorc         C` sL   |  j  t   } t j t f  t  Wd  QX|  j d t | j   d  S(   Ns&   Argument 'shape' must be a constant at(	   R&   t
   ValueErrorR   R"   R   R   R'   R*   R+   (   R   R,   (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   test_invalid_1N   s    	c      	   C` sa   |  j  t  3 } t j t d  d   d  d   f f  t  Wd  QX|  j d t | j   d  S(   Ns&   Argument 'shape' must be a constant at(	   R&   R/   R   R"   R   R   R'   R*   R+   (   R   R,   (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   test_invalid_2V   s    2	(   t   __name__t
   __module__R   R!   R$   R%   R   R-   R.   R0   R1   (    (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyR   3   s   					t   __main__(   i   i   (   t
   __future__R    R   R   t   numpyR   t   numbaR   R   t   numba.errorsR   t   numba.cuda.testingR   R   R   R   R   R   R   R   R   R   R   R   t   TestCaseR   R2   t   main(    (    (    sA   lib/python2.7/site-packages/numba/cuda/tests/cudapy/test_macro.pyt   <module>   s"   						,