a
    h8                     @   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 ]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   I/var/www/auris/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 d}t |t}t|jg ds*J d S )N   0123)r%   
path_graphrA   strr   r(   r7   r   r   r    test_relabel_nodes_callable_typem   s    
z,TestRelabel.test_relabel_nodes_callable_typenon_mcZ0123rL   c                 C   sD   t d}tt t || W d   n1 s60    Y  dS )zWIf `mapping` is neither a Callable or a Mapping, an exception
        should be raised.rK   N)r%   rQ   r4   r5   AttributeErrorrA   )r,   rT   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 r9   )r%   r6   rA   r   r(   rB   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sRJ d S )Nr    r!   r"   )r    r"   r!   r"   abc)rZ   r[   r\   )r%   r6   add_nodes_fromr*   rA   r'   r(   rB   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	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)rZ   r[   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 rc   )r%   MultiDiGraphrA   r   r(   r   r)   re   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 )NrK   r    Fr_   )r%   r6   r]   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 )NrK   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 rp   r   rq   r   r   r   rs      r   )r%   Zcomplete_graphrA   ri   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    )r    r!   rY   OneTwoThreerX   Fr_   )rv   rx   rw   ru   r    r   )r%   ra   rA   r   r(   rg   )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   rK   )r    rK   )rK   r!   )rK   r"   rZ   r   rK   valuer[   r    r\   r!   r   r"   xekeyr|   f	   r   r    r!   r"   r_      )r%   rd   rg   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)r   r    r   r!   r   r"   r   r   r   rZ   r   r    r|   r[   r!   r\   r"   rK   rX   Fr_   r%   rd   rA   r   re   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r   r   r   rZ   r   r    r|   r[   r!   r\   r"   rK   rX   Fr_   r%   rg   rA   r   re   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 )Nr{   rZ   r   rK   r|   r[   r    r\   r!   r   r"   r}   r~   r   r   r   r   Tr_   )r%   rg   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   rZ   r   r    r|   r[   r!   r\   r"   rK   rX   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 )Nrz   r   r    IrZ   r   r!   ZIIr[   r"   r\   rK   rX   Fr_   r|   )r%   rd   rg   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   r   Tr_   F)r%   rQ   rA   r4   r5   ZNetworkXUnfeasiblerB   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sXJ d S )
Nr"   rZ   r[   r\   r!   r    r   Tr_   c                    s   g | ]}  ||qS r   getrq   rC   r   r   
<listcomp>C  r   z\TestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_true.<locals>.<listcomp>)r%   rQ   r'   r(   rA   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sPJ d S )
Nr"   rZ   r[   r\   r   Fr_   c                    s   g | ]}  ||qS r   r   rq   r   r   r   r   K  r   z]TestRelabel.test_relabel_preserve_node_order_full_mapping_with_copy_false.<locals>.<listcomp>r%   rQ   r'   rA   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sNJ d S )	Nr"   rZ   r[   r    r   Tr_   c                    s   g | ]}  ||qS r   r   rq   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  s    

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sNJ d S )	Nr"   rZ   r[   r   Fr_   c                    s   g | ]}  ||qS r   r   rq   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  s    

zLTestRelabel.test_relabel_preserve_node_order_partial_mapping_with_copy_falseN)#__name__
__module____qualname__r2   r3   r8   rD   rJ   rS   r4   markZparametrizerV   rW   r^   rb   rf   rh   rj   rk   ro   rt   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s<   =
	r   )	r4   Znetworkxr%   Znetworkx.generators.classicr   Znetworkx.utilsr   r   r   r   r   r   r   <module>   s   