o
    ˷e1                     @   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 ]!}t  }tj|d|d}t| g ks6J t| g ks@J qt  }|g d t|}dd | D }dd | D }t|t|kslJ t|d}d	d | D }d
d | D }t|t|ksJ t	| g dsJ tj|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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s"J |ddks,J tj|ddd}dd | D }dd | D }t|t|ksQJ |ddks[J |ddkseJ |ddksoJ |ddksyJ |jd d dksJ |jd d dksJ |jd d dks|jd d dksJ |jd d dks|jd d dksJ d S d S )Nd   )defaultsortedincreasing degreedecreasing degreeorderingABr   Cr   r   r   Dc                 s       | ]\}}|V  qd S N .0ndr   r   R/var/www/ideatree/venv/lib/python3.10/site-packages/networkx/tests/test_relabel.py	<genexpr>       zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>c                 s   r   r   r   r   r   r   r   r      r     c                 s   r   r   r   r   r   r   r   r      r   c                 s   r   r   r   r   r   r   r   r      r   )r    i  i  i  r	   c                 s   r   r   r   r   r   r   r   r   $   r   c                 s   r   r   r   r   r   r   r   r   %   r   r            r
   c                 s   r   r   r   r   r   r   r   r   -   r   c                 s   r   r   r   r   r   r   r   r   .   r   labelr   label_attributec                 s   r   r   r   r   r   r   r   r   8   r   c                 s   r   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   
,4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s-J tj|ddd}|jd	 d d
ks@J |jd d dksKJ |jd d dksVJ |jd d dksaJ d S )N)r   r   r   r   r   r   c                 s   r   r   r   r   r   r   r   r   J   r   z8TestRelabel.test_convert_to_integers2.<locals>.<genexpr>c                 s   r   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/   r0   r2   r3   r   r   r   test_convert_to_integers2F   s   z%TestRelabel.test_convert_to_integers2c                 C   sH   t tj t }tj|dd}W d    d S 1 sw   Y  d S )Nzincreasing ager   )pytestraisesr'   NetworkXErrorGraphr(   r.   r/   r0   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s#J d S Nr   aardvarkbearcatdogr   r   r   r   r=   r>   r?   r@   r'   r   r,   relabel_nodesr   r*   r.   r/   mappingr0   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   rF   g   s   z8TestRelabel.test_relabel_nodes_function.<locals>.mapping)A   B   C   D   rC   rE   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sJ d S )N)r   r!   r   r"   r!   r"   r"   r#   )0123)r'   r   r,   rD   strr   r*   r:   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 r<   )r'   r9   rD   r   r*   rE   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s)J d S )Nr!   r"   r#   )r!   r#   rQ   abc)rZ   r[   r\   )r'   OrderedGraphadd_nodes_fromr,   rD   r)   r*   rE   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	s!J d S )
Nr   r=   r>   r?   r@   rA   FcopyrB   )r'   DiGraphrD   r   r*   rE   r   r   r   test_relabel_nodes_digraph   s   z&TestRelabel.test_relabel_nodes_digraphc                 C   X   t ddg}ddd}t j||dd}t| ddgsJ t| ddgs*J d S N)rZ   r[   r=   r>   Fr`   )r=   r>   )r'   
MultiGraphrD   r   r*   r   r+   r.   r/   rF   r   r   r   test_relabel_nodes_multigraph   
   
