
    J/Ph                         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                     dS dS )
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                       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dS )	EnumTestc                 "   d }t          j        |          }| j        D ]o\  }}t          j        dt          j                  }|                                } |d         |||            ||||           |                     ||           pd S )Nc                 F    | |k    |d<   | |k    |d<   | |u |d<   | |u|d<   d S )Nr             )abouts      b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/cuda/tests/cudapy/test_enums.pyfz EnumTest.test_compare.<locals>.f   s:    !VCF!VCF!VCFaZCFFF    )   dtyper   r   )r   jitpairsnpzerosbool_copyassertPreciseEqual)selfr   cuda_fr   r   gotexpecteds          r   test_comparezEnumTest.test_compare   s    	  	  	  !J 	3 	3DAq(4rx000CxxzzHF4LAs###AaH##Hc2222	3 	3r   c                     d }t          j        |          }t          j        dt          j                  }|                                } |d         |            ||           |                     ||           d S )Nc                 ~    t           j        t           j        k    | d<   t           d         t           d         k    | d<   d S )Nr   redgreenr   r   r0   r1   )r   s    r   r   z(EnumTest.test_getattr_getitem.<locals>.f-   s.    Y%+-CF5\U7^3CFFFr   r   r   r!   )r   r"   r$   r%   r&   r'   r(   )r)   r   r*   r+   r,   s        r   test_getattr_getitemzEnumTest.test_getattr_getitem,   s    	4 	4 	4
 !ht28,,,88::tS	(#.....r   c                 *   t           d             fd}t          j        |          }t          j        dt          j                  }|                                } |d|            |d         d|           |                     ||           d S )Nc                 6    | rt           j        nt           j        S )Nr2   )preds    r   innerz4EnumTest.test_return_from_device_func.<locals>.inner:   s     $5599%+5r   c                 z     |           t           j        k    |d<    |            t           j        k    |d<   d S )Nr   r   r2   )r7   r   r8   s     r   r   z0EnumTest.test_return_from_device_func.<locals>.f>   s9    U4[[EI-CFUt8__3CFFFr   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   s    		6 	6 
	6	4 	4 	4 	4 	4 !ht28,,,88::	$tT3#.....r   c                    d }t          j        |          }dD ]j}t          j        dt          j                  }|                                } |d         ||            |||           |                     ||           kd S )Nc                 r    | t           j        k    r| t           j        z
  |d<   d S | t          j        z   |d<   d S Nr   )r   internal_error	not_foundr   circlexr   s     r   r   z#EnumTest.test_int_coerce.<locals>.fJ   s9    <...\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   s    	* 	* 	* !  	3 	3A(4rx000CxxzzHF4LC   AaNNN##Hc2222	3 	3r   c                    d }t          j        |          }dD ]j}t          j        dt          j                  }|                                } |d         ||            |||           |                     ||           kd S )Nc                     | t          t          j                  k    r!| t          t          j                  z
  |d<   d S | t          t
          j                  z   |d<   d S r=   )r   r   r>   r   r?   r   r@   rA   s     r   r   z!EnumTest.test_int_cast.<locals>.fZ   sQ    545555U<#9:::AU5<000Ar   rC   rD   r   r!   )r   r"   r$   r%   r   r'   assertEqualrE   s         r   test_int_castzEnumTest.test_int_castY   s    	1 	1 	1 !  	, 	,A(4rx000CxxzzHF4LC   AaNNNXs++++	, 	,r   z$ufuncs are unsupported on simulator.c                     d  t          dd                    }t          j        g dt          j                  }t          j        fd|D             t          j                  } ||          }|                     ||           d S )Nc                 T    | t           j        k    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   c                 &    g | ]} |          S r   r   ).0rB   r   s     r   
<listcomp>z+EnumTest.test_vectorize.<locals>.<listcomp>s   s!    ///aQQqTT///r   )r   r$   arrayint64r(   )r)   	cuda_funcarrr,   r+   r   s        @r   test_vectorizezEnumTest.test_vectorizei   s    	* 	* 	* =InV<<<Q??	h))):::8////3///rx@@@inn#.....r   N)__name__
__module____qualname__r   r0   r1   r   EARTHVENUSMARSr   r@   r   twor#   r-   r4   r:   rF   rJ   r
   rW   r   r   r   r   r      s         
EI	EK 	v|$	v{#	+/0E3 3 3/ / // / / 3 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   rX   mainr   r   r   <module>rf      s                ' ' ' ' ' ' ' ' ' ' F F F F F F F F F F             b/ b/ b/ b/ b/| b/ b/ b/J zHMOOOOO r   