U
    ?h-?                     @   sB   d Z 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 )zOriginal NetworkX graph tests    N)convert_node_labels_to_integers)edges_equalnodes_equalc                   @   s(  e Zd Ze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d1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dAdB Z$dCdD Z%dEdF Z&dGS )HHistoricalTestsc                 C   s   t  | _tt ddd| _tt ddd| _tt ddd| _tt ddd| _	tt ddd| _
tt ddd| _tt ddd| _tt ddd| _t j| _d S )N   )Zfirst_label   
         )nx
null_graphnullcnlti
path_graphZP1P3ZP10complete_graphK1K3ZK4K5ZK10ZGraphG)cls r   Y/var/www/html/venv/lib/python3.8/site-packages/networkx/classes/tests/historical_tests.pysetup_class
   s    
zHistoricalTests.setup_classc                 C   s4   | j dd}|jdkst|   }|jdks0td S )Ntest)name )r   r   AssertionErrorselfr   Hr   r   r   	test_name   s    zHistoricalTests.test_namec                 C   s<   |   }|d |ds t|d |dr8td S )NA)r   add_nodehas_noder   remove_noder   r   r   r   r   test_add_remove_node   s
    

z$HistoricalTests.test_add_remove_nodec                 C   s.   |   }|dgrt|ddir*td S Nr"   r   )r   r$   r   r&   r   r   r   test_nonhashable_node&   s    z%HistoricalTests.test_nonhashable_nodec                 C   s   |   }|td |ds$t|dddddg |ddd	d
g t| tdddd	d
dddddddgksxtt|tdddd	d
dddddddgkstd S )NABCDEFGHIJKLLr    IJKr      r   r	   keyr"   BCDEFr   )	r   add_nodes_fromlistr$   r   remove_nodes_fromsortednodesstrr&   r   r   r   test_add_nodes_from/   s&    
z#HistoricalTests.test_add_nodes_fromc                 C   s>   |   }|d d|kstg |ks*tddi|ks:td S r(   )r   r#   r   r&   r   r   r   test_containsE   s
    
zHistoricalTests.test_containsc                 C   sZ   |   }|d |ds t|d ttj|jd |d t	|g ksVtd S )Nmj)
r   r#   r$   r   pytestraisesr   NetworkXErrorr%   r8   r&   r   r   r   test_add_removeL   s    


zHistoricalTests.test_add_removec                 C   sx   |   }|td || j t| tdddddddd	gksHt|| j t| tddddd	gksttd S )
NZABCDr0   r   r/   r   r"   r2   r3   r4   )	r   r7   r8   r   r:   r;   r<   r   r9   r&   r   r   r   test_nbunch_is_listV   s    &z#HistoricalTests.test_nbunch_is_listc                 C   s,   |   }td}|| |ds(td S )Nr*   r+   )r   setr7   r$   r   r   r   Znbunchr   r   r   test_nbunch_is_set^   s    
z"HistoricalTests.test_nbunch_is_setc              	   C   s^   |   }td}|| ddddd}|| t| tdsZtdd	d
dddddgd S )Nr*   Zfoor/   TZspam)r,   r-   r.   r+   r0   r"   r2   r3   r4   r5   r6   r   r    )r   rF   r7   r9   r:   r;   r<   r   rG   r   r   r   test_nbunch_dictd   s    

z HistoricalTests.test_nbunch_dictc                 C   s   |   }|ddddddddg | j }|| t| td	d
ddddddddddgksdt| j }|| t| td	ddddddddgkstd S Nr"   r2   r3   r4   r5   r6   r   r    r0   r   r/   r   )r   r7   r   r;   r:   r<   r   r9   )r   r   Zn_iterr   r   r   test_nbunch_iteratorm   s(    




