U
    Gvf$                     @   s   d dl Z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mZmZ ejdeeegZG dd dZG dd	 d	ZG d
d dZdS )    N)assert_equalassert_array_equalassert_allclose)raises)griddataNearestNDInterpolatorLinearNDInterpolatorCloughTocher2DInterpolatorinterpolatorc                   @   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 )TestGriddatac                 C   sd   dddg}dddg}t ||dddgd	d
}t|dd	dg t ||dddg}t|tjtjdg d S )Nr   r   r      r   r   r         r   r   )r   r   )Z
fill_valueg      )r   r   npnan)selfxyyi r   K/tmp/pip-unpacked-wheel-96ln3f52/scipy/interpolate/tests/test_ndgriddata.pytest_fill_value   s    

zTestGriddata.test_fill_valuec              	   C   s   t jdddddgt jd}t j|jd t jdd d d f t ddgd d d f  }d	D ]t}d
D ]j}t||f}t|d d df |d d df f||d d df |d d df f||d}t||d|d qbqZd S Nr         r   r         ?r!   r!   g      ?g333333?Zdtyper   r   nearestZlinearZcubicTFmethodrescale+=atolerr_msgr   arraydoublearangeshapereprr   r   r   r   r   r)   r*   msgr   r   r   r   test_alternative_call   s     Bz"TestGriddata.test_alternative_callc              	   C   s   t jdddddgt jd}t j|jd t jdd d d f t ddgd d d f  }d	D ]<}d
D ]2}t||f}t|||||d}t||d|d qbqZd S r   r/   r5   r   r   r   test_multivalue_2d(   s     zTestGriddata.test_multivalue_2dc              	   C   s   t jdddddgt jd}t j|jd t jd}|d d d d d f t dddgd d d d f  }dD ]`}d	D ]V}t||f}t|||||d
}t|jd|d t|t 	|d d d f dd|d qpqhd S )Nr   r   r    r"   r#   r$   r   r%   r'   r(      r   r.   r   r   r+   r,   
r   r0   r1   r2   r3   r4   r   r   r   Ztiler   r   r   xir)   r*   r6   r   r   r   r   test_multipoint_2d4   s    4 zTestGriddata.test_multipoint_2dc              	   C   s   t jdddddgt jd}t j|jd t jd}|d|d d d	   }|d d d d d f t dddgd d d d f  }d
D ]`}dD ]V}t||f}t|||||d}t|jd|d t|t 	|d d d f dd|d qq~d S )Nr   r   r    r"   r#   r$   r                  @r   r%   r'   r(   r9   r;   r<   r+   r,   r=   r>   r   r   r   test_complex_2dD   s    4 zTestGriddata.test_complex_2dc                 C   s   t ddddddg}t dddd	ddg}d
D ]d}tt||||d||dd tt|dd|||d||dd tt|f||f|d||dd q0d S )Nr         @r         @r:      r   r   333333@r%   r)   r+   r.   r-   r   r0   r   r   reshaper   r   r   r)   r   r   r   test_1dU   s       zTestGriddata.test_1dc                 C   s   t ddddddg}t dddd	ddg}t d
dg}t ddg}d}tt||||d||dd tt|dd|||d||dd tt|f||f|d||dd d S )Nr   rC   r   rD   r:   rE   r   r   rF   ?g      @      ?r&   rG   r+   rH   rI   )r   r   r   r?   Z	yi_shouldr)   r   r   r   test_1d_bordersa   s4    
zTestGriddata.test_1d_bordersc                 C   s   t ddddddg}t dddd	ddg}d
D ]d}tt||||d||dd tt|dd|||d||dd tt|f||f|d||dd q0d S )NrC   r   rD   r:   rE   r   r   r   rF   r%   rG   g|=rH   rI   rK   r   r   r   test_1d_unsortedw   s       zTestGriddata.test_1d_unsortedc              	   C   s   t jdddddgt jd}t jdddd	d
gt jd}t jdddddgt jd}t t dddd d d f t dddd d d f \}}| }| }t ||gj }dD ]H}|}t|||t ddg |d}	t||||dd}
t	|	|
|dd qd S )Nr   )r   d   )
   rQ   )rR   r   )r   r:   r$   r   r   r   )皙?g?rN   g       @g      g      @g      "@r   rR      rQ   r%   g      Y@rG   Tr(   g-q=rH   )
