a
    Re                     @   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r|d V  qrt|V  qrd S )N)Zdtypec                 S   s   g | ]}d qS N .0ir   r   Y/var/www/sunrise/env/lib/python3.9/site-packages/scipy/cluster/tests/test_disjoint_set.py
<listcomp>       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
 q4q
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s2J 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sBJ 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s2J d S )Nr/   )r)   r   )r'   r(   r-   xr   r   r	   test_contains7   s
    r4   c                 C   s|   t | }t|}t }t|D ]D\}}|| t||d ksDJ || t||d ksJ qt|t|ksxJ d S )Nr   )r)   r   	enumerater0   r   r   )r'   r(   Zdis1Zdis2r   r3   r   r   r	   test_addA   s    

r6   c                  C   s   t dd} t| }tt |d  W d    n1 s80    Y  tt  || d d W d    n1 sp0    Y  tt  || d d W d    n1 s0    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                    s2  t | t t ks J tt| d }|dkrF|d d d }t|D ]r\}} | |d  rrJ  | |d  sJ  | |d  sJ  j| d | ksNJ qN fddD }|dkrtfdd|D sJ ntfd	d|D sJ  d
 d r.J d S )Nr   r>   c                    s   g | ]} | qS r   r   r   r-   r   r	   r
   q   r   z.test_linear_union_sequence.<locals>.<listcomp>r=   c                 3   s   | ]} d  |kV  qdS )r   Nr   r   rr(   r   r	   	<genexpr>s   r   z-test_linear_union_sequence.<locals>.<genexpr>c                 3   s   | ]} d  |kV  qdS )Nr   rA   rC   r   r	   rD   u   r   r   )	r)   r   r   r   r5   r:   r9   r+   all)r'   r<   indicesitr   rootsr   r-   r(   r	   test_linear_union_sequence`   s     rK   c                    s   t | }t| |D ]4} ||s(J  ||r8J  ||sJ q jt|ks\J |t kslJ  fdd|D }||ksJ d S )Nc                    s   g | ]} | qS r   r   )r   r3   r@   r   r	   r
      r   z$test_self_unions.<locals>.<listcomp>)r)   r   r:   r9   r+   r   r   )r'   r(   r3   rI   r   r@   r	   test_self_unionsy   s    rL   orderabbac           
      C   s   t | }t|}tjjdd}t| }|| tdt|dD ]}|||  |||d    }}|dkr~|	||sJ n|	||sJ |t
|| ||d   }	|| |	ksJ || |	ksBJ qBd S )Nr   r      r   rN   )r)   r   r   r   r   r   shuffler   r   r9   min)
r'   rM   r(   r-   r"   rG   r   abexpectedr   r   r	   test_equal_size_ordering   s    

rV   kmax   c                    s  d|  }t |t tjjdd}dt|  D ]}td|d| D ]f}|jd|dd\}}||  || |   }} ||rJ  	||sJ  ||sHJ qHt
 ksJ  fddD }	t|t|d|   }
fdd|
D }|	|ks4J q4d S )NrP   r   r   )r#   c                    s   g | ]} | qS r   r   r   r@   r   r	   r
      r   z$test_binary_tree.<locals>.<listcomp>c                    s   g | ]} | qS r   r   r   rC   r   r	   r
      r   )r)   r   r   r   r   r   r   r   r:   r9   r   )rW   r'   r"   r    r   Zr1Zr2rS   rT   rI   Zexpected_indicesrU   r   rJ   r	   test_binary_tree   s     rY   c                    s   t | }t| tjjdd}|d| | dfD ]\}}|| || } fdd D } t ksxJ | ksJ  fdd D } D ]}| |  	| qt
| }|  ksJ  |   |ks0J q0d S )Nr   r   rP   c                    s$   h | ]} | h  hkr|qS r   r   r   r$   r-   r3   r   r	   	<setcomp>   r   ztest_subsets.<locals>.<setcomp>c                    s   i | ]} | t  qS r   )setrZ   r@   r   r	   
<dictcomp>   r   z test_subsets.<locals>.<dictcomp>)r)   r   r   r   r   r   Zsubset_sizer   Zsubsetr0   r   valuesZsubsetsr9   )r'   r(   r"   r   jyrU   r$   r   r[   r	   test_subsets   s     rb   )Zpytestr   r7   numpyr   Zscipy.cluster.hierarchyr   r   r%   r)   r.   r1   markZparametrizer4   r6   r;   rK   rL   rV   rY   rb   r   r   r   r	   <module>   s2   

	