z)TestRelabel.test_relabel_nodes_multigraphc                 C   rd   re   )r'   MultiDiGraphrD   r   r*   r   r+   rg   r   r   r   test_relabel_nodes_multidigraph   ri   z+TestRelabel.test_relabel_nodes_multidigraphc                 C   sL   t  }|td ddi}t j||dd}t| ttds$J d S )N   r!   Fr`   )r'   r9   r^   rangerD   r   r*   r)   rE   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sJ | }t j||dd t|j|js1J d S )Nr   r   r=   Tr`   F)r'   r9   rD   r   r*   ra   )r.   r/   rF   r0   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s$J d|_t j|i dd}|j|jks7J t j|i dd}|j|jksGJ d S )NTr`   Ffirst)r'   r9   rD   graphnamer:   r   r   r   test_relabel_copy_name   s   z"TestRelabel.test_relabel_copy_namec                 C   sv   t d}t d}t j|dd tdD dd}t || t d}t j|dd tdD dd}t || d S )Nrl   c                 S   s   i | ]}||d  qS r!   r   r   ir   r   r   
<dictcomp>       z5TestRelabel.test_relabel_toposort.<locals>.<dictcomp>Fr`   c                 S   s   i | ]}||d  qS ru   r   rv   r   r   r   rx      ry   )r'   complete_graphrD   rm   is_isomorphic)r.   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s<J t d	g}t j|d
didd}t| dgsVJ d S )N)r!   r!   rP   rQ   OneTwoThreerY   Fr`   )r   r   r   r~   r!   r   )r'   rb   rD   r   r*   rj   )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 siJ ddi|d d  v swJ dd	i|d d  v sJ | rt|d d dksJ 	 ddi|d d  v sJ ddi|d d  v sJ ddi|d d  v sJ | rt|d d dksJ 	 q
qd S )NTF)r   rl   )r!   rl   )rl   r"   )rl   r#   rZ   r   rl   valuer[   r!   r\   r"   r   r#   xekeyr   f	   r   r!   r"   r#   r`   )r'   rf   rj   add_edgerD   valuesis_directedlen)r.   MGccr/   rF   r0   r   r   r   +test_relabel_multidigraph_inout_merge_nodes   s,   ""z7TestRelabel.test_relabel_multidigraph_inout_merge_nodesc                 C      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 sAJ ddi|d d
  v sOJ ddi|d d
  v s]J d S )N)rN   rO   r   r#   rN   rO   r   rZ   r   r!   r   r[   r"   r\   r#   rl   rY   Fr`   r'   rf   rD   r   rg   r   r   r   %test_relabel_multigraph_merge_inplace       z1TestRelabel.test_relabel_multigraph_merge_inplacec                 C   r   )NrN   rO   r   rZ   r   r!   r   r[   r"   r\   r#   rl   rY   Fr`   r'   rj   rD   r   rg   r   r   r   'test_relabel_multidigraph_merge_inplace   r   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 s^J ddi|d d  v slJ ddi|d d  v szJ t|d d dksJ 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sJ d S )Nr   rZ   r   rl   r   r[   r!   r\   r"   r   r#   r   r   r   r   r   r   Tr`   )r'   rj   r   rD   r   r   rE   r   r   r   $test_relabel_multidigraph_inout_copy   s"   z0TestRelabel.test_relabel_multidigraph_inout_copyc                 C      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 sAJ ddi|d d
  v sOJ ddi|d d
  v s]J d S Nr   rZ   r   r!   r   r[   r"   r\   r#   rl   rY   Tr`   r   rE   r   r   r   "test_relabel_multigraph_merge_copy	      z.TestRelabel.test_relabel_multigraph_merge_copyc                 C   r   r   r   rE   r   r   r   $test_relabel_multidigraph_merge_copy  r   z0TestRelabel.test_relabel_multidigraph_merge_copyc                 C   s
  t jt jfD ]|}dD ]w}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 sGJ dd	i|d d  v sUJ ddi|d d  v scJ d|d d v smJ d|d d v swJ d|d d v sJ q
qd S )Nr   r   r!   IrZ   r   r"   IIr[   r#   r\   rl   rY   Fr`   r   )r'   rf   rj   r   rD   r   )r.   r   r   r/   rF   r   r   r   &test_relabel_multigraph_nonnumeric_key  s    z2TestRelabel.test_relabel_multigraph_nonnumeric_keyc                 C   sf   t d}ddd}t j||dd}tt j t j||dd}W d    d S 1 s,w   Y  d S )Nr#   r!   r   rN   Tr`   F)r'   
path_graphrD   r6   r7   NetworkXUnfeasiblerE   r   r   r   test_relabel_circular/  s   

"z!TestRelabel.test_relabel_circularN)__name__
__module____qualname__r4   r5   r;   rG   rM   rW   rX   r_   rc   rh   rk   rn   rp   rt   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s2    =	r   )	r6   networkxr'   networkx.generators.classicr   networkx.utilsr   r   r   r   r   r   r   <module>   s
    