o
    ºi›  ã                   @   sL   d dl mZmZ d dlmZmZ d dlmZmZ d dl	Z
G dd„ deƒZdS )é    )ÚTestCaseÚnumpy_support)ÚnjitÚtypes)ÚListÚDictNc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestConditionsAsPredicatesc                    s°   t jt jt jt jt jt jttt	t
tg}|D ]-}dD ](}||ƒ‰ t‡ fdd„ƒ}|  |ƒ | ¡ ¡ |  |ƒ |dks<|t
u r>dnd¡ qqtdd„ ƒ}d}|  ||ƒ| |¡¡ d S )	N)é   r   c                      s   ˆ rdS dS ©Né
   é   © r   ©Úxr   úf/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/numba/tests/test_conditions_as_predicates.pyÚfoo   ó   z4TestConditionsAsPredicates.test_scalars.<locals>.foor	   r   r   c                 S   ó   | rdS dS r
   r   r   r   r   r   r      r   Ú )ÚnpÚint8Úuint16Úint64Úfloat32Úfloat64Ú
complex128ÚintÚfloatÚcomplexÚstrÚboolr   ÚassertEqualÚpy_func)ÚselfÚdtsÚdtÚcr   Úsr   r   r   Útest_scalars	   s   ÿ$ö
z'TestConditionsAsPredicates.test_scalarsc                 C   sv   t dd„ ƒ}t tj¡}|  ||ƒ| |¡¡ |  | |¡d¡ | d¡ |  ||ƒ| |¡¡ |  | |¡d¡ d S )Nc                 S   r   r
   r   r   r   r   r   r   %   r   z7TestConditionsAsPredicates.test_typed_list.<locals>.foor   r	   r   )r   r   Ú
empty_listr   r   r!   r"   Úappend©r#   r   Úzr   r   r   Útest_typed_list$   s   

z*TestConditionsAsPredicates.test_typed_listc                 C   sš   t dd„ ƒ}dg}|  ||ƒ| |¡¡ |  | |¡d¡ t dd„ ƒ}|  |ƒ | ¡ ¡ |  | ¡ d¡ t dd„ ƒ}|  |ƒ | ¡ ¡ |  | ¡ d¡ d S )Nc                 S   r   r
   r   r   r   r   r   r   8   r   z;TestConditionsAsPredicates.test_reflected_list.<locals>.foor	   r   c                  S   s   ddg} | rdS dS ©Nr	   é   r   r   r   ©Úyr   r   r   r   D   ó   c                  S   s4   ddg} |   ¡  |   ¡  t| ƒdksJ ‚| rdS dS ©Nr	   r/   r   r   r   ©ÚpopÚlenr0   r   r   r   r   P   ó   r   ©r   r!   r"   r+   r   r   r   Útest_reflected_list6   ó   



z.TestConditionsAsPredicates.test_reflected_listc                 C   sš   t dd„ ƒ}dh}|  ||ƒ| |¡¡ |  | |¡d¡ t dd„ ƒ}|  |ƒ | ¡ ¡ |  | ¡ d¡ t dd„ ƒ}|  |ƒ | ¡ ¡ |  | ¡ d¡ d S )Nc                 S   r   r
   r   r   r   r   r   r   `   r   z:TestConditionsAsPredicates.test_reflected_set.<locals>.foor	   r   c                  S   s   ddh} | rdS dS r.   r   r0   r   r   r   r   l   r2   c                  S   s4   ddh} |   ¡  |   ¡  t| ƒdksJ ‚| rdS dS r3   r4   r0   r   r   r   r   x   r7   r   r8   r+   r   r   r   Útest_reflected_set^   r:   z-TestConditionsAsPredicates.test_reflected_setc                 C   sx   t dd„ ƒ}t tjtj¡}|  ||ƒ| |¡¡ |  | |¡d¡ d|d< |  ||ƒ| |¡¡ |  | |¡d¡ d S )Nc                 S   r   r
   r   r   r   r   r   r   ‡   r   z7TestConditionsAsPredicates.test_typed_dict.<locals>.foor   é   r/   r   )r   r   Úemptyr   r   r!   r"   r+   r   r   r   Útest_typed_dict†   s   
z*TestConditionsAsPredicates.test_typed_dictc                 C   sÀ  t dd„ ƒ}t d¡}|  ||ƒ| |¡¡ |  | |¡d¡ t d¡}|  ||ƒ| |¡¡ |  | |¡d¡ t dggg¡}|  ||ƒ| |¡¡ |  | |¡d¡ t dggg¡}|  ||ƒ| |¡¡ |  | |¡d¡ t d¡}tjdkrŸ|  t	¡}||ƒ W d   ƒ n1 sŽw   Y  d}|  
|t|jƒ¡ n|  ||ƒ| |¡¡ |  | |¡d¡ t dd	g¡}|  t	¡}||ƒ W d   ƒ n1 sÎw   Y  d
}|  
|t|jƒ¡ d S )Nc                 S   r   r
   r   r   r   r   r   r   ™   r   z3TestConditionsAsPredicates.test_arrays.<locals>.foor	   r   r   r   )r/   r/   ziThe truth value of an empty array is ambiguous. Use `array.size > 0` to check that an array is not empty.r/   z[The truth value of an array with more than one element is ambiguous. Use a.any() or a.all())r   r   Úarrayr!   r"   r=   r   Únumpy_versionÚassertRaisesÚ
ValueErrorÚassertInr   Ú	exception)r#   r   r,   ÚraisesÚmsgr   r   r   Útest_arrays˜   s:   





ÿ
ÿz&TestConditionsAsPredicates.test_arraysN)	Ú__name__Ú
__module__Ú__qualname__r(   r-   r9   r;   r>   rG   r   r   r   r   r      s    ((r   )Únumba.tests.supportr   r   Únumbar   r   Únumba.typedr   r   Únumpyr   r   r   r   r   r   Ú<module>   s
    