U
    ,d                     @   s   d dl Zd dlmZ d dlmZ d dlmZmZ d dl	Z	d!ddZ
d"dd	Zd#d
dZd$ddZd%ddZd&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re	  dS )'    N)jit)types)TestCasetag   c                 C   s*   | j |j kst| d |  ||d < d S NshapeAssertionErrorsrcdestk r   </tmp/pip-unpacked-wheel-eu7e0c37/numba/tests/test_overlap.pyarray_overlap1   s    r   c                 C   s*   | j |j kst| |d  |d | < d S r   r   r   r   r   r   array_overlap2   s    r   c                 C   s:   | j |j kst| d d |d f |d d d | f< d S r   r   r   r   r   r   array_overlap3   s    r   c                 C   s:   | j |j kst| d d d | f |d d |d f< d S r   r   r   r   r   r   array_overlap4   s    r   c                 C   s2   | j |j kst| d|d f |dd | f< d S N.r   r   r   r   r   array_overlap5   s    r   c                 C   s2   | j |j kst| dd | f |d|d f< d S r   r   r   r   r   r   array_overlap6   s    r   c                 C   s"   | j |j kst| |d d d< d S Nr   r   r   r   r   r   array_overlap11%   s    r   c                 C   s*   | j |j kst| d d d |d d < d S r   r   r   r   r   r   array_overlap12)   s    r   c                 C   s*   | j |j kst| |d d d d df< d S r   r   r   r   r   r   array_overlap13-   s    r   c                 C   s2   | j |j kst| d d d d df |d d < d S r   r   r   r   r   r   array_overlap141   s    r   c                 C   s&   | j |j kst| |dd d df< d S N.r   r   r   r   r   r   array_overlap155   s    r    c                 C   s.   | j |j kst| dd d df |d d < d S r   r   r   r   r   r   array_overlap169   s    r!   c                   @   s~   e Zd Z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S ) TestArrayOverlapFc                    s   d}dd } fdd}t dd|}t|dD ]|}|f| }	td|| |	}
t||
||
D ]D\}}|rtd	|D ]}|||||t|d
 q|qf|||||i  qfq0d S )N   c                 s   sV   | j ddV  | j ddV  | d d d   d d d }|jjsH|jjrLt|V  d S )NC)orderFr   )copyflagsc_contiguousf_contiguousr
   )origar   r   r   vary_layoutsC   s
    z4TestArrayOverlap.check_overlap.<locals>.vary_layoutsc                    s,   | ||f| |||f|   || d S r   )ZassertPreciseEqual)pyfunccfuncpydestcdestkwargsselfr   r   checkJ   s    z-TestArrayOverlap.check_overlap.<locals>.checkT)Znopythonr   r   )r   )r   rangenpZarangeZreshapezipdict)r4   r.   min_ndimhave_k_argumentNr-   r5   r/   ndimr	   r+   r0   r1   r   r   r3   r   check_overlap@   s    
zTestArrayOverlap.check_overlapc                 C   s   | j ||dd d S )NT)r:   r;   )r>   )r4   r.   r:   r   r   r   check_overlap_with_k]   s    z%TestArrayOverlap.check_overlap_with_kc                 C   s   | j tdd d S Nr   r:   )r?   r   r3   r   r   r   test_overlap1`   s    zTestArrayOverlap.test_overlap1c                 C   s   | j tdd d S r@   )r?   r   r3   r   r   r   test_overlap2c   s    zTestArrayOverlap.test_overlap2c                 C   s   | j tdd d S N   rA   )r?   r   r3   r   r   r   test_overlap3f   s    zTestArrayOverlap.test_overlap3c                 C   s   | j tdd d S rD   )r?   r   r3   r   r   r   test_overlap4i   s    zTestArrayOverlap.test_overlap4c                 C   s   | j tdd d S r@   )r?   r   r3   r   r   r   test_overlap5l   s    zTestArrayOverlap.test_overlap5c                 C   s   | j tdd d S r@   )r?   r   r3   r   r   r   test_overlap6o   s    zTestArrayOverlap.test_overlap6c                 C   s   | j tdd d S r@   )r>   r   r3   r   r   r   test_overlap11r   s    zTestArrayOverlap.test_overlap11c                 C   s   | j tdd d S r@   )r>   r   r3   r   r   r   test_overlap12u   s    zTestArrayOverlap.test_overlap12c                 C   s   | j tdd d S rD   )r>   r   r3   r   r   r   test_overlap13x   s    zTestArrayOverlap.test_overlap13c                 C   s   | j tdd d S rD   )r>   r   r3   r   r   r   test_overlap14{   s    zTestArrayOverlap.test_overlap14c                 C   s   | j tdd d S r@   )r>   r    r3   r   r   r   test_overlap15~   s    zTestArrayOverlap.test_overlap15c                 C   s   | j tdd d S r@   )r>   r!   r3   r   r   r   test_overlap16   s    zTestArrayOverlap.test_overlap16N)F)__name__
__module____qualname__r>   r?   rB   rC   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   r   r   r   r   r"   >   s   
r"   __main__)r   )r   )r   )r   )r   )r   )Znumpyr7   Znumbar   Z
numba.corer   Znumba.tests.supportr   r   Zunittestr   r   r   r   r   r   r   r   r   r   r    r!   r"   rP   mainr   r   r   r   <module>   s&   





G