B
     \?                 @   s   d dl mZmZmZ d dlZd dlmZ d dlm	Z	m
Z
 ddlmZm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 )(    )print_functionabsolute_importdivisionN)unittest_support)jittypes   )TestCasetagc             C   s*   | j |j kst| d |  ||d < d S )N)shapeAssertionError)srcdestk r   7lib/python3.7/site-packages/numba/tests/test_overlap.pyarray_overlap1   s    r   c             C   s*   | j |j kst| |d  |d | < d S )N)r   r   )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 )N)r   r   )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 )N)r   r   )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   r   r   r   array_overlap5   s    r   c             C   s2   | j |j kst| dd | f |d|d f< d S )N.)r   r   )r   r   r   r   r   r   array_overlap6    s    r   c             C   s"   | j |j kst| |d d d< d S )N)r   r   )r   r   r   r   r   array_overlap11&   s    r   c             C   s*   | j |j kst| d d d |d d < d S )Nr   )r   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 )Nr   )r   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 )Nr   )r   r   )r   r   r   r   r   array_overlap142   s    r   c             C   s&   | j |j kst| |dd d df< d S )N.r   )r   r   )r   r   r   r   r   array_overlap156   s    r   c             C   s.   | j |j kst| dd d df |d d < d S )N.r   )r   r   )r   r   r   r   r   array_overlap16:   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|}xt|dD ]}|f| }	td|| |	}
x^t||
||
D ]H\}}|rx:td	|D ]}|||||t|d
 qW qj|||||i  qjW q2W d 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_layoutsD   s
    z4TestArrayOverlap.check_overlap.<locals>.vary_layoutsc                s,   | ||f| |||f|   || d S )N)ZassertPreciseEqual)pyfunccfuncpydestcdestkwargs)selfr   r   checkK   s    z-TestArrayOverlap.check_overlap.<locals>.checkT)Znopythonr   r   )r   )r   rangenpZarangeZreshapezipdict)r0   r+   min_ndimhave_k_argumentNr*   r1   r,   ndimr   r(   r-   r.   r   r   )r0   r   check_overlapA   s    
zTestArrayOverlap.check_overlapc             C   s   | j ||dd d S )NT)r6   r7   )r:   )r0   r+   r6   r   r   r   check_overlap_with_k^   s    z%TestArrayOverlap.check_overlap_with_kc             C   s   | j tdd d S )Nr   )r6   )r;   r   )r0   r   r   r   test_overlap1a   s    zTestArrayOverlap.test_overlap1c             C   s   | j tdd d S )Nr   )r6   )r;   r   )r0   r   r   r   test_overlap2d   s    zTestArrayOverlap.test_overlap2c             C   s   | j tdd d S )N   )r6   )r;   r   )r0   r   r   r   test_overlap3g   s    zTestArrayOverlap.test_overlap3c             C   s   | j tdd d S )Nr>   )r6   )r;   r   )r0   r   r   r   test_overlap4j   s    zTestArrayOverlap.test_overlap4c             C   s   | j tdd d S )Nr   )r6   )r;   r   )r0   r   r   r   test_overlap5m   s    zTestArrayOverlap.test_overlap5c             C   s   | j tdd d S )Nr   )r6   )r;   r   )r0   r   r   r   test_overlap6p   s    zTestArrayOverlap.test_overlap6c             C   s   | j tdd d S )Nr   )r6   )r:   r   )r0   r   r   r   test_overlap11s   s    zTestArrayOverlap.test_overlap11c             C   s   | j tdd d S )Nr   )r6   )r:   r   )r0   r   r   r   test_overlap12v   s    zTestArrayOverlap.test_overlap12c             C   s   | j tdd d S )Nr>   )r6   )r:   r   )r0   r   r   r   test_overlap13y   s    zTestArrayOverlap.test_overlap13c             C   s   | j tdd d S )Nr>   )r6   )r:   r   )r0   r   r   r   test_overlap14|   s    zTestArrayOverlap.test_overlap14c             C   s   | j tdd d S )Nr   )r6   )r:   r   )r0   r   r   r   test_overlap15   s    zTestArrayOverlap.test_overlap15c             C   s   | j tdd d S )Nr   )r6   )r:   r   )r0   r   r   r   test_overlap16   s    zTestArrayOverlap.test_overlap16N)F)__name__
__module____qualname__r:   r;   r<   r=   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r   r   r   r   r   ?   s   
r   __main__)r   )r   )r   )r   )r   )r   )Z
__future__r   r   r   Znumpyr3   Znumbar   Zunittestr   r   Zsupportr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   rI   mainr   r   r   r   <module>   s&   





G