o
    1&i                     @   s   d dl Z d dlZd dlZd dlmZmZ d dlmZmZ d dl	m
Z
 d dlm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G dd de jZedkrce   dS dS )    N)jitnjit)typesutils)tag)length_of_iteratorc                 C   s   d}t | D ]}||7 }q|S Nr   range)nsi r   AC:\wamp64\www\opt\env\Lib\site-packages\numba/tests/test_range.pyloop1   s   
r   c                 C   s    d}t | |D ]}||7 }q|S r   r	   )abr   r   r   r   r   loop2   s   
r   c                 C   s"   d}t | ||D ]}||7 }q|S r   r	   )r   r   cr   r   r   r   r   loop3   s   
r   c                 C      t t| S Nlenr
   )r   r   r   r   
range_len1"      r   c                 C   s   t t| |S r   r   )r   r   r   r   r   
range_len2%   s   r   c                 C   s   t t| ||S r   r   )r   r   r   r   r   r   
range_len3(      r   c                 C   s   t tt| S r   )r   iterr
   r   r   r   r   range_iter_len1*   r   r!   c                 C   r   r   )r   r   r    r   r   r   range_iter_len2-   r   r"   c                 C   sL   t | }t | |}t | ||}g }|||fD ]}||j|j|jf q|S r   )r
   appendstartstopstep)r$   r%   r&   r1r2r3tmprr   r   r   range_attrs0   s   
r,   c                    s6   t |}t ||}t |||} fdd|||fD S )Nc                    s   g | ]} |v qS r   r   ).0r+   valr   r   
<listcomp>=   s    z"range_contains.<locals>.<listcomp>r	   )r/   r$   r%   r&   r'   r(   r)   r   r.   r   range_contains9   s   
r1   c                   @   s\   e Z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S )	TestRangec                 C   s,   t }ttjf|}| |d|d d S )N   )r   r   r   int16
assertTrueselfpyfunccfuncr   r   r   test_loop1_int16B   s   zTestRange.test_loop1_int16c                 C   s4   t }ttjtjf|}| |dd|dd d S )N      )r   r   r   r4   r5   r6   r   r   r   test_loop2_int16G   s   zTestRange.test_loop2_int16c                 C   sF   t }ttjtjtjf|}g d}|D ]}| || ||  qd S )N)r;      r;   )r?         )irB   )rB   rB   )r   r   r   int32assertEqual)r7   r8   r9   arglistargsr   r   r   test_loop3_int32L   s   zTestRange.test_loop3_int32c                 C   s^   t }tjtjtjg}g d}|D ]}t|f|}|D ]}| |||||| qqd S N)r3   r   )r   r   r4   rD   int64r   rE   )r7   r8   typelistrF   typr9   argr   r   r   test_range_len1X   s   zTestRange.test_range_len1c                    sn   t }tjtjtjg}g d}|D ]$ t  f|}|D ]}t fdd|D }| || ||  qqd S )N))r;   r<   )r<   r;   )rJ   c                 3       | ]} |V  qd S r   r   r-   xrM   r   r   	<genexpr>h       z,TestRange.test_range_len2.<locals>.<genexpr>)r   r   r4   rD   rK   r   tuplerE   r7   r8   rL   rF   r9   rG   args_r   rT   r   test_range_len2a   s   zTestRange.test_range_len2c                    sp   t }tjtjtjg}g d}|D ]% t   f|}|D ]}t fdd|D }| || ||  qqd S )Nr>   c                 3   rQ   r   r   rR   rT   r   r   rU   w   rV   z,TestRange.test_range_len3.<locals>.<genexpr>)r   r   r4   rD   rK   r   rW   rE   rX   r   rT   r   test_range_len3k   s   zTestRange.test_range_len3c                 C   sb   t }t}tjtjtjg}g d}|D ]}t|f|}|D ]}| |||||| qqd S rI   )r   r!   r   r4   rD   rK   r   rE   )r7   Z
range_funcrange_iter_funcrL   rF   rM   r9   rN   r   r   r   test_range_iter_len1z   s   zTestRange.test_range_iter_len1c                 C   s>   t }ttjtjddf|}g d}| ||t| d S )NT)Z	reflected)r;   r?   rA      r3   )r"   r   r   ListZintprE   r   )r7   r\   r9   rF   r   r   r   test_range_iter_list   s   zTestRange.test_range_iter_listc                 C   sF   t }g d}ttjtjtjf|}|D ]}| || ||  qd S )N)r   r   r;   r   rP   r;   rP   r;   r;   rP   r^   r;   rP   r^   
   r3   rJ   rC   )r,   r   r   rK   rE   )r7   r8   rF   r9   rN   r   r   r   test_range_attrs   s   zTestRange.test_range_attrsc                 C   s   t }g d}ddg}g d}g d}g d}|| | | }t|}|D ]}	|D ]}
| ||
g|	R  ||
g|	R   q(q$ddidgd	d
g}t|dd}|D ]}	|D ]}
| ||
g|	R  ||
g|	R   qSqOd S )N)	ra   )rP   r   r;   )r;   r   rP   rb   )r   r;   rP   rc   rd   re   rg   TF)rB   irJ   rC   rP   r   r;   r?   r^   r3   r<   rf   )gg      g        g      ?g?)y      ?        y      ?      ?y?        y      ??r   r;   abc)r;   )Zforceobj)r1   r   rE   r   )r7   r8   rF   Z	bool_valsZint_valsZ
float_valsZcomplex_valsZvallistr9   rN   r/   Znon_numeric_valsZ	cfunc_objr   r   r   test_range_contains   s*   

&&zTestRange.test_range_containsN)__name__
__module____qualname__r:   r=   rH   rO   rZ   r[   r]   r`   rh   rk   r   r   r   r   r2   @   s    	

r2   __main__)ZunittestsysnumpyZnumbar   r   Z
numba.corer   r   Znumba.tests.supportr   Znumba.core.inline_closurecallr   r   r   r   r   r   r   r!   r"   r,   r1   ZTestCaser2   rl   mainr   r   r   r   <module>   s*    	z