
    tKg                         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      Zej                  j                  d        Zy)	    N)assert_allcloseassert_array_equalassert_equal)directed_hausdorff)distance)check_random_statec            	          e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                  j                  d
ddg      d        Zd Zej                  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        Zy)TestHausdorffc                    t         j                  j                  d       t         j                  j                  d      t         j                  z  dz  }t        j                  ||t        j
                  d      f      }t        j                  |d         |d<   t        j                  |d         |d<   t        j                  ||t        j
                  d      f      }t        j                  |dd df         dz  |dd df<   t        j                  |dd df         dz  |dd df<   t        j                  |d	         d
z  |d	<   t        j                  |d         d
z  |d<   || _        || _	        t        j                  | j                  ddd      | _        t        j                  | j                  ddd      | _        y )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_2s       f/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/spatial/tests/test_hausdorff.pysetup_methodzTestHausdorff.setup_method   s{   
		t		((-59M288C=9;!#v(>!?v!#v(>!?v??M288C=9;"$&&)9!"a%)@"AC"GQ"$&&)9!"a%)@"AC"GQ!#(8(>!?#!E!#(8(>!?#!E$&4;;11=4;;2A>    c                     t        | j                  | j                        d   }t        | j                  | j                        d   }||k7  sJ y )Nr   )r   r   r   )r#   forwardreverses      r'   test_symmetryzTestHausdorff.test_symmetry!   sD     %T[[$++>qA$T[[$++>qA'!!!r)   c                     t        | j                  | j                        d   }t        t	        j
                  t        j                  | j                  | j                        d            }t        ||       y )Nr   r   r   	r   r   r   maxr   aminr   cdistr   r#   actualexpecteds      r'   #test_brute_force_comparison_forwardz1TestHausdorff.test_brute_force_comparison_forward)   T     $DKK=a@rwwx~~dkk4;;G$%' ()r)   c                     t        | j                  | j                        d   }t        t	        j
                  t        j                  | j                  | j                        d            }t        ||       y Nr   r   )	r   r   r   r0   r   r1   r   r2   r   r3   s      r'   #test_brute_force_comparison_reversez1TestHausdorff.test_brute_force_comparison_reverse3   r7   r)   c                 b    t        | j                  | j                        d   }t        |d       y )Nr           )r   r   r   )r#   r4   s     r'   test_degenerate_casez"TestHausdorff.test_degenerate_case=   s'     $DKK=a@$r)   c                 *   t        | j                  dd df   | j                  dd df         d   }t        t	        j
                  t        j                  | j                  dd df   | j                  dd df         d            }t        ||       y )N.r   r   r   r   r/   r3   s      r'   test_2d_data_forwardz"TestHausdorff.test_2d_data_forwardC   s     $DKKRaR$8$(KKRaR$8::;=rwwx~~dkk#rr'.B.2kk#rr'.B D$%' ( 	)r)   c                     t        | j                  | j                        d   }t        t	        j
                  t        j                  | j                  | j                        d            }t        ||       y r9   )	r   r"   r!   r0   r   r1   r   r2   r   r3   s      r'   test_4d_data_reversez"TestHausdorff.test_4d_data_reverseM   sT     $DNNDNNCAFrwwx~~dnndnnM$%' ()r)   c                     t        j                  ddgddgddgddgddgg      }t        j                  ddgddgdd	gd
dgg      }t        ||      dd  }d}t        ||       y )Nir   r   r      r      r   
   	   )r   r   )r   arrayr   r   )r#   path_simple_1path_simple_2r4   r5   s        r'   test_indiceszTestHausdorff.test_indicesV   sz     2c(Aa51Q%!A1!FG1Q%!A3"Q!@A#M=A!"E68,r)   c                     t        d       }|j                         }t        | j                  | j                         t        d       }|j                         }t        ||       y Nr   	get_stater   r   r   r   )r#   rsold_global_staters2new_global_states        r'   test_random_statezTestHausdorff.test_random_state_   sN      %<<>4;;4 &==?%'78r)   r   NiEc                     t        d       }|j                         }t        | j                  | j                  |       t        d       }|j                         }t        ||       y rM   rN   )r#   r   rP   rQ   rR   rS   s         r'   test_random_state_None_intz(TestHausdorff.test_random_state_None_inti   sP      %<<>4;;T: &==?%'78r)   c                    t         j                  j                  d      }|j                  d      }|j                  d      }d}t        j                  t
        |      5  t        ||       d d d        y # 1 sw Y   y xY w)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msgs        r'   test_invalid_dimensionsz%TestHausdorff.test_invalid_dimensionst   s^     ii##$KLJJvJJv8]]:S1q!$ 211s   A55A>zA, B, seed, expectedr   r   r   )r<   r   r   r   r   )r   r   rc   i*- )r<   r   r   c                 ^    t        |||      }t        |d   |d          |dd  |dd  k(  sJ y )N)uvr   r   r   )r   r   )r#   r_   r`   r   r5   r4   s         r'   test_subsetszTestHausdorff.test_subsets~   s>    * $a148q	8A;/abzXab\)))r)   )__name__
__module____qualname__r(   r-   r6   r:   r=   r?   rA   rK   rT   r[   markparametrizerV   rb   rh    r)   r'   r
   r
      s    ?&"**%**-9 [[VdH%569 79% [[3

	
		 
	
		
 5		 	 
	6 &*'&*r)   r
   c                     	 dd l }  j	                         j
                  dk  rt        j                  d       t        d      }t        j                  |df      }t        j                  d      }d	d	g||d
z
  <   t        ||      }t        |d   d       t        |d
   |d
z
         y # t        $ r t        j                  d       Y w xY w)Nr   z)psutil required to check available memoryl       P z.insufficient memory available to run this testg   ZAr   )shaperX   r   r   )rf   rg   g
 H@)psutilModuleNotFoundErrorr[   skipvirtual_memory	availableintr   r   r   r   )rq   sizearr1arr2r4   s        r'   test_massive_arr_overflowrz      s    
A ((83DEs8D884)$D88&!DVDN$$/FF1I12F1Itax(  A?@As   B* *C
C)numpyr   numpy.testingr   r   r   r[   scipy.spatial.distancer   scipy.spatialr   scipy._lib._utilr   r
   rl   xslowrz   rn   r)   r'   <module>r      sK    ) )  5 " /L* L*^ ) )r)   