B
     \x                 @   s4  d dl mZ d dlZd dlZd dlZd dlZd dlmZ	 d dl
mZmZ d dlmZmZmZmZmZmZ ddlmZmZ e Zed e Zed e Ze Zed	 d
d Zdd Zdd Zdd Zdd Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&d d! Z'd"d# Z(d$d% Z)d&d' Z*d(d) Z+d*d+ Z,d,d- Z-d.d/ Z.d0d1 Z/d2d3 Z0d4d5 Z1d6d7 Z2d8d9 Z3d:d; Z4d<d= Z5d>d? Z6d@dA Z7dBdC Z8dDdE Z9dFdG Z:dHdI Z;dJdK Z<dLdM Z=dNdO Z>dPdQ Z?dRdS Z@dTdU ZAdVdW ZBdXdY ZCdZd[ ZDd\d] ZEd^d_ ZFd`da ZGG dbdc dceZHeIddkr0e	J  dS )e    )print_functionN)compile_isolatedFlags)jittypeoferrorstypesutilsconfig   )TestCasetagZenable_pyobjectZforce_pyobjectZnrtc             C   s   t | S )N)abs)x r   8lib/python3.7/site-packages/numba/tests/test_builtins.pyabs_usecase   s    r   c             C   sL   | d kr|d krt g S | d kr*t |gS |d kr<t | gS t | |gS d S )N)all)r   yr   r   r   all_usecase   s    

r   c             C   sL   | d kr|d krt g S | d kr*t |gS |d kr<t | gS t | |gS d S )N)any)r   r   r   r   r   any_usecase(   s    

r   c             C   s   t | S )N)bool)r   r   r   r   bool_usecase2   s    r   c             C   s   t | S )N)chr)r   r   r   r   chr_usecase5   s    r   c             C   s
   t | |S )N)Zcmp)r   r   r   r   r   cmp_usecase8   s    r   c             C   s
   t | |S )N)complex)r   r   r   r   r   complex_usecase;   s    r   c             C   s
   t | |S )N)divmod)r   r   r   r   r   divmod_usecase>   s    r    c              C   s*   d} x t dD ]\}}| || 7 } qW | S )Nr   )g      ?g      @g      @)	enumerate)resultijr   r   r   enumerate_usecaseA   s    r%   c              C   s,   d} x"t ddD ]\}}| || 7 } qW | S )Nr   )g      ?g      @g      @*   )r!   )r"   r#   r$   r   r   r   enumerate_start_usecaseG   s    r'   c              C   s,   d} x"t ddD ]\}}| || 7 } qW | S )Nr   )g      ?g      @g      @gn!	@)r!   )r"   r#   r$   r   r   r   enumerate_invalid_start_usecaseM   s    r(   c             C   s
   t || S )N)filter)r   filter_funcr   r   r   filter_usecaseS   s    r+   c             C   s   t | S )N)float)r   r   r   r   float_usecaseV   s    r-   c             C   s
   |  |S )N)format)r   r   r   r   r   format_usecaseY   s    r/   c               C   s   t  S )N)globalsr   r   r   r   globals_usecase\   s    r1   c             C   s   t | S )N)hex)r   r   r   r   hex_usecasea   s    r3   c             C   s   t | |dS )N)base)int)r   r4   r   r   r   int_usecased   s    r6   c             C   s   t | }t|t|fS )N)iternext)r   itr   r   r   iter_next_usecaseg   s    r:   c             C   s   d}t  d S )N   r   )locals)r   r   r   r   r   locals_usecasek   s    r=   c             C   s   t | |dS )N)r4   )Zlong)r   r4   r   r   r   long_usecaseo   s    r>   c             C   s
   t || S )N)map)r   map_funcr   r   r   map_usecaser   s    rA   c             C   s
   t | |S )N)max)r   r   r   r   r   max_usecase1v   s    rC   c             C   s   t | |gS )N)rB   )r   r   r   r   r   max_usecase2y   s    rD   c             C   s   t | S )N)rB   )r   r   r   r   max_usecase3|   s    rE   c               C   s   t dS )Nr   )rB   r   r   r   r   max_usecase4   s    rF   c             C   s
   t | |S )N)min)r   r   r   r   r   min_usecase1   s    rH   c             C   s   t | |gS )N)rG   )r   r   r   r   r   min_usecase2   s    rI   c             C   s   t | S )N)rG   )r   r   r   r   min_usecase3   s    rJ   c               C   s   t dS )Nr   )rG   r   r   r   r   min_usecase4   s    rK   c             C   s   t | S )N)oct)r   r   r   r   oct_usecase   s    rM   c             C   s   t | S )N)ord)r   r   r   r   ord_usecase   s    rO   c             C   s   t | |S )N)	functoolsreduce)reduce_funcr   r   r   r   reduce_usecase   s    rS   c             C   s   t | S )N)round)r   r   r   r   round_usecase1   s    rU   c             C   s
   t | |S )N)rT   )r   nr   r   r   round_usecase2   s    rW   c             C   s   t | S )N)sum)r   r   r   r   sum_usecase   s    rY   c             C   s   t | |S )N)type)abr   r   r   type_unary_usecase   s    r]   c             C   s   t | S )N)Zunichr)r   r   r   r   unichr_usecase   s    r^   c              C   s,   d} x"t ddD ]\}}| || 7 } qW | S )Nr   )r         )g      @g@)zip)r"   r#   r$   r   r   r   zip_usecase   s    rb   c              C   s    d} xt  D ]}| d7 } qW | S )Nr   r   )ra   )r"   r#   r   r   r   zip_0_usecase   s    rc   c              C   s$   d} xt dD ]\}| |7 } qW | S )Nr   )r   r_   )ra   )r"   r#   r   r   r   zip_1_usecase   s    rd   c              C   s4   d} x*t dddD ]\}}}| || | 7 } qW | S )Nr   )r   r_   )r`      r;   )g@g!@)ra   )r"   r#   r$   kr   r   r   zip_3_usecase   s    rg   c              C   s6   t d} d}t| }ttt ||}t|}||fS )N   r`   )ranger7   listra   )iterablerV   r9   frontZbackr   r   r   zip_first_exhausted   s    rm   c             C   s   | | S )Nr   )r   r   r   r   r   pow_op_usecase   s    rn   c             C   s
   t | |S )N)pow)r   r   r   r   r   pow_usecase   s    rp   c               @   s  e Zd Zdd ZefddZeddd Zefdd	Zd
