o
    i+                     @   s   d dl Zd dlmZmZ d dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZ ejde
eegZejddZejd	d
ZG dd dZG dd dZG dd dZdS )    N)xp_assert_equalxp_assert_close)raises)griddataNearestNDInterpolatorLinearNDInterpolatorCloughTocher2DInterpolator)_run_concurrent_barrierinterpolatormethod)nearestZlinearZcubicrescale)TFc                   @   s   e Zd Zdd Zeedd Zeedd Zeedd Zeed	d
 Z	edd Z
dd Zedd Zedd Zedd ZdS )TestGriddatac                 C   sZ   g d}g d}t ||g ddd}t|g d t ||g d}t|tjtjdg d S )N)r   r   r      r   r   )r         )r   r   )r   r   r   )Z
fill_value)g      r   r   r   )r   r   npnan)selfxyyi r   a/home/kim/smarthome/.venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_ndgriddata.pytest_fill_value   s   zTestGriddata.test_fill_valuec                 C   s   t jg dt jd}t j|jd t jdd d d f t ddgd d d f  }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 d S Nr   )      r"   )r"         ?)r#   r#   )g      ?g333333?Zdtyper   r   r   r   +=atolerr_msgr   arrayfloat64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g dt jd}t j|jd t jdd d d f t ddgd d d f  }t||f}t|||||d}t||d|d d S r    r*   r0   r   r   r   test_multivalue_2d4   s   
 zTestGriddata.test_multivalue_2dc                 C   s   t jg dt jd}t j|jd t jd}|d d d d d f t g dd d d d f  }t||f}t|||||d}|jdksFJ |t|t |d d d f dd|d	 d S )
Nr!   r$   r   r   r   r   r%      r   r   r   r&   r'   	r   r+   r,   r-   r.   r/   r   r   Ztiler   r   r   r   r   xir1   r   r   r   r   test_multipoint_2d@   s   
2
zTestGriddata.test_multipoint_2dc                 C   s   t jg dt jd}t j|jd t jd}|d|d d d   }|d d d d d f t g dd d d d f  }t||f}t|||||d}|jdksOJ t|t |d d d f d	d
|d d S )Nr!   r$   r                  @r   r4   r%   r5   r7   r&   r'   r8   r9   r   r   r   test_complex_2dP   s   
2
zTestGriddata.test_complex_2dc                 C      t g d}t g d}tt||||d||dd tt|dd|||d||dd tt|f||f|d||dd d S )Nr         @r         @r6      r   r   r   g333333@r   r   r   r&   r)   r(   rB   r   r   r+   r   r   reshaper   r   r   r   r   r   r   test_1da      
zTestGriddata.test_1dc                 C   s   t g d}t g d}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   ?g      @      ?r   rD   r&   rE   rB   r   rF   )r   r   r   r:   Z	yi_shouldr   r   r   r   test_1d_bordersm   s4   

zTestGriddata.test_1d_bordersc                 C   r>   )N)r@   r   rA   r6   rB   r   rC   rD   g|=rE   rB   r   rF   rH   r   r   r   test_1d_unsorted   rJ   zTestGriddata.test_1d_unsortedc                 C   s   t jg dt jd}t jg dt jd}t jg dt jd}t t dddd d d f t dddd d d f \}}| }| }t ||gj }|}t|||t dd	g |d
}	t||||dd}
t	|	|
|dd d S )N)r   )r   d   )
   rO   )rP   r   )r   r6   r$   )r   r   r   r   )皙?g?)rL          @g      g      @g      "@r   rP      rO   g      Y@rD   Tr%   g-q=rE   )
r   r+   r,   Zbroadcast_arrayslinspaceravelTcopyr   r   )r   r   ZpointsZpoints_rescaledvaluesxxyyr:   r1   ZziZzi_rescaledr   r   r   test_square_rescale_manual   s*   


