
    ܙd                         d Z ddl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 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)int8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      Blib/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   r1   r2   )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 )Nr3   )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   r3   )r8   r   r9   s     r   r   z0EnumTest.test_return_from_device_func.<locals>.f>   s9    U4[[EI-CFUt8__3CFFFr   r4   r    Tr"   )r   r   r#   r%   r&   r'   r(   r)   )r*   r   r+   r,   r-   r9   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+   rC   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   rB   s     r   r   z!EnumTest.test_int_cast.<locals>.fZ   sQ    545555U<#9:::AT%,///Ar   rD   rE   r    r"   )r   r#   r%   r&   r   r(   assertEqualrF   s         r   test_int_castzEnumTest.test_int_castY   s    	0 	0 	0 !  	, 	,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)rC   s    r   r   z"EnumTest.test_vectorize.<locals>.fk   s%    L***#$455#))r   zint64(int64)r   )target)r     i  rP   r    c                 &    g | ]} |          S r   r   ).0rC   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   r1   r2   r   EARTHVENUSMARSr   rA   r   twor$   r.   r5   r;   rG   rK   r   rX   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   r   numba.cuda.testingr	   r
   r   numba.tests.enum_usecasesr   r   r   r   r   r   rY   mainr   r   r   <module>rg      s        $ $ $ $ $ $ $ $ $ $ ' ' ' ' ' ' ' ' ' ' F F F F F F F F F F             b/ b/ b/ b/ b/| b/ b/ b/J zHMOOOOO r   