o
    tBh                     @   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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 )N  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%   y/var/www/html/riverr-enterprise-integrations-main/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_reverse2   r3   z1TestHausdorff.test_brute_force_comparison_reversec                 C   s    t | j| jd }t|d d S )Nr           )r   r   r   )r!   r0   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_forwardB   s   z"TestHausdorff.test_2d_data_forwardc                 C   r4   r5   )	r   r    r   r,   r   r-   r   r.   r   r/   r%   r%   r&   test_4d_data_reverseL   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_2r0   r1   r%   r%   r&   test_indicesU   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_statec                 C   sH   dD ]}t d }| }t| j| j| t d }| }t|| qd S )N)NiErD   )r!   r   rF   rG   rH   rI   r%   r%   r&   test_random_state_None_inth   s   z(TestHausdorff.test_random_state_None_intc                 C   sb   t jd t jdd}t jdd}tt t|| W d    d S 1 s*w   Y  d S )Nr	   r   r   r=   r   )r   r   r   randpytestraises
ValueErrorr   )r!   ABr%   r%   r&   test_invalid_dimensionss   s   "z%TestHausdorff.test_invalid_dimensionszA, B, seed, expectedr   r   r   )r7   r   r   r   r   )r   r   rS   i*- )r7   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!   rP   rQ   r   r1   r0   r%   r%   r&   test_subsets|   s    zTestHausdorff.test_subsetsN)__name__
__module____qualname__r'   r*   r2   r6   r8   r9   r:   rC   rJ   rK   rR   rM   markparametrizerW   r%   r%   r%   r&   r   
   s<    


		
	r   c                  C   sd   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 )
Ng   ZAr   )shape)r   r   r   r   )rU   rV   r   g
 H@)intr   r   r   r   )sizearr1arr2r0   r%   r%   r&   test_massive_arr_overflow   s   rb   )numpyr   numpy.testingr   r   r   rM   scipy.spatial.distancer   scipy.spatialr   scipy._lib._utilr   r   r[   xslowrb   r%   r%   r%   r&   <module>   s     