U
    9%e{                     @   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re!  dS )z
Tests for enum support.
    N)jit	vectorizeint8int16int32)TestCase)ColorShapeShakePlanetRequestErrorIntEnumWithNegativesc                 C   s   | |k| |k| |k| |k	fS N )abr   r   U/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/test_enums.pycompare_usecase   s    r   c                 C   s
   | t jkS r   )r   redr   r   r   r   getattr_usecase   s    r   c                 C   s   | t d kS )z!Lookup enum member by string namer   )r   r   r   r   r   getitem_usecase   s    r   c                 C   s   | t jk|tjk|tjk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   |  kS r   r   r   constr   r   constant_usecase&   s    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 d 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 d 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 d 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)r0   r1   r2   pairr!   r3   r   r   r   test_returnN   s    

zBaseEnumTest.test_returnc                 C   s2   t dd|}| jD ]}| |||| qd S r+   )r   valuesr.   r0   r1   r2   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    r7   )r0   r   r   r   test_constant`   s    

zBaseEnumTest.test_constantN)__name__
__module____qualname__r4   r6   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.   r/   r   r   r   test_identityt   s    zTestEnum.test_identityN)r<   r=   r>   __doc__r   r   rA   r7   r
   r   Zvanillar   ZVENUSZMARSZEARTHr-   rC   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   s4   t }tdd|}dD ]}| |||| qd S NTr,   )i,  i  i&  )r&   r   r.   r8   r   r   r   test_int_coerce   s    zTestIntEnum.test_int_coercec                 C   s4   t }tdd|}dD ]}| |||| qd S rF   )r'   r   r.   r8   r   r   r   test_int_cast   s    zTestIntEnum.test_int_castc                 C   sN   t ddt}tddddg}tjdd |D |jd}| ||| d S )	NTr,      i  i  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arrayrN   r.   )r0   r2   r9   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   s    z$TestIntEnum.test_hash.<locals>.pyfunTr,   r   r   r.   )r0   rS   r2   memberr   r   r   	test_hash   s    zTestIntEnum.test_hashc                 C   s`   dd }dd }dd }|||fD ]8}t dd|}tD ] }|d	kr8| |||| q8q"d S )
Nc                 S   s   t j| | fdddS )Nint64rM   )rO   emptyfillr$   r   r   r   pyfun_empty   s    z4TestIntEnum.test_int_shape_cast.<locals>.pyfun_emptyc                 S   s   t j| | fddS NrW   rM   )rO   Zzerosr$   r   r   r   pyfun_zeros   s    z4TestIntEnum.test_int_shape_cast.<locals>.pyfun_zerosc                 S   s   t j| | fddS r\   )rO   Zonesr$   r   r   r   
pyfun_ones   s    z3TestIntEnum.test_int_shape_cast.<locals>.pyfun_onesTr,   r   rT   )r0   r[   r]   r^   rS   r2   rU   r   r   r   test_int_shape_cast   s    zTestIntEnum.test_int_shape_castN)r<   r=   r>   rD   r	   r   rB   r7   r   r#   r   r-   rG   rH   rQ   rV   r_   r   r   r   r   rE   ~   s   



rE   __main__)"rD   numpyrO   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?   rE   r<   mainr   r   r   r   <module>   s&    !6