d Z	efddZ
dd ZefddZdd ZefddZdd ZefddZdd ZeejdefddZeejddd  Zefd!d"Zedd#d$ Zefd%d&Zedd'd( Zefd)d*Zedd+d, Zefd-d.Zd/d0 Zefd1d2Z d3d4 Z!d5d6 Z"d7d8 Z#efd9d:Z$d;d< Z%efd=d>Z&edd?d@ Z'efdAdBZ(dCdD Z)efdEdFZ*dGdH Z+dIdJ Z,dKdL Z-efdMdNZ.dOdP Z/efdQdRZ0eddSdT Z1efdUdVZ2eddWdX Z3efdYdZZ4d[d\ Z5d]d^ Z6eejd_efd`daZ7eejddbdc Z8efdddeZ9dfdg Z:dhdi Z;efdjdkZ<efdldmZ=eddndo Z>eddpdq Z?drds Z@efdtduZAefdvdwZBdxdy ZCdzd{ ZDd|d} ZEefd~dZFefddZGeddd ZHeddd ZIefddZJdd ZKdd ZLdd ZMdd ZNefddZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVefddZWdd ZXefddZYdd ZZefddZ[dd Z\e]j^dkoe]j_dk Z`efddZadd ZbefddZceddd ZdefddZedd Zfdd ZgeejdefddZheejddd ZiejfddZkedddĄ ZlejfddƄZmedddȄ ZnejfddʄZoeddd̄ Zpejfdd΄ZqddЄ Zrejfdd҄ZsedddԄ Ztddք Zueddd؄ ZvdS )TestBuiltinsc             C   s,   t |d|d}|j}| }| | | d S )Nr   )flags)r   entry_pointassertPreciseEqual)selfpyfuncrr   crcfuncexpectedr   r   r   run_nullary_func   s    zTestBuiltins.run_nullary_funcc             C   s(  t }t|tjf|d}|j}x dD ]}| |||| q"W t|tjf|d}|j}x$dD ]}| j||||dd q\W dddtd	d
td  tdd
td	  g}t|tjf|d}|j}x$|D ]}| j||||dd qW t|tj	f|d}|j}x"|D ]}| |||| qW d S )N)rr   )r   r   )gg        g?single)precy      ?y                y?      @infy              ?nan)
r   r   r   int32rs   rt   float32r,   Z	complex64
complex128)ru   rr   rv   rw   rx   r   Zcomplex_valuesr   r   r   test_abs   s(    



zTestBuiltins.test_absZ	importantc             C   s   | j td d S )N)rr   )r   no_pyobj_flags)ru   r   r   r   test_abs_npm   s    zTestBuiltins.test_abs_npmc       	      C   sn   t }t|tjtjf|d}|j}dddd g}dddd g}x0t||D ] \}}| |||||| qFW d S )N)rr   r{   r   r   )r   r   r   r   rs   	itertoolsproductrt   )	ru   rr   rv   rw   rx   
x_operands
y_operandsr   r   r   r   r   test_all   s    zTestBuiltins.test_allc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )assertTypingErrorr   r   )ru   r   r   r   test_all_npm  s    
zTestBuiltins.test_all_npmc       	      C   sn   t }t|tjtjf|d}|j}dddd g}dddd g}x0t||D ] \}}| |||||| qFW d S )N)rr   r{   r   r   )r   r   r   r   rs   r   r   rt   )	ru   rr   rv   rw   rx   r   r   r   r   r   r   r   test_any  s    zTestBuiltins.test_anyc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_any_npm  s    
zTestBuiltins.test_any_npmc             C   s   t }t|tjf|d}|j}x dD ]}| |||| q"W t|tjf|d}|j}x2dddtdtdgD ]}| |||| qnW t|tjf|d}|j}x8t	dtdt	dtdgD ]}| |||| qW d S )	N)rr   )r{   r   r   g        g       g      ?r~   r   r   )
r   r   r   r   rs   rt   float64r,   r   r   )ru   rr   rv   rw   rx   r   r   r   r   	test_bool  s    
"zTestBuiltins.test_boolc             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_bool_npm&  s    zTestBuiltins.test_bool_npmc             C   s   t }t|tjf|d}|j}x dD ]}| |||| q"W t|tdf|d}|j}x&dgg gD ]}| |||| qfW d S )N)rr   )r    rj   r   )r   r   r   stringrs   rt   Dummy)ru   rr   rv   rw   rx   r   r   r   r   test_bool_nonnumber)  s    
z TestBuiltins.test_bool_nonnumberc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_bool_nonnumber_npm6  s    
z$TestBuiltins.test_bool_nonnumber_npmc             C   sF   t }t|tjf|d}|j}x$tdD ]}| |||| q&W d S )N)rr      )r   r   r   r   rs   ri   rt   )ru   rr   rv   rw   rx   r   r   r   r   test_chr:  s
    zTestBuiltins.test_chrc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_chr_npmB  s    