z'TestGriddata.test_square_rescale_manualc           	      C   s   t jg dt jd}t j|jd t jd}|d|d d d   }t ddg}t||||d}t|||d d d f |d}t|||d t dg}t g d	}ttt||||d ttt||||d d S )
Nr!   r$   r   r<   r   r#   rD   )r)   )r#   r#   r#   )	r   r+   r,   r-   r.   r   r   assert_raises
ValueError)	r   r   r   r   r:   p1Zp2Zxi1Zxi3r   r   r   
test_xi_1d   s"   

zTestGriddata.test_xi_1dN)__name__
__module____qualname__r   parametrize_methodsparametrize_rescaler2   r3   r;   r=   rI   rM   rN   r[   r_   r   r   r   r   r      s.    




r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zejj	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   r-   rG   r   r   )r   nptsndr   r   nndioptsZnndi_or   r   r   test_nearest_options   s   


z.TestNearestNDInterpolator.test_nearest_optionsc                 C   s   t g dg dg d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 )N)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   rQ   rK           rR   )r   r+   r   r   list)r   rh   dNIr   r   r   test_nearest_list_argument   s   
 z4TestNearestNDInterpolator.test_nearest_list_argumentc                 C   s   t g dg dg dg}d}d| d| gd| d| gf}t|d |d f|d }t |d |d  d }t|||d	t jt jg t |d |d  d }t j}t||||d
ddg t |d |d  d }t|||d	ddg d S )N)r   r#   r   r   )r   r   r#   r   r   r   r   r   rQ   r   r   r   gHz>)distance_upper_bound)rr   prl   rR   )r   r+   r   sqrtr   r   inf)r   rh   deltaZquery_pointsro   rr   rs   r   r   r   test_nearest_query_options   s,   
 

z4TestNearestNDInterpolator.test_nearest_query_optionsc                 C   st   t g dg dg dg}t|d |d f|d }tt |ddgdd	 W d    d S 1 s3w   Y  d S )
N)r   r   r   r   )r   r   r   r   rq   r   r   r   r#   znot a dictionary)Zquery_options)r   r+   r   r\   	TypeError)r   rh   ro   r   r   r   test_nearest_query_valid_inputs   s   

"z9TestNearestNDInterpolator.test_nearest_query_valid_inputsc                    sP   d\}}t || ||f t |}t |} fdd}td|| d S )N)2   r   c                    s   |  d S )Nr   )_Zsplr   r   r   	worker_fn   s   z=TestNearestNDInterpolator.test_concurrency.<locals>.worker_fnrP   )r   r-   rG   r   r	   )r   rg   rh   r   ri   r}   r   r|   r   test_concurrency   s   

z*TestNearestNDInterpolator.test_concurrencyN)r`   ra   rb   rk   rp   rw   ry   pytestmarkZthread_unsafer~   r   r   r   r   re      s    re   c                   @   s$   e Zd Zedd Zedd ZdS )TestNDInterpolatorsc                 C   s  t jd}|d}|d}t ||}t t|t|}t t|t|}t ||\}}t |	 |	 fj
}|tt|||}	|	|}
|	||f}|	|df}|	||}|	|d}|
j|j  kr||j  kr||j  kr||jksJ  J d S )Nr   rP   rl   )r   randomRandomStatehypotrT   minmaxZmeshgridZvstackrU   rV   rm   zipsize)r   r
   rngr   r   zXYXYinterpZinterp_points0Zinterp_points1Zinterp_points2Zinterp_points3Zinterp_points4r   r   r   test_broadcastable_input  s.   



z,TestNDInterpolators.test_broadcastable_inputc           	      C   s   t jd}|d}|d d df |d d df }}t ||}|d}|jdd |jdd |jdd |||}|| d S )Nr   )rP   r   r   )rz   r   F)write)r   r   r   r   Zsetflags)	r   r
   r   Zxyr   r   r   r   r   r   r   r   test_read_only$  s   
"

z"TestNDInterpolators.test_read_onlyN)r`   ra   rb   parametrize_interpolatorsr   r   r   r   r   r   r     s
    
r   )numpyr   Zscipy._lib._array_apir   r   r   r   r\   Zscipy.interpolater   r   r   r   Zscipy._lib._testutilsr	   r   Zparametrizer   rc   rd   r   re   r   r   r   r   r   <module>   s.     L