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   e/var/www/html/eduruby.in/lip-sync/lip-sync-env/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   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Z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.   ZassertIs)r1   r2   r3   pairr"   r4   r   r   r   test_returnN   s   

zBaseEnumTest.test_returnc                 C   s2   t dd|}| jD ]}| |||| q
d S r,   )r   valuesr/   r1   r2   r3   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!   r8   )r1   r   r   r   test_constant`   s   

zBaseEnumTest.test_constantN)__name__
__module____qualname__r5   r7   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	   squarer/   r0   r   r   r   test_identityt   s   zTestEnum.test_identityN)r=   r>   r?   __doc__r   r   rB   r8   r
   r   Zvanillar   ZVENUSZMARSZEARTHr.   rD   r   r   r   r   r@   f   s    




r@   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   r/   r9   r   r   r   test_int_coerce   
   zTestIntEnum.test_int_coercec                 C   rG   rH   )r(   r   r/   r9   r   r   r   test_int_cast   rJ   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  rM   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arrayrR   r/   )r1   r3   r:   Z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   r/   )r1   rW   r3   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int64rQ   )rS   emptyfillr%   r   r   r   pyfun_empty   s   z4TestIntEnum.test_int_shape_cast.<locals>.pyfun_emptyc                 S      t j| | fddS Nr[   rQ   )rS   Zzerosr%   r   r   r   pyfun_zeros      z4TestIntEnum.test_int_shape_cast.<locals>.pyfun_zerosc                 S   r`   ra   )rS   Zonesr%   r   r   r   
pyfun_ones   rc   z3TestIntEnum.test_int_shape_cast.<locals>.pyfun_onesTr-   r   rX   )r1   r_   rb   rd   rW   r3   rY   r   r   r   test_int_shape_cast   s   zTestIntEnum.test_int_shape_castN)r=   r>   r?   rE   r	   r   rC   r8   r   r$   r   r.   rI   rK   rU   rZ   re   r   r   r   r   rF   ~   s    



rF   __main__)"rE   numpyrS   ZunittestZnumbar   r   r   r   r   Znumba.tests.supportr   Znumba.tests.enum_usecasesr   r	   r
   r   r   r   r   r   r   r   r!   r#   r'   r(   r*   objectr+   r@   rF   r=   mainr   r   r   r   <module>   s*     !6