z$HistoricalTests.test_nbunch_iteratorc                 C   sd   |   }|ddddddddg | j}|| t| td	s`td
ddddddddddgd S rJ   )r   r7   r   r:   r;   r<   r   rG   r   r   r   test_nbunch_graph   s"    
z!HistoricalTests.test_nbunch_graphc                 C   s   |   }tt|jd |dd |dd |dds@t|ddrPt|jd s^t| rx|ddrtn|ddst|dd |dd |dd | r|ddstn|ddrt|ddrtd S )Nr"   r2   r3   r"   r2   )	r   rA   rB   	TypeErroradd_edgehas_edger   is_directedremove_edger&   r   r   r   test_add_edge   s"    zHistoricalTests.test_add_edgec                 C   sr   |   }|dd |dds$t|dd |dd |dsJt|d |dd |dsntd S )Nr"   XZ)r   rO   rP   r   rR   r$   r%   r&   r   r   r   test_self_loop   s    
zHistoricalTests.test_self_loopc                 C   s   |   }|dg |dds$t| r>|ddrNtn|ddsNt|ddg |ddslt|dds|t| r|ddrtn|ddstd S )Nr2   r3   r2   r3   )r4   r6   r2   r4   r4   r6   )r   add_edges_fromrP   r   rQ   r&   r   r   r   test_add_edges_from   s    z#HistoricalTests.test_add_edges_fromc                 C   sx   |   }|tdtdtdg |jd s2t|jd s@t|jd sNt| rf|jd rttn|jd sttd S )NIJKKJK)r,   r-   )r.   r.   )r-   r.   )r.   r-   )r   rY   tupler8   rP   r   rQ   r&   r   r   r   test_add_edges_from2   s    z$HistoricalTests.test_add_edges_from2c                 C   sD   |   }|ttdtd |dds0t|ddr@td S )NZACDZCDEr4   r5   r3   )r   rY   zipr8   rP   r   r&   r   r   r   test_add_edges_from3   s    z$HistoricalTests.test_add_edges_from3c                 C   sR  |   }|ddddddddd	d
dg |ttdtd |ddsPt|dds`t|d |ddrztt	t
|jd |dd |ddst|dd |ddrt|tdtdtdtdg |ddrt|ddrt|tdtdtdg |ddr4t|td |dd d S )Nr   r/   r   r"   r2   r3   r4   r5   r6   r   r    ZMNOPZNOPMOPMNZHIZDFr\   r]   r,   r-   r.   r[   ZZEFHIMNO)r   r7   rY   r`   r8   rP   r   r%   rA   rB   rN   rR   rO   Zremove_edges_fromr^   r9   rF   r&   r   r   r   test_remove_edge   s&     
"z HistoricalTests.test_remove_edgec                 C   sR  |   }|dddddg ttj|jd t|dg ksDtt|g g ksZt|	 rndddg}nddddg}t
t|d	d
g|stt
|d	d
h|st|   }|d t
|||stddd}t
|||stt
t|d	ddgsttt|d	d
ddgs,tt
t| dddddgsNtd S )NrM   r"   r3   rX   r3   r2   r3   r4      rU   rW   r"   r2   ABZthing1Zthing2r3   r4   )r   rY   rA   rB   r   rC   edgesr8   r   rQ   r   r7   r   r:   )r   r   ZelistZG1Zndictr   r   r   test_edges_nbunch   s*    


z!HistoricalTests.test_edges_nbunchc                 C   s   |   }|dddddg |ddks.tt|dgdgksHttd	d
 |ddgD ddgkspttdd
 | D ddddgkstd S )NrM   rg   rX   rh   ri   r"   r/   r"   r/   c                 s   s   | ]\}}|V  qd S Nr   .0ndr   r   r   	<genexpr>!  s     z.HistoricalTests.test_degree.<locals>.<genexpr>r2   r   c                 s   s   | ]\}}|V  qd S ro   r   rp   r   r   r   rt   "  s     )r   rY   degreer   r8   r:   r&   r   r   r   test_degree  s    (zHistoricalTests.test_degreec                 C   sB   |   }|ddg tdd |ddgD ddgks>td S )N)r      r   r/   c                 s   s   | ]\}}|V  qd S ro   r   rp   r   r   r   rt   '  s     z/HistoricalTests.test_degree2.<locals>.<genexpr>r   rw   r/   )r   rY   r:   ru   r   r   r    r   r   r   test_degree2$  s    zHistoricalTests.test_degree2c                 C   s   t d}t d}tdd |ddgD i ks8ttdd ||D dd	d	gks^ttd
d ||D ddd	gkstt|g g kstt|g i kstd S )Nr   r
   c                 s   s   | ]\}}|V  qd S ro   r   rp   r   r   r   rt   -  s     z4HistoricalTests.test_degree_graph.<locals>.<genexpr>r"   r2   c                 s   s   | ]\}}|V  qd S ro   r   rp   r   r   r   rt   /  s     r   r/   c                 s   s   | ]\}}|V  qd S ro   r   rp   r   r   r   rt   1  s     )r   r   dictru   r   r:   r8   )r   r   ZP5r   r   r   test_degree_graph)  s    

