o
    g]                     @   s6  d dl Z d dl mZ d dlZd dlmZ d dlZdd Zdd Z	dd	 Z
d
d Ze jdddgdd Ze jdddgdd Zdd Ze jdddge jdddgdd Ze jdddgdd Ze jdddge jdddgdd  Ze jd!d"dgd#d$ Ze jdddgd%d& ZdS )'    N)raises)DisjointSetc                  c   s    t tj} ttj| td}|ttj| td7 }|ttj7 }|dd t| D 7 }tj	|t
d}tjjdd}	 |dd}|||}|dkrQ|d V  nt|V  q;)N)dtypec                 S   s   g | ]}d qS N .0ir   r   c/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/scipy/cluster/tests/test_disjoint_set.py
<listcomp>   s    z)generate_random_token.<locals>.<listcomp>r   seed      )lenstringascii_letterslistnparangeintfloatrangearrayobjectrandomRandomStaterandintchoicetuple)ktokensrngsizeelementr   r   r
   generate_random_token   s   

r%   c                 C   s@   i }t  D ]}||vrt|||< t|| kr nqt| S r   )r%   r   r   keys)nelementsr$   r   r   r
   get_elements   s   
r)   c                  C   s6   d} t | }t|}|j| ksJ t||ksJ d S )N
   )r)   r   	n_subsetsr   r'   r(   disr   r   r
   	test_init%   s
   r.   c                  C   sF   d} t | }t|}t|| ksJ |d t|| d ks!J d S )Nr*   dummyr   )r)   r   r   addr,   r   r   r
   test_len-   s   
r1   r'   r*   d   c                 C   s6   t | }t|}|D ]}||v sJ q
d|vsJ d S )Nr/   )r)   r   )r'   r(   r-   xr   r   r
   test_contains7   s
   r4   c                 C   s|   t | }t|}t }t|D ]"\}}|| t||d ks"J || t||d ks1J qt|t|ks<J d S )Nr   )r)   r   	enumerater0   r   r   )r'   r(   dis1dis2r	   r3   r   r   r
   test_addA   s   

r8   c                  C   s   t dd} t| }tt |d  W d    n1 sw   Y  tt || d d W d    n1 s8w   Y  tt || d d W d    d S 1 sUw   Y  d S )Nr*   )r'   r/   r   )r)   r   assert_raisesKeyErrormerge	connected)r(   r-   r   r   r
   test_element_not_presentR   s   




"r=   	directionforwards	backwardsc                    s.  t | t t ksJ tt| d }|dkr#|d d d }t|D ]9\}} | |d  r9J  | |d  sGJ  | |d  sUJ  j| d | ks`J q' fddD }|dkr|tfdd|D s{J ntfd	d|D sJ  d
 d rJ d S )Nr   r@   c                       g | ]} | qS r   r   r   r-   r   r
   r   q       z.test_linear_union_sequence.<locals>.<listcomp>r?   c                 3       | ]	} d  |kV  qdS )r   Nr   r   rr(   r   r
   	<genexpr>s       z-test_linear_union_sequence.<locals>.<genexpr>c                 3   rE   )Nr   rF   rH   r   r
   rI   u   rJ   r   )	r)   r   r   r   r5   r<   r;   r+   all)r'   r>   indicesitr	   rootsr   r-   r(   r
   test_linear_union_sequence`   s    rQ   c                    s   t | }t| |D ]} ||sJ  ||rJ  ||s$J q
 jt|ks.J |t ks6J  fdd|D }||ksEJ d S )Nc                    rB   r   r   )r   r3   rC   r   r
   r      rD   z$test_self_unions.<locals>.<listcomp>)r)   r   r<   r;   r+   r   r   )r'   r(   r3   rO   r   rC   r
   test_self_unionsy   s   rR   orderabbac           
      C   s   t | }t|}tjjdd}t| }|| tdt|dD ]C}|||  |||d   }}|dkr?|	||s>J n|	||sGJ |t
|| ||d   }	|| |	ks\J || |	ksdJ q!d S )Nr   r      r   rT   )r)   r   r   r   r   r   shuffler   r   r;   min)
r'   rS   r(   r-   r"   rM   r	   abexpectedr   r   r
   test_equal_size_ordering   s   

r\   kmax   c                    s  d|  }t |t tjjdd}dt|  D ]l}td|d| D ]3}|jd|dd\}}||  || |  }} ||rGJ  	||sOJ  ||sWJ q$t
 ks`J  fddD }	t|t|d|   }
fdd|
D }|	|ksJ qd S )NrV   r   r   )r#   c                    rB   r   r   r   rC   r   r
   r      rD   z$test_binary_tree.<locals>.<listcomp>c                    rB   r   r   r   rH   r   r
   r      rD   )r)   r   r   r   r   r   r   r   r<   r;   r   )r]   r'   r"   r    r	   r1r2rY   rZ   rO   expected_indicesr[   r   rP   r
   test_binary_tree   s"   rb   c                    s   t | }t| tjjdd}|d| | dfD ]V\}}|| || } fdd D }| ks7J  fdd D } D ]}| |  | qBt|	 }| 
 ks\J  |   |ksnJ qd S )Nr   r   rV   c                    s$   h | ]} | h  hkr|qS r   r   r   r$   r-   r3   r   r
   	<setcomp>   s   $ ztest_subsets.<locals>.<setcomp>c                    s   i | ]} | t  qS r   )setrc   rC   r   r
   
<dictcomp>   s    z test_subsets.<locals>.<dictcomp>)r)   r   r   r   r   r   subsetr0   r   valuessubsetsr;   )r'   r(   r"   r	   jyr[   r$   r   rd   r
   test_subsets   s    rm   )pytestr   r9   numpyr   scipy.cluster.hierarchyr   r   r%   r)   r.   r1   markparametrizer4   r8   r=   rQ   rR   r\   rb   rm   r   r   r   r
   <module>   s4    

	


