o
    1Æ&ic  ã                   @   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   úTC:\wamp64\www\opt\env\Lib\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   Ú )ÚnpZint8Zuint16Úint64Zfloat32Zfloat64Z
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   Z
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Úlenr*   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   r*   r   r   r   r   l   r,   c                  S   s4   ddh} |   ¡  |   ¡  t| ƒdksJ ‚| rdS dS r-   r.   r*   r   r   r   r   x   r1   r   r2   r%   r   r   r   Útest_reflected_set^   r4   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   r7   r   Znumpy_versionÚassertRaisesÚ
ValueErrorZassertInr   Ú	exception)r   r   r&   ZraisesÚmsgr   r   r   Útest_arrays˜   s:   





ÿ
ÿz&TestConditionsAsPredicates.test_arraysN)	Ú__name__Ú
__module__Ú__qualname__r#   r'   r3   r5   r8   r>   r   r   r   r   r      s    ((r   )Znumba.tests.supportr   r   Znumbar   r   Znumba.typedr   r   Únumpyr   r   r   r   r   r   Ú<module>   s
    