zTestBuiltins.test_chr_npmz"cmp not available as global is Py3c       	      C   sj   t }t|tjtjf|d}|j}dddg}dddg}x0t||D ] \}}| |||||| qBW d S )N)rr   r{   r   r   )r   r   r   r   rs   r   r   rt   )	ru   rr   rv   rw   rx   r   r   r   r   r   r   r   test_cmpF  s    

zTestBuiltins.test_cmpc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_cmp_npmR  s    
zTestBuiltins.test_cmp_npmc       	      C   sj   t }t|tjtjf|d}|j}dddg}dddg}x0t||D ] \}}| |||||| qBW d S )N)rr   r{   r   r   )r   r   r   r   rs   r   r   rt   )	ru   rr   rv   rw   rx   r   r   r   r   r   r   r   test_complexW  s    

zTestBuiltins.test_complexc             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_complex_npmb  s    zTestBuiltins.test_complex_npmc          
   C   s   t }t|tjtjf|d}|j}ddd}ddddd	d
ddddg
}|dg }x\t||D ]L\}}	|||	\}
}|||	\}}|}| ||||f||
||f qZW x,|D ]$}| t	 ||d W d Q R X qW d S )N)rr   @   c             S   s    | dkr| d|d > d M } | S )Nr   r   r   )r   bitsr   r   r   truncate_resultm  s    z6TestBuiltins.test_divmod_ints.<locals>.truncate_resultr   r`   rh      r{   iil    l         r   )r   )
r    r   r   int64rs   r   r   rt   assertRaisesZeroDivisionError)ru   rr   rv   rw   rx   r   denominators
numeratorsr   r   expected_quotexpected_remquotremfr   r   r   test_divmod_intsf  s     


zTestBuiltins.test_divmod_intsc             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_divmod_ints_npm  s    z!TestBuiltins.test_divmod_ints_npmc          
   C   s   t }t|tjtjf|d}|j}ddddddtjtj tjg	}|dd	g }xHt	||D ]8\}}|||\}	}
|||\}}| 
||f|	|
f qXW x,|D ]$}| t ||d	 W d Q R X qW d S )
N)rr   g      ?g      @g}Ô%ITg       g      g\ng       g        )r    r   r   r   rs   npr~   r   r   r   rt   r   r   )ru   rr   rv   rw   rx   r   r   r   r   r   r   r   r   r   r   r   test_divmod_floats  s    
zTestBuiltins.test_divmod_floatsc             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_divmod_floats_npm  s    z#TestBuiltins.test_divmod_floats_npmc             C   s   |  t| d S )N)rz   r%   )ru   rr   r   r   r   test_enumerate  s    zTestBuiltins.test_enumeratec             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_enumerate_npm  s    zTestBuiltins.test_enumerate_npmc             C   s   |  t| d S )N)rz   r'   )ru   rr   r   r   r   test_enumerate_start  s    z!TestBuiltins.test_enumerate_startc             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_enumerate_start_npm  s    z%TestBuiltins.test_enumerate_start_npmc          	   C   sb   t }t|dtd}| t}|  W d Q R X tjdkr@d}nd}d| }| |t	|j
 d S )Nr   )rr   )r_   rh   indexZintegerz-'float' object cannot be interpreted as an %s)r(   r   enable_pyobj_flagsr   	TypeErrorrs   r
   Z	PYVERSIONassertInstr	exception)ru   rv   rw   raisesthingmsgr   r   r   'test_enumerate_start_invalid_start_type  s    
z4TestBuiltins.test_enumerate_start_invalid_start_typec          	   C   sD   t }| tj}t|dtd}W d Q R X d}| |t|j d S )Nr   )rr   z3Only integers supported as start value in enumerate)	r(   r   r   ZTypingErrorr   r   r   r   r   )ru   rv   r   rw   r   r   r   r   +test_enumerate_start_invalid_start_type_npm  s
    z8TestBuiltins.test_enumerate_start_invalid_start_type_npmc             C   sb   t }t|tdtdf|d}|j}dd }dddd	d
g}| t|||t||| d S )Nrj   function_ptr)rr   c             S   s   | d S )Nr_   r   )r   r   r   r   <lambda>  s    z*TestBuiltins.test_filter.<locals>.<lambda>r   r   r_   r`   re   )r+   r   r   r   rs   assertSequenceEqualrj   )ru   rr   rv   rw   rx   r*   r   r   r   r   test_filter  s    
zTestBuiltins.test_filterc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_filter_npm  s    
zTestBuiltins.test_filter_npmc             C   s   t }t|tjf|d}|j}x dD ]}| |||| q"W t|tjf|d}|j}x$dD ]}| j||||dd q\W t|tjf|d}|j}x dD ]}| |||| qW d S )N)rr   )r{   r   r   )gg        g?r|   )r}   )z-1.1z0.0z1.1)r-   r   r   r   rs   rt   r   r   )ru   rr   rv   rw   rx   r   r   r   r   
test_float  s    


