a
    J5d1                     @   s>   d dl Z d dlZd dlmZ d dlmZmZ G dd dZdS )    N)empty_graph)edges_equalnodes_equalc                   @   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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d-d. Zd/d0 Zd1S )2TestRelabelc                 C   s  t  }t|d}t| g ks&J t| g ks:J dD ]B}t  }tj|d|d}t| g kslJ t| g ks>J q>t  }|g d t|}dd | D }dd | D }t|t|ksJ t|d}d	d | D }d
d | D }t|t|ksJ t	| g ds6J tj|dd}dd | D }dd | D }t|t|ks~J |ddksJ |ddksJ |ddksJ |ddksJ tj|dd}dd | D }dd | D }t|t|ksJ |ddks*J |ddks>J |ddksRJ |ddksfJ tj|ddd}dd | D }dd | D }t|t|ksJ |ddksJ |ddksJ |ddksJ |ddks J |jd d dksJ |jd d dks0J |jd d dks\|jd d dks\J |jd d dks|jd d dksJ d S )Nd   )defaultsortedincreasing degreedecreasing degreeorderingABr   Cr   r   r   Dc                 s   s   | ]\}}|V  qd S N .0ndr   r   W/var/www/html/django/DPS/env/lib/python3.9/site-packages/networkx/tests/test_relabel.py	<genexpr>       zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r      r     c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r      r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r      r   )r   i  i  i  r	   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r   $   r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r   %   r   r            r
   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r   -   r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r   .   r   labelr   Zlabel_attributec                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r   8   r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r   9   r   r   r   r   r   )
r   nxconvert_node_labels_to_integerslistnodesedgesadd_edges_fromdegreer   r   )selfGHoptdegHdegGr   r   r   $test_convert_node_labels_to_integers	   sd    
,z0TestRelabel.test_convert_node_labels_to_integersc                 C   s   t  }|g d tj|dd}dd | D }dd | D }t|t|ksZJ tj|ddd}|jd	 d d
ksJ |jd d dksJ |jd d dksJ |jd d dksJ d S )N)r   r   r   r   r   r   c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r   J   r   z8TestRelabel.test_convert_to_integers2.<locals>.<genexpr>c                 s   s   | ]\}}|V  qd S r   r   r   r   r   r   r   K   r   r#   r$   r   r   r    r   r!   r   r"   r   )r   r*   r%   r&   r+   r   r(   )r,   r-   r.   r0   r1   r   r   r   test_convert_to_integers2F   s    z%TestRelabel.test_convert_to_integers2c                 C   sF   t tj& t }tj|dd}W d    n1 s80    Y  d S )Nzincreasing ager   )pytestraisesr%   ZNetworkXErrorGraphr&   r,   r-   r.   r   r   r   test_convert_to_integers_raiseV   s    z*TestRelabel.test_convert_to_integers_raisec                 C   sJ   t  }|g d ddddd}t ||}t| g dsFJ d S Nr   aardvarkbearcatdogr   r   r   r   r:   r;   r<   r=   r%   r   r*   relabel_nodesr   r(   r,   r-   mappingr.   r   r   r   test_relabel_nodes_copy[   s
    z#TestRelabel.test_relabel_nodes_copyc                 C   sD   t  }|g d dd }t ||}t| g ds@J d S )Nr   c                 S   s   t | S r   )ord)r   r   r   r   rC   g   s    z8TestRelabel.test_relabel_nodes_function.<locals>.mapping)A   B   C   D   r@   rB   r   r   r   test_relabel_nodes_functionb   s
    z'TestRelabel.test_relabel_nodes_functionc                 C   s:   t  }|g d t |t}t|jg ds6J d S )N)r   r    r   r!   r    r!   r!   r"   )0123)r%   r   r*   rA   strr   r(   r7   r   r   r   test_relabel_nodes_classesm   s    z&TestRelabel.test_relabel_nodes_classesc                 C   sB   t g d}ddddd}t ||}t| g ds>J d S r9   )r%   r6   rA   r   r(   rB   r   r   r   test_relabel_nodes_graphs   s    z$TestRelabel.test_relabel_nodes_graphc                 C   sV   t  }|g d |ddg dddd}t ||}t|jg dksRJ d S )Nr    r!   r"   )r    r"   rN   abc)rW   rX   rY   )r%   ZOrderedGraphadd_nodes_fromr*   rA   r'   r(   rB   r   r   r   test_relabel_nodes_orderedgraphy   s    z+TestRelabel.test_relabel_nodes_orderedgraphc                 C   sF   t g d}ddddd}t j||dd}t| g d	sBJ d S )