$&&z!HistoricalTests.test_degree_graphc                 C   s4   t  }t| g kstt| i ks0td S ro   )r   r   r8   ru   r   r{   )r   r   r   r   r   	test_null5  s    zHistoricalTests.test_nullc                 C   sx   |   }|dddddg | dks,t| dks<t| dksLt|dd	d
ks`t|dddksttd S )NrM   rg   rX   rh   ri   r	   r
   r"   r2   r   r4   r   )r   rY   orderr   sizenumber_of_edgesr&   r   r   r   test_order_size:  s    zHistoricalTests.test_order_sizec                 C   s@   |   }| }|j|jks t|j|jks0t||k	s<td S ro   )r   copyadjr   r   r   r   r   r   	test_copyC  s
    zHistoricalTests.test_copyc                 C   sb   |   }|dddddg |dddg}tt|dddgsDttt| ddgs^td S )	NrM   rg   rX   rh   ri   r"   r2   r4   )r   rY   subgraphr   r8   r   r   rl   )r   r   ZSGr   r   r   test_subgraphJ  s
    zHistoricalTests.test_subgraphc                 C   s   |   }| s|dddddg | }||k	s8t| sDt|j|jksTt|j|jksdtt|t	ddddddgkst|
d	d
 |d
d	st|d	d
rtd S )NrM   rg   rX   rh   ri   rk   )r2   r"   rW   r"   r2   )r   rQ   rY   Zto_directedr   r   r   r:   Z	out_edgesr8   rR   rP   )r   r   ZDGr   r   r   test_to_directedQ  s(    
z HistoricalTests.test_to_directedc                 C   s   |   }| r|dddddg | }||k	s8t| rDt| sPt|j|jks`t|j|jksptt|t	dddddgkstt|dd	gddddgkst|
dd	 |d	drt|dd	rtd S )
NrM   rg   rX   rh   ri   rk   rW   r"   r2   )r   rQ   rY   Zto_undirectedr   r   r   r:   rl   r8   rR   rP   )r   r   ZUGr   r   r   test_to_undirectedi  s4    

z"HistoricalTests.test_to_undirectedc                 C   s   |   }|dddddg |d t|d dd	gks>tt|ddd	gksXtt|ddd	gksrtt|d
g kstttj	|jd d S )NrM   rg   rX   rh   ri   GJKr"   r2   r3   r   r@   )
r   rY   r7   r:   r   	neighborsrA   rB   r   rC   r&   r   r   r   test_neighbors  s    
zHistoricalTests.test_neighborsc                 C   s  |   }|dddddg |d t| ddd	d
dddgksHtt| dddddgsdttdd | D dddddddgkstt| t	ddddddddgkstt|
ddd	gkstttj|j
d |  t|dkstt|dkstd S )NrM   rg   rX   rh   ri   r   r"   r2   r3   r4   r   r-   r.   c                 s   s   | ]\}}|V  qd S ro   r   )rq   kvr   r   r   rt     s     z1HistoricalTests.test_iterators.<locals>.<genexpr>r   r/   r   r0   rn   )r2   r   )r3   r   )r4   r/   )r   r   )r-   r   )r.   r   rT   )r   rY   r7   r:   r;   r   r   rl   ru   r<   r   rA   rB   r   rC   clearZnumber_of_nodesr   r&   r   r   r   test_iterators  s.    
" ,
	zHistoricalTests.test_iteratorsc                 C   s.   t  }t  }|g }t ||s*td S ro   )r   r   r   is_isomorphicr   )r   	nullgraphr   r    r   r   r   test_null_subgraph  s    
z"HistoricalTests.test_null_subgraphc                 C   s^   t  }t d}t d}|g }t ||s6t|dddddg}t ||sZtd S )Nr
   r   r   r/   r   r	   )r   r   Zempty_graphr   r   r   )r   r   ZE5ZE10r    r   r   r   test_empty_subgraph  s    


z#HistoricalTests.test_empty_subgraphc                 C   sB   t d}t d}t d}|dddg}t ||s>td S )Nr   r   r
   r/   )r   r   r   r   r   )r   r   r   r   r    r   r   r   test_complete_subgraph  s
    


z&HistoricalTests.test_complete_subgraphc                 C   s   t  }t d}t d}t d}|d}t ||s@t|dh}t ||s\t|t|}t ||szt||}t ||st|dg}t ||std S )Nr   r   r
   	   )r   r   r   r   r   r   iter)r   r   r   r   r   r    r   r   r   test_subgraph_nbunch  s    




z$HistoricalTests.test_subgraph_nbunchc                 C   s<   |   }ttj|jd |dg ttj|jd d S )Nrx   )r   rA   rB   r   rC   r%   r9   r   ry   r   r   r   test_node_tuple_issue  s    z%HistoricalTests.test_node_tuple_issueN)'__name__
__module____qualname__classmethodr   r!   r'   r)   r=   r>   rD   rE   rH   rI   rK   rL   rS   rV   rZ   r_   ra   rf   rm   rv   rz   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	   sH   
	
	"
	

r   )
__doc__rA   Znetworkxr   r   r   Znetworkx.utilsr   r   r   r   r   r   r   <module>   s
   