o
    h                     @   sj   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
 d dlmZ G dd dZejjdd	 ZdS )
    N)assert_allcloseassert_array_equalassert_equal)directed_hausdorff)distance)check_random_statec                	   @   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ejdddgdd Zdd Zejddgddgddfdgddgddfd dgg d!d"d#fgd$d% ZdS )&TestHausdorffc                 C   s&  t jd t jdt j d }t ||t df}t |d |d< t |d |d< t ||t df}t |dd df d |dd df< t |dd df d |dd df< t |d	 d
 |d	< t |d d
 |d< || _|| _	t j
| jdddd| _t j
| j	dddd| _d S )Ni  d      ).r   ).   r   r   g       @r   r   gffffff
@r   r         axis   )nprandomseedpicolumn_stackzeroscossinpath_1path_2insert	path_1_4d	path_2_4d)selfrandom_anglesrandom_columnsrandom_columns_2 r$   ]/var/www/html/scripts/venv/lib/python3.10/site-packages/scipy/spatial/tests/test_hausdorff.pysetup_method   s$   &&zTestHausdorff.setup_methodc                 C   s4   t | j| jd }t | j| jd }||ksJ d S )Nr   )r   r   r   )r    forwardreverser$   r$   r%   test_symmetry!   s   zTestHausdorff.test_symmetryc                 C   s>   t | j| jd }ttjt| j| jdd}t|| d S )Nr   r   r   	r   r   r   maxr   aminr   cdistr   r    actualexpectedr$   r$   r%   #test_brute_force_comparison_forward)   
   z1TestHausdorff.test_brute_force_comparison_forwardc                 C   >   t | j| jd }ttjt| j| jdd}t|| d S Nr   r   )	r   r   r   r+   r   r,   r   r-   r   r.   r$   r$   r%   #test_brute_force_comparison_reverse3   r2   z1TestHausdorff.test_brute_force_comparison_reversec                 C   s    t | j| jd }t|d d S )Nr           )r   r   r   )r    r/   r$   r$   r%   test_degenerate_case=   s   z"TestHausdorff.test_degenerate_casec              	   C   sn   t | jdd df | jdd df d }ttjt| jdd df | jdd df dd}t|| d S )N.r
   r   r   r   r*   r.   r$   r$   r%   test_2d_data_forwardC   s   z"TestHausdorff.test_2d_data_forwardc                 C   r3   r4   )	r   r   r   r+   r   r,   r   r-   r   r.   r$   r$   r%   test_4d_data_reverseM   s
   z"TestHausdorff.test_4d_data_reversec                 C   sn   t ddgddgddgddgddgg}t ddgddgdd	gd
dgg}t||dd  }d}t|| d S )Nir   r   r      r
      r	   
   	   )r
   r   )r   arrayr   r   )r    path_simple_1path_simple_2r/   r0   r$   r$   r%   test_indicesV   s
   ("zTestHausdorff.test_indicesc                 C   s<   t d }| }t| j| j t d }| }t|| d S Nr   	get_stater   r   r   r   )r    rsold_global_staters2new_global_stater$   r$   r%   test_random_state_   s   zTestHausdorff.test_random_stater   NiEc                 C   s>   t d }| }t| j| j| t d }| }t|| d S rC   rD   )r    r   rF   rG   rH   rI   r$   r$   r%   test_random_state_None_inti   s   z(TestHausdorff.test_random_state_None_intc                 C   sb   t jd}|d}|d}d}tjt|d t|| W d    d S 1 s*w   Y  d S )Nl	   "{`R! r   r
   )r   r   z'need to have the same number of columns)match)r   r   default_rngpytestraises
ValueErrorr   )r    rngABmsgr$   r$   r%   test_invalid_dimensionst   s   

"z%TestHausdorff.test_invalid_dimensionszA, B, seed, expectedr   r   r   )r6   r   r   r   r   )r   r   rW   i*- )r6   r   r   c                 C   s@   t |||d}t|d |d  |dd  |dd  ksJ d S )N)uvr   r   r   )r   r   )r    rS   rT   r   r0   r/   r$   r$   r%   test_subsets~   s    zTestHausdorff.test_subsets)__name__
__module____qualname__r&   r)   r1   r5   r7   r8   r9   rB   rJ   rO   markparametrizerK   rV   r[   r$   r$   r$   r%   r      s>    


		



r   c                  C   s   zdd l } W n ty   td Y nw |  jdk r!td td}tj|dfd}tjdd}d	d	g||d
 < t	||d}t
|d d t
|d
 |d
  d S )Nr   z)psutil required to check available memoryl       P z.insufficient memory available to run this testg   ZAr
   )shaperL   r   r   )rY   rZ   g
 H@)psutilModuleNotFoundErrorrO   skipvirtual_memory	availableintr   r   r   r   )rb   sizearr1arr2r/   r$   r$   r%   test_massive_arr_overflow   s   
rk   )numpyr   numpy.testingr   r   r   rO   scipy.spatial.distancer   scipy.spatialr   scipy._lib._utilr   r   r_   xslowrk   r$   r$   r$   r%   <module>   s     