o
    ۾i|                     @   s   d Z ddlZddlZddlmZmZmZmZm	Z	 ddl
mZ ddlmZmZmZmZmZmZ dd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd ZG dd deZG dd deeZG dd deeZe dkrve!  dS dS )z
Tests for enum support.
    N)jit	vectorizeint8int16int32)TestCase)ColorShapeShakePlanetRequestErrorIntEnumWithNegativesc                 C   s   | |k| |k| |u | |ufS N )abr   r   J/home/ubuntu/.local/lib/python3.10/site-packages/numba/tests/test_enums.pycompare_usecase   s   r   c                 C   s
   | t ju S r   )r   redr   r   r   r   getattr_usecase   s   
r   c                 C   s   | t d u S )z!Lookup enum member by string namer   )r   r   r   r   r   getitem_usecase   s   r   c                 C   s   | t ju |tju |tju fS r   )r
   mintr	   circler   internal_error)r   r   cr   r   r   identity_usecase   s   r   c                    s    fdd}|S )Nc                    s   |  u S r   r   r   constr   r   constant_usecase&      z/make_constant_usecase.<locals>.constant_usecaser   )r   r   r   r   r   make_constant_usecase%   s   r!   c                 C   s   |r| S |S r   r   )r   r   predr   r   r   return_usecase+   s   r#   c                 C   s   | t jkr
| t j S | tj S r   )r   r   	not_foundr	   r   xr   r   r   int_coerce_usecase/   s   


r'   c                 C   s*   | t tjkr| ttj S | t tj S r   )r   r   r   r   r$   r	   r   r%   r   r   r   int_cast_usecase6   s   r(   c                 C   s   | t jkr	t d S t jS )Nr   )r   r$   dummyr%   r   r   r   vectorize_usecase>   s   
r*   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
BaseEnumTestc                 C   s6   t }tdd|}| jD ]}| || ||  qd S NTnopython)r   r   pairsassertPreciseEqualselfpyfunccfuncargsr   r   r   test_compareG   s
   
zBaseEnumTest.test_comparec                 C   sJ   t }tdd|}| jD ]}dD ]}||f }| || ||  qqdS )z5
        Passing and returning enum members.
        Tr-   )TFN)r#   r   r/   assertIs)r2   r3   r4   pairr"   r5   r   r   r   test_returnN   s   

zBaseEnumTest.test_returnc                 C   s2   t dd|}| jD ]}| |||| q
d S r,   )r   valuesr0   r2   r3   r4   argr   r   r   check_constant_usecaseZ   s   
z#BaseEnumTest.check_constant_usecasec                 C   s,   |  t |  t |  t| jd  d S )Nr   )r=   r   r   r!   r:   )r2   r   r   r   test_constant`   s   

zBaseEnumTest.test_constantN)__name__
__module____qualname__r6   r9   r=   r>   r   r   r   r   r+   E   s
    r+   c                   @   sZ   e Zd ZdZejejg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d ZdS )TestEnumz-
    Tests for Enum classes and members.
    c                 C   s:   t }tdd|}tjtjtjf}| || ||  dS )zE
        Enum with equal values should not compare identical
        Tr-   N)r   r   r   bluegreenr	   squarer0   r1   r   r   r   test_identityt   s   zTestEnum.test_identityN)r?   r@   rA   __doc__r   r   rD   r:   r
   r   vanillar   VENUSMARSEARTHr/   rF   r   r   r   r   rB   f   s    




rB   c                   @   sp   e Zd ZdZejejgZejejfejejfej	ej	fej
ej	fgZdd Zdd Zdd Zdd	 Zd
d ZdS )TestIntEnumz0
    Tests for IntEnum classes and members.
    c                 C   4   t }tdd|}dD ]}| |||| qd S NTr-   )i,  i  i&  )r'   r   r0   r;   r   r   r   test_int_coerce   
   zTestIntEnum.test_int_coercec                 C   rM   rN   )r(   r   r0   r;   r   r   r   test_int_cast   rP   zTestIntEnum.test_int_castc                 C   sJ   t ddt}tg d}tjdd |D |jd}| ||| d S )NTr-   )     i  rS   c                 S   s   g | ]}t |qS r   )r*   ).0ir   r   r   
<listcomp>   s    z.TestIntEnum.test_vectorize.<locals>.<listcomp>dtype)r   r*   nparrayrX   r0   )r2   r4   r<   solr   r   r   test_vectorize   s   zTestIntEnum.test_vectorizec                 C   s8   dd }t dd|}tD ]}| |||| qd S )Nc                 S   s   t | S r   )hashr%   r   r   r   pyfun   r    z$TestIntEnum.test_hash.<locals>.pyfunTr-   r   r   r0   )r2   r^   r4   memberr   r   r   	test_hash   s
   zTestIntEnum.test_hashc                 C   s`   dd }dd }dd }|||fD ]}t dd|}tD ]}|d	kr,| |||| qqd S )
Nc                 S   s   t j| | fdddS )Nint64rW   )rY   emptyfillr%   r   r   r   pyfun_empty   s   z4TestIntEnum.test_int_shape_cast.<locals>.pyfun_emptyc                 S      t j| | fddS Nrb   rW   )rY   zerosr%   r   r   r   pyfun_zeros      z4TestIntEnum.test_int_shape_cast.<locals>.pyfun_zerosc                 S   rg   rh   )rY   onesr%   r   r   r   
pyfun_ones   rk   z3TestIntEnum.test_int_shape_cast.<locals>.pyfun_onesTr-   r   r_   )r2   rf   rj   rm   r^   r4   r`   r   r   r   test_int_shape_cast   s   zTestIntEnum.test_int_shape_castN)r?   r@   rA   rG   r	   r   rE   r:   r   r$   r   r/   rO   rQ   r\   ra   rn   r   r   r   r   rL   ~   s    



rL   __main__)"rG   numpyrY   unittestnumbar   r   r   r   r   numba.tests.supportr   numba.tests.enum_usecasesr   r	   r
   r   r   r   r   r   r   r   r!   r#   r'   r(   r*   objectr+   rB   rL   r?   mainr   r   r   r   <module>   s*     !6