zTestBuiltins.test_floatc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_float_npm  s    
zTestBuiltins.test_float_npmc             C   s   t }t|tjtjf|d}|j}d}x$dD ]}| |||||| q*W t|tjtjf|d}|j}d}x$dD ]}| |||||| qpW t|tjtjf|d}|j}d}x$dD ]}| |||||| qW d S )N)rr   z{0})r{   r   r   )gg        g?)r[   r\   c)r/   r   r   r   r   rs   rt   r   )ru   rr   rv   rw   rx   r   r   r   r   r   test_format  s$    


zTestBuiltins.test_formatc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_format_npm  s    
zTestBuiltins.test_format_npmc             C   s0   t }t|d|d}|j}| }| |t  d S )Nr   )rr   )r1   r   rs   assertIsr0   )ru   rr   rv   rw   rx   gr   r   r   test_globals  s
    zTestBuiltins.test_globalsc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_globals_npm  s    
zTestBuiltins.test_globals_npmc             K   s6   t }tf ||}| | t  | | t  d S )N)r1   r   r   r0   )ru   Z	jit_flagsrv   Zjittedr   r   r   test_globals_jit  s    zTestBuiltins.test_globals_jitc          	   C   s$   |    | jdd W d Q R X d S )NT)nopython)r   r   )ru   r   r   r   test_globals_jit_npm  s    
z!TestBuiltins.test_globals_jit_npmc             C   sB   t }t|tjf|d}|j}x dD ]}| |||| q"W d S )N)rr   )r{   r   r   )r3   r   r   r   rs   rt   )ru   rr   rv   rw   rx   r   r   r   r   test_hex  s
    
