B
    `/                 @   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)assert_nodes_equalassert_edges_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-S ).TestRelabelc             C   s  t  }t|d}t| g ks&tt| g ks:txJdD ]B}t  }tj|d|d}t| g ksntt| g ks@tq@W t  }|ddddg t|}dd	 | D }d
d	 | D }t	|t	|kstt|d}dd	 | D }dd	 | D }t	|t	|ks&tt
| ddddg tj|dd}dd	 | D }dd	 | D }t	|t	|kst|ddkst|ddkst|ddkst|ddksttj|dd}dd	 | D }dd	 | D }t	|t	|kst|ddks0t|ddksDt|ddksXt|ddkslttj|ddd}dd	 | D }dd	 | D }t	|t	|kst|ddkst|ddkst|ddkst|ddkst|jd d dkst|jd d d ks6t|jd d d!ksb|jd d d!ksbt|jd d d"ks|jd d d"kstd S )#Nd   )defaultsortedzincreasing degreezdecreasing degree)ordering)AB)r
   C)r   r   )r   Dc             s   s   | ]\}}|V  qd S )N ).0ndr   r   J/home/dcms/DCMS/lib/python3.7/site-packages/networkx/tests/test_relabel.py	<genexpr>   s    zCTestRelabel.test_convert_node_labels_to_integers.<locals>.<genexpr>c             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r      s    i  c             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r      s    c             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r      s    i  i  i  zincreasing degreec             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r   #   s    c             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r   $   s    r            zdecreasing degreec             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r   ,   s    c             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r   -   s    label)r	   label_attributec             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r   7   s    c             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r   8   s    r   r   r
   r   )r   nxconvert_node_labels_to_integerslistnodesAssertionErroredgesadd_edges_fromdegreer   r   )selfGHoptdegHdegGr   r   r   $test_convert_node_labels_to_integers   sb    

,z0TestRelabel.test_convert_node_labels_to_integersc             C   s   t  }|ddddg tj|dd}dd | D }d	d | D }t|t|ks^ttj|dd
d}|jd d
 dkst|jd d
 dkst|jd d
 dkst|jd d
 dkstd S )N)r   r   )r
   r   )r
   r   )r   r   r   )r	   c             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r   I   s    z8TestRelabel.test_convert_to_integers2.<locals>.<genexpr>c             s   s   | ]\}}|V  qd S )Nr   )r   r   r   r   r   r   r   J   s    r   )r	   r   r   r
   r   r   r   r   r   r   )r   r   r   r   r    r   r   r   )r!   r"   r#   r%   r&   r   r   r   test_convert_to_integers2E   s    z%TestRelabel.test_convert_to_integers2c          	   C   s2   t tj t }tj|dd}W d Q R X d S )Nzincreasing age)r	   )pytestraisesr   ZNetworkXErrorGraphr   )r!   r"   r#   r   r   r   test_convert_to_integers_raiseU   s    z*TestRelabel.test_convert_to_integers_raisec             C   sN   t  }|ddddg ddddd	}t ||}t| ddddg d S )
N)r
   r   )r
   r   )r   r   )r   r   aardvarkbearcatdog)r
   r   r   r   )r   r   r   relabel_nodesr   r   )r!   r"   mappingr#   r   r   r   test_relabel_nodes_copyZ   s
    z#TestRelabel.test_relabel_nodes_copyc             C   sH   t  }|ddddg dd }t ||}t| ddd	d
g d S )N)r
   r   )r
   r   )r   r   )r   r   c             S   s   t | S )N)ord)r   r   r   r   r2   f   s    z8TestRelabel.test_relabel_nodes_function.<locals>.mappingA   B   C   D   )r   r   r   r1   r   r   )r!   r"   r2   r#   r   r   r   test_relabel_nodes_functiona   s
    z'TestRelabel.test_relabel_nodes_functionc             C   sF   t ddddg}ddddd	}t ||}t| ddddg d S )
N)r
   r   )r
   r   )r   r   )r   r   r-   r.   r/   r0   )r
   r   r   r   )r   r+   r1   r   r   )r!   r"   r2   r#   r   r   r   test_relabel_nodes_graphl   s    z$TestRelabel.test_relabel_nodes_graphc             C   sZ   t  }|dddg |ddg dddd	}t ||}t|jdddgksVtd S )
Nr   r   r   )r   r   )r   r   abc)r   r   r   )r   ZOrderedGraphadd_nodes_fromr   r1   r   r   r   )r!   r"   r2   r#   r   r   r   test_relabel_nodes_orderedgraphr   s    z+TestRelabel.test_relabel_nodes_orderedgraphc             C   sJ   t ddddg}ddddd	}t j||d
d}t| ddddg d S )N)r
   r   )r
   r   )r   r   )r   r   r-   r.   r/   r0   )r
   r   r   r   F)copy)r   DiGraphr1   r   r   )r!   r"   r2   r#   r   r   r   test_relabel_nodes_digraphz   s    z&TestRelabel.test_relabel_nodes_digraphc             C   sP   t ddg}ddd}t j||dd}t| ddg t| ddg d S )N)r;   r<   r-   r.   F)r@   )r-   r.   )r   
MultiGraphr1   r   r   r   r   )r!   r"   r2   r   r   r   test_relabel_nodes_multigraph   s
    
z)TestRelabel.test_relabel_nodes_multigraphc             C   sP   t ddg}ddd}t j||dd}t| ddg t| ddg d S )N)r;   r<   r-   r.   F)r@   )r-   r.   )r   MultiDiGraphr1   r   r   r   r   )r!   r"   r2   r   r   r   test_relabel_nodes_multidigraph   s
    
z+TestRelabel.test_relabel_nodes_multidigraphc             C   sH   t  }|td ddi}t j||dd}t| ttd d S )N   r   F)r@   )r   r+   r>   ranger1   r   r   r   )r!   r"   r2   r#   r   r   r   #test_relabel_isolated_nodes_to_same   s
    z/TestRelabel.test_relabel_isolated_nodes_to_samec          	   C   sD   t t0 tddddg}ddi}tj||dd}W d Q R X d S )	N)r
   r   )r
   r   )r   r   )r   r   r   r-   F)r@   )r)   r*   KeyErrorr   r+   r1   )r!   r"   r2   r   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(tt j|i dd}|j|jksHtd|_t j|i dd}|j|jksntt j|i dd}|j|jkstd S )NT)r@   Ffirst)r   r+   r1   graphr   name)r!   r"   r#   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 )NrG   c             S   s   i | ]}|d  |qS )r   r   )r   ir   r   r   
<dictcomp>   s    z5TestRelabel.test_relabel_toposort.<locals>.<dictcomp>F)r@   c             S   s   i | ]}|d  |qS )r   r   )r   rP   r   r   r   rQ      s    )r   Zcomplete_graphr1   rH   Zis_isomorphic)r!   ZK5r"   r   r   r   test_relabel_toposort   s    


z!TestRelabel.test_relabel_toposortc             C   s   t dddg}t j|dddddd	}t| dddg t dddg}t j|dddddd	}t| dddg t dg}t j|d
didd	}t| dg d S )N)r   r   )r   r   )r   r   ZOneZTwoZThree)r   r   r   F)r@   r   r   )r   rA   r1   r   r   rE   )r!   r"   r   r   r   test_relabel_selfloop   s    z!TestRelabel.test_relabel_selfloopc             C   s  xt jt jfD ]}xdD ]}|ddddg}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  kstd	d
i|d d  kstd	di|d d  kst| r>t|d d dksHndsHtd	di|d d  ksftd	di|d d  kstd	di|d d  kst| rt|d d dksndstqW qW d S )N)TF)r   rG   )r   rG   )rG   r   )rG   r   r;   r   rG   valuer<   r   r=   r   r   r   xe)keyrT   f	   )r   r   r   r   )r@      )	r   rC   rE   add_edger1   valuesr   Zis_directedlen)r!   MGccr"   r2   r#   r   r   r   +test_relabel_multidigraph_inout_merge_nodes   s&    ,z7TestRelabel.test_relabel_multidigraph_inout_merge_nodesc             C   s   t ddddddg}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  kstddi|d d  kstdd
i|d d  kstd S )N)r   r   )r   r   )r   r   r;   r   r   rT   r<   r   r=   r   rG   )r   r   r   F)r@   )r   rC   r1   r\   r   )r!   r"   r2   r   r   r   %test_relabel_multigraph_merge_inplace   s    z1TestRelabel.test_relabel_multigraph_merge_inplacec             C   s   t dddg}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  kstddi|d d  kstdd
i|d d  kstd S )N)r   r   )r   r   )r   r   r;   r   r   rT   r<   r   r=   r   rG   )r   r   r   F)r@   )r   rE   r1   r\   r   )r!   r"   r2   r   r   r   'test_relabel_multidigraph_merge_inplace   s    z3TestRelabel.test_relabel_multidigraph_merge_inplacec             C   s  t ddddg}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  kstdd	i|d d  kstddi|d d  kstt|d d dkstddi|d d  ks0tddi|d d  ksNtddi|d d  ksltt|d d dkstd S )N)r   rG   )r   rG   )rG   r   )rG   r   r;   r   rG   rT   r<   r   r=   r   r   r   rU   rV   )rW   rT   rX   rY   )r   r   r   r   T)r@   )r   rE   r[   r1   r\   r   r]   )r!   r"   r2   r#   r   r   r   $test_relabel_multidigraph_inout_copy   s"    z0TestRelabel.test_relabel_multidigraph_inout_copyc             C   s   t dddg}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  kstddi|d d  kstdd
i|d d  kstd S )N)r   r   )r   r   )r   r   r;   r   r   rT   r<   r   r=   r   rG   )r   r   r   T)r@   )r   rC   r1   r\   r   )r!   r"   r2   r#   r   r   r   "test_relabel_multigraph_merge_copy   s    z.TestRelabel.test_relabel_multigraph_merge_copyc             C   s   t dddg}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  kstddi|d d  kstdd
i|d d  kstd S )N)r   r   )r   r   )r   r   r;   r   r   rT   r<   r   r=   r   rG   )r   r   r   T)r@   )r   rE   r1   r\   r   )r!   r"   r2   r#   r   r   r   $test_relabel_multidigraph_merge_copy  s    z0TestRelabel.test_relabel_multidigraph_merge_copyc             C   s  xt jt jfD ]}xd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  kstdd	i|d d  kstddi|d d  kstd|d d kstd|d d kstd|d d kstqW qW d S )N)TFr   r   Ir;   )rW   rT   r   ZIIr<   r   r=   rG   )r   r   r   F)r@   rT   )r   rC   rE   r[   r1   r\   r   )r!   r^   r_   r"   r2   r   r   r   &test_relabel_multigraph_nonnumeric_key  s    
z2TestRelabel.test_relabel_multigraph_nonnumeric_keyN)__name__
__module____qualname__r'   r(   r,   r3   r9   r:   r?   rB   rD   rF   rI   rK   rO   rR   rS   r`   ra   rb   rc   rd   re   rg   r   r   r   r   r      s,   =	r   )	r)   Znetworkxr   Znetworkx.generators.classicr   Znetworkx.testingr   r   r   r   r   r   r   <module>   s   