U
    ,‰d  ã                   @   sH   d dl 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)Ú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 ]Z}dD ]P}||ƒ‰ t‡ fdd„ƒ}|  |ƒ | ¡ ¡ |  |ƒ |dksx|t
kr|dnd¡ q2q*tdd„ ƒ}d}|  ||ƒ| |¡¡ d S )	N)é   r   c                      s   ˆ rdS dS d S ©Né
   é   © r   ©Úxr   úM/tmp/pip-unpacked-wheel-eu7e0c37/numba/tests/test_conditions_as_predicates.pyÚfoo   s    z4TestConditionsAsPredicates.test_scalars.<locals>.foor   r
   r   c                 S   s   | rdS dS d S r	   r   r   r   r   r   r      s    Ú )ÚnpZint8Zuint16Úint64Zfloat32Zfloat64Z
complex128ÚintÚfloatÚcomplexÚstrÚboolr   ÚassertEqualÚpy_func)ÚselfZ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   s   | rdS dS d S r	   r   r   r   r   r   r   %   s    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   s   | rdS dS d S r	   r   r   r   r   r   r   8   s    z;TestConditionsAsPredicates.test_reflected_list.<locals>.foor   r
   c                  S   s   ddg} | rdS dS d S ©Nr   é   r
   r   r   ©Úyr   r   r   r   D   s    c                  S   s8   ddg} |   ¡  |   ¡  t| ƒdks(t‚| r0dS dS d S ©Nr   r%   r   r
   r   ©ÚpopÚlenÚAssertionErrorr&   r   r   r   r   P   s    r   ©r   r   r   r!   r   r   r   Útest_reflected_list6   s    



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   s   | rdS dS d S r	   r   r   r   r   r   r   `   s    z:TestConditionsAsPredicates.test_reflected_set.<locals>.foor   r
   c                  S   s   ddh} | rdS dS d S r$   r   r&   r   r   r   r   l   s    c                  S   s8   ddh} |   ¡  |   ¡  t| ƒdks(t‚| r0dS dS d S r(   r)   r&   r   r   r   r   x   s    r   r-   r!   r   r   r   Útest_reflected_set^   s    



z-TestConditionsAsPredicates.test_reflected_setc                 C   sx   t dd„ ƒ}t tjtj¡}|  ||ƒ| |¡¡ |  | |¡d¡ d|d< |  ||ƒ| |¡¡ |  | |¡d¡ d S )Nc                 S   s   | rdS dS d S r	   r   r   r   r   r   r   ‡   s    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   sX  t dd„ ƒ}t d¡}|  ||ƒ| |¡¡ |  | |¡d¡ t d¡}|  ||ƒ| |¡¡ |  | |¡d¡ t dggg¡}|  ||ƒ| |¡¡ |  | |¡d¡ t dggg¡}|  ||ƒ| |¡¡ |  | |¡d¡ t d¡}|  ||ƒ| |¡¡ |  | |¡d¡ t ddg¡}|  t¡}||ƒ W 5 Q R X d}|  |t	|j
ƒ¡ d S )	Nc                 S   s   | rdS dS d S r	   r   r   r   r   r   r   ™   s    z3TestConditionsAsPredicates.test_arrays.<locals>.foor   r
   r   r   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   r1   ÚassertRaisesÚ
ValueErrorZassertInr   Ú	exception)r   r   r"   ZraisesÚmsgr   r   r   Útest_arrays˜   s,    



z&TestConditionsAsPredicates.test_arraysN)	Ú__name__Ú
__module__Ú__qualname__r   r#   r.   r/   r2   r8   r   r   r   r   r      s   ((r   )Znumba.tests.supportr   Znumbar   r   Znumba.typedr   r   Znumpyr   r   r   r   r   r   Ú<module>   s   