zTestBuiltins.test_hexc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_hex_npm  s    
zTestBuiltins.test_hex_npmc       	      C   sn   t }t|tjtjf|d}|j}ddddg}dddd	g}x0t||D ] \}}| |||||| qFW d S )
N)rr   z-10110r_      
      )	r6   r   r   r   r   rs   r   r   rt   )	ru   rr   rv   rw   rx   r   r   r   r   r   r   r   test_int   s    zTestBuiltins.test_intc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_int_npm+  s    
zTestBuiltins.test_int_npmc          	   C   sv   t }t|ttjdf|d}|j}| |dd t|ttjdf|d}|j}| t |d W d Q R X d S )Nr`   )rr   )r   r&   r;   )r   r&   r   )r   )	r:   r   r   UniTupler   rs   rt   r   StopIteration)ru   rr   rv   rw   rx   r   r   r   test_iter_next0  s    zTestBuiltins.test_iter_nextc             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_iter_next_npm=  s    zTestBuiltins.test_iter_next_npmc          	   C   s2   t }| tj t|tjf|d}W d Q R X d S )N)rr   )r=   r   r   ZForbiddenConstructr   r   r   )ru   rr   rv   rw   r   r   r   test_localsA  s    zTestBuiltins.test_localsc             C   s   | j td d S )N)rr   )r   forceobj_flags)ru   r   r   r   test_locals_forceobjF  s    z!TestBuiltins.test_locals_forceobjc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_locals_npmI  s    
zTestBuiltins.test_locals_npmz&long is not available as global is Py3c       	      C   sn   t }t|tjtjf|d}|j}ddddg}dddd	g}x0t||D ] \}}| |||||| qFW d S )
N)rr   z-1r   r   r   r_   r   r   r   )	r>   r   r   r   r   rs   r   r   rt   )	ru   rr   rv   rw   rx   r   r   r   r   r   r   r   	test_longM  s    zTestBuiltins.test_longc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_long_npmY  s    
zTestBuiltins.test_long_npmc             C   sb   t }t|tdtdf|d}|j}dd }dddd	d
g}| t|||t||| d S )Nrj   r   )rr   c             S   s   | d S )Nr_   r   )r   r   r   r   r   e  s    z'TestBuiltins.test_map.<locals>.<lambda>r   r   r_   r`   re   )rA   r   r   r   rs   r   rj   )ru   rr   rv   rw   rx   r@   r   r   r   r   test_map^  s    
zTestBuiltins.test_mapc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_map_npmj  s    
zTestBuiltins.test_map_npmc       	      C   sf   t |tjtjf|d}|j}dddg}dddg}x0t||D ] \}}| |||||| q>W d S )N)rr   r{   r   r   )r   r   r   rs   r   r   rt   )	ru   rv   rr   rw   rx   r   r   r   r   r   r   r   check_minmax_1r  s    

zTestBuiltins.check_minmax_1c             C   s   |  t| dS )z
        max(*args)
        N)r   rC   )ru   rr   r   r   r   
test_max_1{  s    zTestBuiltins.test_max_1c             C   s   |  t| dS )z
        min(*args)
        N)r   rH   )ru   rr   r   r   r   
