o
    1&i                     @   s   d dl Z d dlmZmZ d dlmZ d dlmZ ddiZddi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ZedkrZe   dS dS )    N)jitnjit)types)TestCaseZforceobjTZnopythonc                 C   s   t |  }}|| S Nstrabc r   DC:\wamp64\www\opt\env\Lib\site-packages\numba/tests/test_dataflow.pyassignments   s   r   c                 C   s   t |  } }}|| | S r   r   )r
   r   r   dr   r   r   assignments2   s   r   c                 C   s   | |kr| n|d }|S N   r   r	   r   r   r   var_propagate1      r   c                 C   s    d| |kr| n|d d  }|S )Nr      g       @r   r	   r   r   r   var_propagate2   s   r   c                 C   s   d| |kr| p| }|S r   r   r	   r   r   r   var_propagate3!   r   r   c                 C   s(   d| d o|d  p| d o|d }|S )Nr      r   r	   r   r   r   var_propagate4&   s   $r   c                 C   s   d|   k o	dk S   S )Nr      r   )r
   r   r   r   chained_compare,   s   r   c                 C   s*   d}d}|| krt dD ]}|}q|| S )N   r   r   range)xir   r   r   r   stack_effect_error1   s   r"   c                 C   s0   t | D ]}d} ||kr || fS q|} || fS )Nr   r   )nr    r!   r   r   r   	for_break:   s   r$   c                 C   sB   || } }|||}}}|||| f\} }}}| | | | | S r   r   )r
   r   r   r   er   r   r   var_swappingD   s   
r&   c                   @   s   e Zd ZefddZefddZdd Zdd Zd	d
 Z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dS ) TestDataFlowc                 C   >   t }ttjffi ||}dD ]}| |||| qd S )Nr   r   )r   r   r   int32assertPreciseEqualselfflagspyfunccfuncr    r   r   r   test_assignmentsL   
   zTestDataFlow.test_assignmentsc                 C   sR   t }ttjffi ||}dD ]}| |||| q|tu r'|d d S d S )Nr)   r
   )r   r   r   r+   r,   force_pyobj_jit_optr-   r   r   r   test_assignments2R   s   zTestDataFlow.test_assignments2c                 C   s   |  || |j|  d S r   )r,   Zpy_func)r.   funcargsr   r   r   run_propagate_func^   s   zTestDataFlow.run_propagate_funcc                 C   0   t tjtjft}| |d | |d d S Nr   r   r   r   )r   r   intpr   r8   r.   r1   r   r   r   test_var_propagate1a      z TestDataFlow.test_var_propagate1c                 C   r9   r:   )r   r   r=   r   r8   r>   r   r   r   test_var_propagate2f   r@   z TestDataFlow.test_var_propagate2c                 C   s`   t tjtjft}| |d | |d | |d | |d | |d | |d d S )Nr;   r<   )r   r   r*   r   )r   r   r   r*   )r   r   r=   r   r8   r>   r   r   r   test_var_propagate3k   s   z TestDataFlow.test_var_propagate3c                 C   s   t tjtjft}| |d | |d | |d | |d | |d | |d | |d | |d | |d	 d S )
N)r   r   )r   r   )r   r*   )r   r   )r   r   rC   )r*   r   rB   )r*   r*   )r   r   r=   r   r8   r>   r   r   r   test_var_propagate4t   s   z TestDataFlow.test_var_propagate4c                 C   r(   )N)r   r   r   r      )r   r   r   r+   r,   r-   r   r   r   test_chained_compare   r3   z!TestDataFlow.test_chained_comparec                 C      |  t d S r   )rG   no_pyobj_jit_optr.   r   r   r   test_chained_compare_npm      z%TestDataFlow.test_chained_compare_npmc                 C   r(   )N)r   r   r   r   )r"   r   r   r+   r,   r-   r   r   r   test_stack_effect_error   s
   z$TestDataFlow.test_stack_effect_errorc                 C   rH   r   )rM   rI   rJ   r   r   r   test_stack_effect_error_npm   rL   z(TestDataFlow.test_stack_effect_error_npmc                 C   sH   t }ttjfd fi ||}ttddd}| || ||  d S )Nr   r   
   r   )r&   r   r   r+   tupler   r,   )r.   r/   r0   r1   r7   r   r   r   test_var_swapping   s   zTestDataFlow.test_var_swappingc                 C   rH   r   )rQ   rI   rJ   r   r   r   test_var_swapping_npm   rL   z"TestDataFlow.test_var_swapping_npmc                 C   sJ   t }ttjtjffi ||}dD ]\}}| |||||| qd S )N))rF   r   )rF      )r$   r   r   r=   r,   )r.   r/   r0   r1   r#   r    r   r   r   test_for_break   s
   zTestDataFlow.test_for_breakc                 C   rH   r   )rT   rI   rJ   r   r   r   test_for_break_npm   rL   zTestDataFlow.test_for_break_npmN)__name__
__module____qualname__r4   r2   r5   r8   r?   rA   rD   rE   rG   rK   rM   rN   rQ   rR   rT   rU   r   r   r   r   r'   J   s     	r'   __main__)ZunittestZnumbar   r   Z
numba.corer   Znumba.tests.supportr   r4   rI   r   r   r   r   r   r   r   r"   r$   r&   r'   rV   mainr   r   r   r   <module>   s(    	
^