r   r0   r1   Zbroadcast_arrayslinspaceravelTcopyr   r   )r   ZpointsZpoints_rescaledvaluesZxxyyr?   r)   r6   ZziZzi_rescaledr   r   r   test_square_rescale_manual   s(    
z'TestGriddata.test_square_rescale_manualc           	   	   C   s   t jdddddgt jd}t j|jd t jd}|d|d d d	   }t d
d
g}dD ]}t||||d}t|||d d d f |d}t|||d t d
g}t d
d
d
g}ttt||||d ttt||||d qXd S )Nr   r   r    r"   r#   r$   r   rA   r   r!   r%   rG   r;   )	r   r0   r1   r2   r3   r   r   assert_raises
ValueError)	r   r   r   r?   r)   p1p2Zxi1Zxi3r   r   r   
test_xi_1d   s$    zTestGriddata.test_xi_1dN)__name__
__module____qualname__r   r7   r8   r@   rB   rL   rO   rP   r[   r`   r   r   r   r   r      s   
r   c                   @   s   e Zd Zdd Zdd ZdS )TestNearestNDInterpolatorc                 C   sf   d\}}t || ||f}t |}t||}ddd}t|||d}t||||dd d S )N)   r   F)Zbalanced_treeZcompact_nodes)Ztree_optionsr+   )r-   )r   r2   rJ   r   r   )r   Znptsndr   r   ZnndioptsZnndi_or   r   r   test_nearest_options   s    


z.TestNearestNDInterpolator.test_nearest_optionsc                 C   s   t dddddddgdddddddgdddddddgg}|d d dd f }t|d |d f|d }t|ddgddgddg t|d |d ft|d }t|ddgddgddg d S )Nr   r   r   r   rS   rM   )r   r0   r   r   list)r   rf   dZNIr   r   r   test_nearest_list_argument   s    z4TestNearestNDInterpolator.test_nearest_list_argumentN)ra   rb   rc   rh   rk   r   r   r   r   rd      s   rd   c                   @   s$   e Zd Zedd Zedd ZdS )TestNDInterpolatorsc                 C   s  t jd t jd}t jd}t ||}t t|t|}t t|t|}t ||\}}t |	 |	 fj
}|tt|||}||}	|||f}
||df}|||}||d}t|	j|
j  ko|j  ko|j  ko|jkn  d d S )Nr   rR   g        T)r   randomseedhypotrU   minmaxZmeshgridZvstackrV   rW   ri   zipr   size)r   r
   r   r   zXYXYinterpZinterp_points0Zinterp_points1Zinterp_points2Zinterp_points3Zinterp_points4r   r   r   test_broadcastable_input   s2    

z,TestNDInterpolators.test_broadcastable_inputc                 C   s   t jd t jd}|d d df |d d df  }}t ||}t jd}|jdd |jdd |jdd |||}|| d S )Nr   )rR   r   r   )2   r   F)write)r   rm   rn   ro   Zsetflags)r   r
   Zxyr   r   rt   rw   rx   r   r   r   test_read_only   s    "
z"TestNDInterpolators.test_read_onlyN)ra   rb   rc   parametrize_interpolatorsry   r|   r   r   r   r   rl      s   
rl   )Znumpyr   Znumpy.testingr   r   r   Zpytestr   r\   Zscipy.interpolater   r   r   r	   markZparametrizer}   r   rd   rl   r   r   r   r   <module>   s     