test_min_1  s    zTestBuiltins.test_min_1c             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_max_npm_1  s    zTestBuiltins.test_max_npm_1c             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_min_npm_1  s    zTestBuiltins.test_min_npm_1c       	      C   sf   t |tjtjf|d}|j}dddg}dddg}x0t||D ] \}}| |||||| q>W d S )N)rr   r{   r   r   )r   r   r   rs   r   r   rt   )	ru   rv   rr   rw   rx   r   r   r   r   r   r   r   check_minmax_2  s    

zTestBuiltins.check_minmax_2c             C   s   |  t| dS )z
        max(list)
        N)r   rD   )ru   rr   r   r   r   
test_max_2  s    zTestBuiltins.test_max_2c             C   s   |  t| dS )z
        min(list)
        N)r   rI   )ru   rr   r   r   r   
test_min_2  s    zTestBuiltins.test_min_2c          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_max_npm_2  s    
zTestBuiltins.test_max_npm_2c          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r   r   )ru   r   r   r   test_min_npm_2  s    
zTestBuiltins.test_min_npm_2c                s@    fdd}|t t jd |t t jt jt jf d S )Nc                sX   t | f d}|j}dtddf}x.||d d d gD ]}||| q8W d S )N)rr   g      ?r   g      @r{   )r   rs   r,   rt   )Zargtyrw   rx   tupval)rr   rv   ru   r   r   check  s
    z*TestBuiltins.check_minmax_3.<locals>.checkr`   )r   r   r   ZTupler   )ru   rv   rr   r   r   )rr   rv   ru   r   check_minmax_3  s    zTestBuiltins.check_minmax_3c             C   s   |  t| dS )z
        max(tuple)
        N)r   rE   )ru   rr   r   r   r   
test_max_3  s    zTestBuiltins.test_max_3c             C   s   |  t| dS )z
        min(tuple)
        N)r   rJ   )ru   rr   r   r   r   
test_min_3  s    zTestBuiltins.test_min_3c             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_max_npm_3  s    zTestBuiltins.test_max_npm_3c             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_min_npm_3  s    zTestBuiltins.test_min_npm_3c             C   s0   t |tjtdf|d}|j}|ddg d S )Nrj   )rr   r   )r   r   r   r   rs   )ru   rv   rr   rw   rx   r   r   r   check_min_max_invalid_types  s    z(TestBuiltins.check_min_max_invalid_typesc          	   C   s6   t jr(| t | t W d Q R X n
| t d S )N)r	   IS_PY3r   r   r   rC   )ru   r   r   r   test_max_1_invalid_types  s    z%TestBuiltins.test_max_1_invalid_typesc          	   C   s&   |    | jttd W d Q R X d S )N)rr   )r   r   rC   r   )ru   r   r   r   test_max_1_invalid_types_npm  s    
z)TestBuiltins.test_max_1_invalid_types_npmc          	   C   s6   t jr(| t | t W d Q R X n
| t d S )N)r	   r   r   r   r   rH   )ru   r   r   r   test_min_1_invalid_types  s    z%TestBuiltins.test_min_1_invalid_typesc          	   C   s&   |    | jttd W d Q R X d S )N)rr   )r   r   rH   r   )ru   r   r   r   test_min_1_invalid_types_npm  s    
z)TestBuiltins.test_min_1_invalid_types_npmc             C   s$   t |tjf|d}|j}|d d S )N)rr   r   )r   r   r   rs   )ru   rv   rr   rw   rx   r   r   r    check_min_max_unary_non_iterable  s    z-TestBuiltins.check_min_max_unary_non_iterablec          	   C   s$   |  t | t W d Q R X d S )N)r   r   r   rE   )ru   r   r   r   test_max_unary_non_iterable  s    z(TestBuiltins.test_max_unary_non_iterablec          	   C   s"   |    | t W d Q R X d S )N)r   r   rE   )ru   r   r   r   test_max_unary_non_iterable_npm  s    
z,TestBuiltins.test_max_unary_non_iterable_npmc          	   C   s$   |  t | t W d Q R X d S )N)r   r   r   rJ   )ru   r   r   r   test_min_unary_non_iterable  s    z(TestBuiltins.test_min_unary_non_iterablec          	   C   s"   |    | t W d Q R X d S )N)r   r   rJ   )ru   r   r   r   test_min_unary_non_iterable_npm  s    
z,TestBuiltins.test_min_unary_non_iterable_npmc          	   C   s<   |   }t|dtd W d Q R X | d| t|j d S )Nr   )rr   z%s() argument is an empty tuple)r   r   r   r   r   r   )ru   rv   Z	func_namer   r   r   r   check_min_max_empty_tuple  s    

z&TestBuiltins.check_min_max_empty_tuplec             C   s   |  td d S )NrB   )r  rF   )ru   r   r   r   test_max_empty_tuple	  s    z!TestBuiltins.test_max_empty_tuplec             C   s   |  td d S )NrG   )r  rK   )ru   r   r   r   test_min_empty_tuple  s    z!TestBuiltins.test_min_empty_tuplec             C   sB   t }t|tjf|d}|j}x dD ]}| |||| q"W d S )N)rr   )ir{   r   r   r   )rM   r   r   r   rs   rt   )ru   rr   rv   rw   rx   r   r   r   r   test_oct  s
    
zTestBuiltins.test_octc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r  r   )ru   r   r   r   test_oct_npm  s    
zTestBuiltins.test_oct_npmc             C   sB   t }t|tjf|d}|j}x dD ]}| |||| q"W d S )N)rr   )r[   u   †)rO   r   r   r   rs   rt   )ru   rr   rv   rw   rx   r   r   r   r   test_ord  s
    
zTestBuiltins.test_ordc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r
  r   )ru   r   r   r   test_ord_npm$  s    
zTestBuiltins.test_ord_npmc             C   s   t }t|tdtdf|d}|j}dd }td}| |||||| dd tdD }| |||||| d	d tdD }| |||||| d S )
Nr   rj   )rr   c             S   s   | | S )Nr   )r   r   r   r   r   r   /  s    z*TestBuiltins.test_reduce.<locals>.<lambda>r   c             S   s   g | ]}||d   qS )g      $@r   ).0r   r   r   r   
<listcomp>4  s    z,TestBuiltins.test_reduce.<locals>.<listcomp>c             S   s   g | ]}t ||qS r   )r   )r  r   r   r   r   r  7  s    )rS   r   r   r   rs   ri   rt   )ru   rr   rv   rw   rx   rR   r   r   r   r   test_reduce(  s    
zTestBuiltins.test_reducec          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r  r   )ru   r   r   r   test_reduce_npm:  s    
zTestBuiltins.test_reduce_npmZwin32)r`   c             C   s   t }xxtjtjfD ]h}t||f|d}|j}dddddddd	d
ddg}| jsX|ddg7 }x |D ]}| |||| q^W qW d S )N)rr   gg      gffffffg      g        g?g      ?g333333?gffffff?g      ?g      @gg       )rU   r   r   r   r   rs   _relax_roundrt   )ru   rr   rv   tprw   rx   valuesr   r   r   r   test_round1B  s    
zTestBuiltins.test_round1c             C   s   | j td d S )N)rr   )r  r   )ru   r   r   r   test_round1_npmN  s    zTestBuiltins.test_round1_npmc       
      C   s   t }xtjtjfD ]}|tjkr$dnd}t||tjf|d}|j}xpdD ]h}xbdD ]Z}| j|||||||d || |}	|	dkr| jsR| j|| ||| ||d qRW qHW qW d S )Nr|   exact)rr   )g        g?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      @g      @g      @g      )@g      .@g     6@)r{   r   r   r_   )r}   g        )	rW   r   r   r   r   r   rs   rt   r  )
