o
    ]Zh8                     @   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e	j
ddg df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d0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>S )?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   J/var/www/auris/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   Z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.   r/   r1   r2   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&   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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.   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   rD   g   s   z8TestRelabel.test_relabel_nodes_function.<locals>.mapping)A   B   C   D   rA   rC   r   r   r   test_relabel_nodes_functionb   s
   z'TestRelabel.test_relabel_nodes_functionc                 C   s.   t d}t |t}t|jg dsJ d S )N   0123)r&   
path_graphrB   strr   r)   r8   r   r   r    test_relabel_nodes_callable_typem   s   
z,TestRelabel.test_relabel_nodes_callable_typenon_mcZ0123rM   c                 C   sF   t d}tt t || W d   dS 1 sw   Y  dS )zWIf `mapping` is neither a Callable or a Mapping, an exception
        should be raised.rL   N)r&   rR   r5   r6   AttributeErrorrB   )r-   rU   r.   r   r   r   *test_relabel_nodes_non_mapping_or_callabler   s   
"z6TestRelabel.test_relabel_nodes_non_mapping_or_callablec                 C   sB   t g d}ddddd}t ||}t| g dsJ d S r:   )r&   r7   rB   r   r)   rC   r   r   r   test_relabel_nodes_graphz   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#   r"   r#   abc)r[   r\   r]   )r&   r7   add_nodes_fromr+   rB   r(   r)   rC   r   r   r   test_relabel_nodes_orderedgraph   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>   r?   Fcopyr@   )r&   DiGraphrB   r   r)   rC   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)r[   r\   r;   r<   Fr`   )r;   r<   )r&   
MultiGraphrB   r   r)   r   r*   r-   r.   rD   r   r   r   test_relabel_nodes_multigraph   
   
z)TestRelabel.test_relabel_nodes_multigraphc                 C   rd   re   )r&   MultiDiGraphrB   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 )NrL   r!   Fr`   )r&   r7   r^   rangerB   r   r)   r(   rC   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&   r7   rB   r   r)   ra   )r-   r.   rD   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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&   r7   rB   graphnamer8   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 ||s!J t d}t j|dd tdD dd}t ||s=J 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 rs   r   rt   r   r   r   rv      rw   )r&   Zcomplete_graphrB   rl   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s<J t d	g}t j|d
didd}t| dgsVJ d S )N)r!   r!   )r!   r"   rZ   OneTwoThreerY   Fr`   )rz   r|   r{   ry   r!   r   )r&   rb   rB   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#   r[   r   rL   valuer\   r!   r]   r"   r   r#   xekeyr   f	   r   r!   r"   r#   r`   )r&   rf   rj   add_edgerB   valuesZis_directedlen)r-   MGccr.   rD   r/   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)r   r!   r   r"   r   r#   r   r   r   r[   r   r!   r   r\   r"   r]   r#   rL   rY   Fr`   r&   rf   rB   r   rg   r   r   r   %test_relabel_multigraph_merge_inplace       z1TestRelabel.test_relabel_multigraph_merge_inplacec                 C   r   )Nr   r   r   r[   r   r!   r   r\   r"   r]   r#   rL   rY   Fr`   r&   rj   rB   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   r[   r   rL   r   r\   r!   r]   r"   r   r#   r   r   r   r   r   r   Tr`   )r&   rj   r   rB   r   r   rC   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   r[   r   r!   r   r\   r"   r]   r#   rL   rY   Tr`   r   rC   r   r   r   "test_relabel_multigraph_merge_copy      z.TestRelabel.test_relabel_multigraph_merge_copyc                 C   r   r   r   rC   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!   Ir[   r   r"   ZIIr\   r#   r]   rL   rY   Fr`   r   )r&   rf   rj   r   rB   r   )r-   r   r   r.   rD   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   r   Tr`   F)r&   rR   rB   r5   r6   ZNetworkXUnfeasiblerC   r   r   r   test_relabel_circular6  s   

"z!TestRelabel.test_relabel_circularc                    s\   t d}t| }dddd t j| dd}t| } fdd	|D |ks,J d S )
Nr#   r[   r\   r]   r"   r!   r   Tr`   c                       g | ]}  ||qS r   getrt   rD   r   r   
<listcomp>C      z\TestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_true.<locals>.<listcomp>)r&   rR   r(   r)   rB   r-   r.   Zoriginal_orderr/   Z	new_orderr   r   r   <test_relabel_preserve_node_order_full_mapping_with_copy_true=  s   
zHTestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_truec                    sT   t d}t|}dddd t j| dd}t|} fdd	|D |ks(J d S )
Nr#   r[   r\   r]   r   Fr`   c                    r   r   r   rt   r   r   r   r   K  r   z]TestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_false.<locals>.<listcomp>r&   rR   r(   rB   r   r   r   r   =test_relabel_preserve_node_order_full_mapping_with_copy_falseE  s   
zITestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_falsec                    sR   t d}t|}ddd t j| dd}t|} fdd|D |ks'J d S )	Nr#   r[   r\   r!   r   Tr`   c                    r   r   r   rt   r   r   r   r   S  r   z_TestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_true.<locals>.<listcomp>r   r   r   r   r   ?test_relabel_preserve_node_order_partial_mapping_with_copy_trueM     

zKTestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_truec                    sR   t d}t|}ddd t j| dd}t|} fdd|D |ks'J d S )	Nr#   r[   r\   r   Fr`   c                    r   r   r   rt   r   r   r   r   [  r   z`TestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_false.<locals>.<listcomp>r   r   r   r   r   @test_relabel_preserve_node_order_partial_mapping_with_copy_falseU  r   zLTestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_falseN)#__name__
__module____qualname__r3   r4   r9   rE   rK   rT   r5   markZparametrizerW   rX   r_   rc   rh   rk   rm   rn   rr   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s>    =
	r   )	r5   Znetworkxr&   Znetworkx.generators.classicr   Znetworkx.utilsr   r   r   r   r   r   r   <module>   s
    