
    xKg|                     
   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 Zd Zd Zd	 Zd
 Zd Zd Zd Zd Z G d de      Z G d dee      Z G d dee      Ze dk(  r ejB                          yy)z
Tests for enum support.
    N)jit	vectorizeint8int16int32)TestCase)ColorShapeShakePlanetRequestErrorIntEnumWithNegativesc                 "    | |k(  | |k7  | |u | |ufS N )abs     Z/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_enums.pycompare_usecaser      s!    616161A:--    c                 &    | t         j                  u S r   )r	   redr   s    r   getattr_usecaser      s    		>r   c                     | t         d   u S )z!Lookup enum member by string namer   )r	   r   s    r   getitem_usecaser      s    er   c                 l    | t         j                  u |t        j                  u |t        j
                  u fS r   )r   mintr
   circler   internal_error)r   r   cs      r   identity_usecaser"      s1    O,,, r   c                       fd}|S )Nc                     | u S r   r   )r   consts    r   constant_usecasez/make_constant_usecase.<locals>.constant_usecase&   s    Ezr   r   )r%   r&   s   ` r   make_constant_usecaser'   %   s    r   c                     |r| S |S r   r   )r   r   preds      r   return_usecaser*   +   s    1!r   c                 t    | t         j                  kD  r| t         j                  z
  S | t        j                  z   S r   )r   r    	not_foundr
   r   xs    r   int_coerce_usecaser/   /   s0    <&&&<))))5<<r   c                     | t        t        j                        kD  r| t        t        j                        z
  S | t        t
        j                        z   S r   )r   r   r    r   r,   r
   r   r-   s    r   int_cast_usecaser1   6   s?    5,,--5//0005&&&r   c                 Z    | t         j                  k7  r	t         d   S t         j                  S )Nr    )r   r,   dummyr-   s    r   vectorize_usecaser4   >   s(    L""",--!!!r   c                   $    e Zd Zd Zd Zd Zd Zy)BaseEnumTestc                     t         } t        d      |      }| j                  D ]  }| j                   ||  ||         y NTnopython)r   r   pairsassertPreciseEqualselfpyfunccfuncargss       r   test_comparezBaseEnumTest.test_compareG   s>     "T"6*JJD##FDM5$<@ r   c                     t         } t        d      |      }| j                  D ]'  }dD ]   }||fz   }| j                   ||  ||        " ) y)z5
        Passing and returning enum members.
        Tr9   )TFN)r*   r   r;   assertIs)r>   r?   r@   pairr)   rA   s         r   test_returnzBaseEnumTest.test_returnN   sS      "T"6*JJD%tg~fdmUD\: & r   c                      t        d      |      }| j                  D ]   }| j                   ||       ||             " y r8   )r   valuesr<   r>   r?   r@   args       r   check_constant_usecasez#BaseEnumTest.check_constant_usecaseZ   s9    "T"6*;;C##F3Ks< r   c                     | j                  t               | j                  t               | j                  t        | j                  d                y )Nr   )rK   r   r   r'   rH   )r>   s    r   test_constantzBaseEnumTest.test_constant`   s:    ##O4##O4##$9$++a.$IJr   N)__name__
__module____qualname__rB   rF   rK   rM   r   r   r   r6   r6   E   s    A
;=Kr   r6   c                   0   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 Zy)TestEnumz-
    Tests for Enum classes and members.
    c                     t         } t        d      |      }t        j                  t        j                  t
        j                  f}| j                   ||  ||        y)zE
        Enum with equal values should not compare identical
        Tr9   N)r"   r   r	   bluegreenr
   squarer<   r=   s       r   test_identityzTestEnum.test_identityt   sJ     ""T"6*

EKK6ud|<r   N)rN   rO   rP   __doc__r	   r   rU   rH   r   r   vanillar   VENUSMARSEARTHr;   rW   r   r   r   rR   rR   f   sy     ii%F 
EII	EKK 	U]]#	v{{#	v||$
E=r   rR   c                      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 Zd Zd Zd Zd Zy)TestIntEnumz0
    Tests for IntEnum classes and members.
    c                 ~    t         } t        d      |      }dD ]   }| j                   ||       ||             " y NTr9   )i,  i  i&  )r/   r   r<   rI   s       r   test_int_coercezTestIntEnum.test_int_coerce   s:    #"T"6*"C##F3Ks< #r   c                 ~    t         } t        d      |      }dD ]   }| j                   ||       ||             " y r`   )r1   r   r<   rI   s       r   test_int_castzTestIntEnum.test_int_cast   s:    !"T"6*"C##F3Ks< #r   c                     t        d      t              }t        j                  g d      }t        j                  |D cg c]  }t        |       c}|j                        }| j                  | ||             y c c}w )NTr9   )     i  rf   dtype)r   r4   nparrayrh   r<   )r>   r@   rJ   isols        r   test_vectorizezTestIntEnum.test_vectorize   se    (	4():;hh)*hhc:c)!,c:#))LU3Z0 ;s   A?c                     d } t        d      |      }t        D ]   }| j                   ||       ||             " y )Nc                     t        |       S r   )hashr-   s    r   pyfunz$TestIntEnum.test_hash.<locals>.pyfun   s    7Nr   Tr9   r   r   r<   )r>   rq   r@   members       r   	test_hashzTestIntEnum.test_hash   s:    	"T"5)*F##E&M5=A +r   c                     d }d }d }|||fD ]C  } t        d      |      }t        D ]&  }|dk\  s	| j                   ||       ||             ( E y )Nc                 R    t        j                  | | fd      j                  d      S )Nint64rg   )ri   emptyfillr-   s    r   pyfun_emptyz4TestIntEnum.test_int_shape_cast.<locals>.pyfun_empty   s"    88QF'277;;r   c                 4    t        j                  | | fd      S Nrw   rg   )ri   zerosr-   s    r   pyfun_zerosz4TestIntEnum.test_int_shape_cast.<locals>.pyfun_zeros   s    88QF'22r   c                 4    t        j                  | | fd      S r}   )ri   onesr-   s    r   
pyfun_onesz3TestIntEnum.test_int_shape_cast.<locals>.pyfun_ones   s    77Aq611r   Tr9   r   rr   )r>   r{   r   r   rq   r@   rs   s          r   test_int_shape_castzTestIntEnum.test_int_shape_cast   s\    	<	3	2!;
;E&C&u-E.Q;++E&M5=I / <r   N)rN   rO   rP   rX   r
   r   rV   rH   r   r,   r    r;   ra   rc   rm   rt   r   r   r   r   r^   r^   ~   s     llELL)F 
u||$	u||$			!7!78		$	$l&<&<=	
E==1BJr   r^   __main__)"rX   numpyri   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/   r1   r4   objectr6   rR   r^   rN   mainr   r   r   <module>r      s   
   4 4 (= =
.

 '"K6 KB=|X =03J, 3Jl zHMMO r   