ru   rr   rv   r  r}   rw   rx   r   rV   ry   r   r   r   test_round2Q  s    

zTestBuiltins.test_round2c             C   s   | j td d S )N)rr   )r  r   )ru   r   r   r   test_round2_npmb  s    zTestBuiltins.test_round2_npmc             C   s   t }t|tdf|d}|j}td}| |||| dd tdD }| |||| dd tdD }| |||| d S )Nrj   )rr   r   c             S   s   g | ]}||d   qS )g      $@r   )r  r   r   r   r   r  o  s    z)TestBuiltins.test_sum.<locals>.<listcomp>c             S   s   g | ]}t ||qS r   )r   )r  r   r   r   r   r  r  s    )rY   r   r   r   rs   ri   rt   )ru   rr   rv   rw   rx   r   r   r   r   test_sumf  s    zTestBuiltins.test_sumc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r  r   )ru   r   r   r   test_sum_npmu  s    
zTestBuiltins.test_sum_npmc                sX   t tdd  fdd}|dd |dd |d	d |dd |d
d d S )NT)r   c                 s   |  }  |  | d S )N)rt   )argsry   )rx   rv   ru   r   r   r   ~  s    z+TestBuiltins.test_type_unary.<locals>.checkg      ?r_   r   g      @y              ?y              @F)r]   r   )ru   r   r   )rx   rv   ru   r   test_type_unaryy  s    



