§
    1@Äja  ã                   ó°   — 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      úSC:\Projects\Historical\venv\Lib\site-packages\numba/cuda/tests/cudapy/test_enums.pyÚfz EnumTest.test_compare.<locals>.f   s:   € Ø˜!’VˆC�‰FØ˜!’VˆC�‰FØ˜!�VˆC�‰FØ˜a�ZˆC�‰FˆFˆFó    )é   ©Ú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ð 	3‰DˆAˆqÝ”(˜4¥r¤xÐ0Ñ0Ô0ˆCØ—x’x‘z”zˆHØˆF�4ŒL˜˜A˜sÑ#Ô#Ð#ØˆAˆa��HÑÔÐØ×#Ò# H¨cÑ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”\¥U¨7¤^Ò3ˆC�‰FˆFˆFr   ©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õ
 ”˜!‘”ˆÝŒh�t¥2¤8Ð,Ñ,Ô,ˆØ—8’8‘:”:ˆØˆˆ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   € à $Ð5•5”9�9­%¬+Ð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   ø€ Ø�U˜4‘[”[¥E¤IÒ-ˆC�‰FØ�U˜t˜8‘_”_­¬Ò3ˆC�‰FˆFˆFr   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õ ”˜!‘”ˆÝŒh�t¥2¤8Ð,Ñ,Ô,ˆØ—8’8‘:”:ˆØ	ˆˆ$�ÑÔÐØˆˆtŒ�T˜3ÑÔÐØ×Ò ¨#Ñ.Ô.Ð.Ð.Ð.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ð 	3ˆAÝ”(˜4¥r¤xÐ0Ñ0Ô0ˆCØ—x’x‘z”zˆHØˆF�4ŒL˜˜CÑ Ô Ð ØˆAˆa�‰NŒNˆNØ×#Ò# H¨cÑ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‘��à�U¥5¤<Ñ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Ý”(˜4¥r¤xÐ0Ñ0Ô0ˆCØ—x’x‘z”zˆHØˆF�4ŒL˜˜CÑ Ô Ð ØˆAˆa�‰NŒNˆNØ×Ò˜X sÑ+Ô+Ð+Ð+ð	,ð 	,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!   ø€ Ð/Ð/Ð/ a˜Q˜Q˜q™TœTÐ/Ð/Ð/r   )r   r$   ÚarrayÚint64r(   )r)   Ú	cuda_funcÚarrr,   r+   r   s        @r   Útest_vectorizezEnumTest.test_vectorizei   s¡   ø€ ð	*ð 	*ð 	*ð =•I˜n°VÐ<Ñ<Ô<¸QÑ?Ô?ˆ	ÝŒhÐ)Ð)Ð)µ´Ð:Ñ:Ô:ˆÝ”8Ð/Ð/Ð/Ð/¨3Ð/Ñ/Ô/µr´xÐ@Ñ@Ô@ˆØˆi˜‰nŒnˆØ×Ò ¨#Ñ.Ô.Ð.Ð.Ð.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Í   € € € € € ð 
Œ�E”IÐØ	Œ�E”KÐ Ø	Œ�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ÒÐØ€H„M�O„O€O€O€Oð Ðr   