Nr   r:   r;   r<   r=   r>   Fcopyr?   )r%   DiGraphrA   r   r(   rB   r   r   r   test_relabel_nodes_digraph   s    z&TestRelabel.test_relabel_nodes_digraphc                 C   sX   t ddg}ddd}t j||dd}t| ddgs>J t| ddgsTJ d S N)rW   rX   r:   r;   Fr\   )r:   r;   )r%   
MultiGraphrA   r   r(   r   r)   r,   r-   rC   r   r   r   test_relabel_nodes_multigraph   s
    
z)TestRelabel.test_relabel_nodes_multigraphc                 C   sX   t ddg}ddd}t j||dd}t| ddgs>J t| ddgsTJ d S r`   )r%   MultiDiGraphrA   r   r(   r   r)   rb   r   r   r   test_relabel_nodes_multidigraph   s
    
z+TestRelabel.test_relabel_nodes_multidigraphc                 C   sL   t  }|td ddi}t j||dd}t| ttdsHJ d S )N   r    Fr\   )r%   r6   rZ   rangerA   r   r(   r'   rB   r   r   r   #test_relabel_isolated_nodes_to_same   s
    z/TestRelabel.test_relabel_isolated_nodes_to_samec                 C   sf   t g d}ddi}t j||dd}t|j|js8J | }t j||dd t|j|jsbJ d S )Nr   r   r:   Tr\   F)r%   r6   rA   r   r(   r]   )r,   r-   rC   r.   ZGGr   r   r   test_relabel_nodes_missing   s    z&TestRelabel.test_relabel_nodes_missingc                 C   s   t  }t j|i dd}|j|jks(J t j|i dd}|j|jksHJ d|_t j|i dd}|j|jksnJ t j|i dd}|j|jksJ d S )NTr\   Ffirst)r%   r6   rA   graphnamer7   r   r   r   test_relabel_copy_name   s    z"TestRelabel.test_relabel_copy_namec                 C   s~   t d}t d}t j|dd tdD dd}t ||sBJ t d}t j|dd tdD dd}t ||szJ d S )Nrf   c                 S   s   i | ]}||d  qS r    r   r   ir   r   r   
<dictcomp>   r   z5TestRelabel.test_relabel_toposort.<locals>.<dictcomp>Fr\   c                 S   s   i | ]}||d  qS rn   r   ro   r   r   r   rq      r   )r%   Zcomplete_graphrA   rg   Zis_isomorphic)r,   ZK5r-   r   r   r   test_relabel_toposort   s    


z!TestRelabel.test_relabel_toposortc                 C   s   t g d}t j|dddddd}t| g ds<J t g d}t j|dddddd}t| g dsxJ t d	g}t j|d
didd}t| dgsJ d S )N)r    r    rM   rN   OneTwoThreerV   Fr\   )rt   rv   ru   rs   r    r   )r%   r^   rA   r   r(   rd   )r,   r-   r   r   r   test_relabel_selfloop   s    z!TestRelabel.test_relabel_selfloopc                 C   s  t jt jfD ]}dD ]}|g d}d|d d d d< d|d d d d< d	|d d
 d d< d|d d d d< |jddddd |jddddd ddddd}t j|||d}ddi|d d  v sJ ddi|d d  v sJ dd	i|d d  v sJ | r2t|d d dks<nds<J ddi|d d  v sZJ ddi|d d  v sxJ ddi|d d  v sJ | rt|d d dksndsJ qqd S )NTF)r   rf   )r    rf   )rf   r!   )rf   r"   rW   r   rf   valuerX   r    rY   r!   r   r"   xekeyrz   f	   r   r    r!   r"   r\      )r%   ra   rd   add_edgerA   valuesZis_directedlen)r,   MGccr-   rC   r.   r   r   r   +test_relabel_multidigraph_inout_merge_nodes   s&    
,z7TestRelabel.test_relabel_multidigraph_inout_merge_nodesc                 C   s   t g d}d|d d d d< d|d d d d< d|d d	 d d< d
d
d
d}t j||dd ddi|d d
  v sJ ddi|d d
  v sJ ddi|d d
  v sJ d S )N)rK   rL   r   r"   rK   rL   r   rW   r   r    rz   rX   r!   rY   r"   rf   rV   Fr\   r%   ra   rA   r   rb   r   r   r   %test_relabel_multigraph_merge_inplace   s    z1TestRelabel.test_relabel_multigraph_merge_inplacec                 C   s   t g d}d|d d d d< d|d d d d< d|d d	 d d< d
d
d
d}t j||dd ddi|d d
  v sJ ddi|d d
  v sJ ddi|d d
  v sJ d S )NrK   rL   r   rW   r   r    rz   rX   r!   rY   r"   rf   rV   Fr\   r%   rd   rA   r   rb   r   r   r   'test_relabel_multidigraph_merge_inplace   s    z3TestRelabel.test_relabel_multidigraph_merge_inplacec                 C   s  t g d}d|d d d d< d|d d d d< d|d d	 d d< d
|d d d d< |jddddd |jddddd ddddd}t j||dd}ddi|d d  v sJ ddi|d d  v sJ ddi|d d  v sJ t|d d dksJ dd
i|d d  v s,J ddi|d d  v sJJ ddi|d d  v shJ t|d d dksJ d S )Nry   rW   r   rf   rz   rX   r    rY   r!   r   r"   r{   r|   r}   r   r   r   Tr\   )r%   rd   r   rA   r   r   rB   r   r   r   $test_relabel_multidigraph_inout_copy   s"    z0TestRelabel.test_relabel_multidigraph_inout_copyc                 C   s   t g d}d|d d d d< d|d d d d< d|d d	 d d< d
d
d
d}t j||dd}ddi|d d
  v sJ ddi|d d
  v sJ ddi|d d
  v sJ d S Nr   rW   r   r    rz   rX   r!   rY   r"   rf   rV   Tr\   r   rB   r   r   r   "test_relabel_multigraph_merge_copy	  s    z.TestRelabel.test_relabel_multigraph_merge_copyc                 C   s   t g d}d|d d d d< d|d d d d< d|d d	 d d< d
d
d
d}t j||dd}ddi|d d
  v sJ ddi|d d
  v sJ ddi|d d
  v sJ d S r   r   rB   r   r   r   $test_relabel_multidigraph_merge_copy  s    z0TestRelabel.test_relabel_multidigraph_merge_copyc                 C   s
  t jt jfD ]}dD ]}t  }|jddddd |jdddd	d |jdd
ddd dddd}t j||dd ddi|d d  v sJ dd	i|d d  v sJ ddi|d d  v sJ d|d d v sJ d|d d v sJ d|d d v sJ qqd S )Nrx   r   r    IrW   r}   r!   ZIIrX   r"   rY   rf   rV   Fr\   rz   )r%   ra   rd   r   rA   r   )r,   r   r   r-   rC   r   r   r   &test_relabel_multigraph_nonnumeric_key  s    z2TestRelabel.test_relabel_multigraph_nonnumeric_keyc                 C   sd   t d}ddd}t j||dd}tt j  t j||dd}W d    n1 sV0    Y  d S )Nr"   r    r   rK   Tr\   F)r%   Z
path_graphrA   r4   r5   ZNetworkXUnfeasiblerB   r   r   r   test_relabel_circular/  s
    

z!TestRelabel.test_relabel_circularN)__name__
__module____qualname__r2   r3   r8   rD   rJ   rT   rU   r[   r_   rc   re   rh   ri   rm   rr   rw   r   r   r   r   r   r   r   r   r   r   r   r   r      s0   =	r   )	r4   Znetworkxr%   Znetworkx.generators.classicr   Znetworkx.utilsr   r   r   r   r   r   r   <module>   s   