
    xKg                         d Z ddlZddlmZmZ ddlmZmZmZ ddl	m
Z
mZmZ ddlmZmZmZmZmZ  G d de      Zed	k(  r e
j*                          yy)
z3
Test cases adapted from numba/tests/test_enums.py
    N)int16int32)cuda	vectorizenjit)unittestCUDATestCaseskip_on_cudasim)ColorShapePlanetRequestErrorIntEnumWithNegativesc                   0   e Zd Zej                  ej                  fej                  ej
                  fej                  ej                  fej                  ej                  fe
j                  ej                  fgZd Zd Zd Zd Zd Z ed      d        Zy)	EnumTestc                    d }t        j                  |      }| j                  D ]c  \  }}t        j                  dt        j
                        }|j                         } |d   |||        ||||       | j                  ||       e y )Nc                 @    | |k(  |d<   | |k7  |d<   | |u |d<   | |u|d<   y )Nr             )abouts      f/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/cuda/tests/cudapy/test_enums.pyfz EnumTest.test_compare.<locals>.f   s6    !VCF!VCF!VCFaZCF    )   dtyper   r   )r   jitpairsnpzerosbool_copyassertPreciseEqual)selfr   cuda_fr   r   gotexpecteds          r   test_comparezEnumTest.test_compare   su    	  !JJDAq((4rxx0CxxzHF4LAs#aH##Hc2 r   c                     d }t        j                  |      }t        j                  dt        j                        }|j                         } |d   |        ||       | j                  ||       y )Nc                 x    t         j                  t         j                  k(  | d<   t         d   t         d   k(  | d<   y )Nr   redgreenr   r   r0   r1   )r   s    r   r   z(EnumTest.test_getattr_getitem.<locals>.f-   s.    YY%++-CF5\U7^3CFr   r   r   r!   )r   r"   r$   r%   r&   r'   r(   )r)   r   r*   r+   r,   s        r   test_getattr_getitemzEnumTest.test_getattr_getitem,   sZ    	4
 !hht288,88:tS	(#.r   c                 
   t         d        fd}t        j                  |      }t        j                  dt        j
                        }|j                         } |d|        |d   d|       | j                  ||       y )Nc                 F    | rt         j                  S t         j                  S )Nr2   )preds    r   innerz4EnumTest.test_return_from_device_func.<locals>.inner:   s     $5995%++5r   c                 x     |       t         j                  k(  |d<    |        t         j                  k(  |d<   y )Nr   r   r2   )r7   r   r8   s     r   r   z0EnumTest.test_return_from_device_func.<locals>.f>   s1    4[EII-CFt8_3CFr   r3   r   Tr!   )r   r   r"   r$   r%   r&   r'   r(   )r)   r   r*   r+   r,   r8   s        @r   test_return_from_device_funcz%EnumTest.test_return_from_device_func9   sr    		6 
	6	4 !hht288,88:	$tT3#.r   c                     d }t        j                  |      }dD ]^  }t        j                  dt        j                        }|j                         } |d   ||        |||       | j                  ||       ` y )Nc                     | t         j                  kD  r| t         j                  z
  |d<   y | t        j                  z   |d<   y Nr   )r   internal_error	not_foundr   circlexr   s     r   r   z#EnumTest.test_int_coerce.<locals>.fJ   s6    <...\333AU\\)Ar   i,  i  i&  r   r   r!   )r   r"   r$   r%   r   r'   r(   r)   r   r*   rB   r+   r,   s         r   test_int_coercezEnumTest.test_int_coerceI   sh    	* ! A((4rxx0CxxzHF4LC aN##Hc2 !r   c                     d }t        j                  |      }dD ]^  }t        j                  dt        j                        }|j                         } |d   ||        |||       | j                  ||       ` y )Nc                     | t        t        j                        kD  r | t        t        j                        z
  |d<   y | t        t
        j                        z   |d<   y r=   )r   r   r>   r   r?   r   r@   rA   s     r   r   z!EnumTest.test_int_cast.<locals>.fZ   sE    54455U<#9#9::AU5<<00Ar   rC   rD   r   r!   )r   r"   r$   r%   r   r'   assertEqualrE   s         r   test_int_castzEnumTest.test_int_castY   sh    	1 ! A((4rxx0CxxzHF4LC aNXs+ !r   z$ufuncs are unsupported on simulator.c                 .   d } t        dd      |      }t        j                  g dt        j                        }t        j                  |D cg c]
  } ||       c}t        j                        } ||      }| j	                  ||       y c c}w )Nc                 Z    | t         j                  k7  r	t         d   S t         j                  S )Nr>   )r   r?   dummy)rB   s    r   r   z"EnumTest.test_vectorize.<locals>.fk   s(    L***#$455#)))r   zint64(int64)r   )target)r     i  rO   r   )r   r$   arrayint64r(   )r)   r   	cuda_funcarrrB   r,   r+   s          r   test_vectorizezEnumTest.test_vectorizei   sv    	* =InV<Q?	hh):883/3aQqT3/rxx@n#. 0s   BN)__name__
__module____qualname__r   r0   r1   r   EARTHVENUSMARSr   r@   r   twor#   r-   r4   r:   rF   rJ   r
   rT   r   r   r   r   r      s     
EII	EKK 	v||$	v{{#	+//0E3// 3 ,  ;</ =/r   r   __main__)__doc__numpyr$   numbar   r   r   r   r   numba.cuda.testingr   r	   r
   numba.tests.enum_usecasesr   r   r   r   r   r   rU   mainr   r   r   <module>rc      sQ      ' ' F F b/| b/J zHMMO r   