zTestBuiltins.test_type_unaryz%unichr not available as global is Py3c             C   sJ   t }t|tjf|d}|j}x(tdddD ]}| |||| q*W d S )N)rr   r   i  r   )r^   r   r   r   rs   ri   rt   )ru   rr   rv   rw   rx   r   r   r   r   test_unichr  s
    zTestBuiltins.test_unichrc          	   C   s$   |    | jtd W d Q R X d S )N)rr   )r   r  r   )ru   r   r   r   test_unichr_npm  s    
zTestBuiltins.test_unichr_npmc             C   s   |  t| d S )N)rz   rb   )ru   rr   r   r   r   test_zip  s    zTestBuiltins.test_zipc             C   s   | j td d S )N)rr   )r  r   )ru   r   r   r   test_zip_npm  s    zTestBuiltins.test_zip_npmc             C   s   |  t| d S )N)rz   rd   )ru   rr   r   r   r   
test_zip_1  s    zTestBuiltins.test_zip_1c             C   s   | j td d S )N)rr   )r   r   )ru   r   r   r   test_zip_1_npm  s    zTestBuiltins.test_zip_1_npmc             C   s   |  t| d S )N)rz   rg   )ru   rr   r   r   r   
test_zip_3  s    zTestBuiltins.test_zip_3c             C   s   | j td d S )N)rr   )r"  r   )ru   r   r   r   test_zip_3_npm  s    zTestBuiltins.test_zip_3_npmc             C   s   |  t| d S )N)rz   rc   )ru   rr   r   r   r   
test_zip_0  s    zTestBuiltins.test_zip_0c             C   s   | j td d S )N)rr   )r$  r   )ru   r   r   r   test_zip_0_npm  s    zTestBuiltins.test_zip_0_npmc             C   s   |  t| dS )z
        Test side effect to the input iterators when a left iterator has been
        exhausted before the ones on the right.
        N)rz   rm   )ru   rr   r   r   r   test_zip_first_exhausted  s    z%TestBuiltins.test_zip_first_exhaustedc             C   s   | j td d S )N)rr   )r&  nrt_no_pyobj_flags)ru   r   r   r   test_zip_first_exhausted_npm  s    z)TestBuiltins.test_zip_first_exhausted_npmc             C   sZ   ddddg}xH|D ]@\}}t tt|t|ftd}|||}| |t|| qW d S )N)r_   r`   )g       @r`   )r_   g      @)y               @y              @)rr   )r   rn   r   r   rs   rt   )ru   r  r   r   cresrr   r   r   test_pow_op_usecase  s    z TestBuiltins.test_pow_op_usecasec             C   sZ   ddddg}xH|D ]@\}}t tt|t|ftd}|||}| |t|| qW d S )N)r_   r`   )g       @r`   )r_   g      @)y               @y              @)rr   )r   rp   r   r   rs   rt   )ru   r  r   r   r)  r*  r   r   r   test_pow_usecase  s    zTestBuiltins.test_pow_usecaseN)w__name__
__module____qualname__rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   unittestZskipIfr	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  sysplatformversion_infor  r  r  r  r  r  r  r  r  r  r   r  r  r   r!  r"  r#  r$  r%  r&  r(  r+  r,  r   r   r   r   rq      s   

		rq   __main__)KZ
__future__r   r   rP   r1  Znumpyr   Znumba.unittest_supportZunittest_supportr0  Znumba.compilerr   r   Znumbar   r   r   r   r	   r
   Zsupportr   r   r   setr   r   r'  r   r   r   r   r   r   r   r    r%   r'   r(   r+   r-   r/   r1   r3   r6   r:   r=   r>   rA   rC   rD   rE   rF   rH   rI   rJ   rK   rM   rO   rS   rU   rW   rY   r]   r^   rb   rc   rd   rg   rm   rn   rp   rq   r-  mainr   r   r   r   <module>   s    




      
