o
    ˷e-?                     @   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   )first_label   
         )nx
null_graphnullcnlti
path_graphP1P3P10complete_graphK1K3K4K5K10GraphG)cls r   ^/var/www/ideatree/venv/lib/python3.10/site-packages/networkx/classes/tests/historical_tests.pysetup_class
   s   
zHistoricalTests.setup_classc                 C   s4   | j dd}|jdksJ |   }|jdksJ d S )Ntest)name )r   r!   selfr   Hr   r   r   	test_name   s   zHistoricalTests.test_namec                 C   s<   |   }|d |dsJ |d |drJ d S )NA)r   add_nodehas_noderemove_noder$   r   r   r   r   test_add_remove_node   s
   

z$HistoricalTests.test_add_remove_nodec                 C   s.   |   }|dgrJ |ddirJ d S Nr'   r   )r   r)   r+   r   r   r   test_nonhashable_node&   s   z%HistoricalTests.test_nonhashable_nodec                 C   sx   |   }|td |dsJ |g d |g d t| tdg dks.J t|tdg dks:J d S )NABCDEFGHIJKLL)r%   IJKr0   )r      r   r
   key)r   r4   r   r
   r'   BCDEFr   )r   add_nodes_fromlistr)   remove_nodes_fromsortednodesstrr+   r   r   r   test_add_nodes_from/   s   z#HistoricalTests.test_add_nodes_fromc                 C   s>   |   }|d d|v sJ g |vsJ ddi|vsJ d S r-   )r   r(   r+   r   r   r   test_containsE   s
   
zHistoricalTests.test_containsc                 C   sZ   |   }|d |dsJ |d ttj|jd |d t|g ks+J d S )Nmj)	r   r(   r)   pytestraisesr   NetworkXErrorr*   r=   r+   r   r   r   test_add_removeL   s   


zHistoricalTests.test_add_removec                 C   sj   |   }|td || j t| tdg dksJ || j t| tdg dks3J d S )NABCDr5   )r   r4   r   r'   r7   r8   r9   r'   r7   r8   r9   )r   r<   r=   r   r?   r@   rA   r>   r+   r   r   r   test_nbunch_is_listV   s    z#HistoricalTests.test_nbunch_is_listc                 C   s,   |   }td}|| |dsJ d S )Nr/   r0   )r   setr<   r)   r$   r   nbunchr   r   r   test_nbunch_is_set^   s   
z"HistoricalTests.test_nbunch_is_setc                 C   sR   |   }td}|| ddddd}|| t| tds'J g dd S )	Nr/   foor4   Tspam)r1   r2   r3   r0   r5   r'   r7   r8   r9   r:   r;   r   r%   )r   rM   r<   r>   r?   r@   rA   rN   r   r   r   test_nbunch_dictd   s   

 z HistoricalTests.test_nbunch_dictc                 C   sz   |   }|g d | j }|| t| tdg dks#J | j }|| t| tdg dks;J d S NrS   r5   r   r4   r   r'   r7   r8   r9   r:   r;   r   r%   )r   r<   r   r@   r?   rA   r>   )r$   r   n_iterr   r   r   test_nbunch_iteratorm   s   



 z$HistoricalTests.test_nbunch_iteratorc                 C   sF   |   }|g d | j}|| t| tds!J g dd S rU   )r   r<   r   r?   r@   rA   rN   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 J |ddr(J |jd s/J | r<|ddr;J n|ddsDJ |dd |dd |dd | rc|ddsbJ n|ddrkJ |ddrsJ d S )Nr'   r7   r8   r'   r7   )r   rF   rG   	TypeErroradd_edgehas_edgeis_directedremove_edger+   r   r   r   test_add_edge   s"   zHistoricalTests.test_add_edgec                 C   sr   |   }|dd |ddsJ |dd |dd |ds%J |d |dd |ds7J d S )Nr'   XZ)r   r\   r]   r_   r)   r*   r+   r   r   r   test_self_loop   s   
zHistoricalTests.test_self_loopc                 C   s   |   }|dg |ddsJ | r|ddrJ n|dds'J |ddg |dds6J |dds>J | rL|ddrJJ d S |ddsTJ d S )Nr7   r8   r7   r8   )r9   r;   r7   r9   r9   r;   )r   add_edges_fromr]   r^   r+   r   r   r   test_add_edges_from   s   z#HistoricalTests.test_add_edges_fromc                 C   sz   |   }|tdtdtdg |jd sJ |jd s J |jd s'J | r4|jd r2J d S |jd s;J d S )NIJKKJK)r1   r2   )r3   r3   )r2   r3   )r3   r2   )r   rf   tupler=   r]   r^   r+   r   r   r   test_add_edges_from2   s   z$HistoricalTests.test_add_edges_from2c                 C   sD   |   }|ttdtd |ddsJ |ddr J d S )NACDCDEr9   r:   r8   )r   rf   zipr=   r]   r+   r   r   r   test_add_edges_from3   s   z$HistoricalTests.test_add_edges_from3c                 C   s<  |   }|g d |ttdtd |ddsJ |dds'J |d |ddr4J tt	|j
d |dd |ddsJJ |
dd |ddrXJ |tdtd	td
tdg |ddrqJ |ddryJ |tdtd
tdg |ddrJ |td |dd d S )NrV   MNOPNOPMOPMNHIDFri   rj   r%   r1   r2   r3   rh   ZEFHIMNO)r   r<   rf   ro   r=   r]   r*   rF   rG   r[   r_   r\   remove_edges_fromrk   r>   rM   r+   r   r   r   test_remove_edge   s&   
"z HistoricalTests.test_remove_edgec                 C   s6  |   }|g d ttj|jd t|dg ksJ t|g g ks*J | r3g d}ng d}t	t|ddg|sEJ t	|ddh|sQJ |   }|
d t	|||sdJ d	d
d}t	|||ssJ t	t|dddgsJ tt|g dsJ t	t| g dsJ d S )NrZ   r'   r8   re   )r8   r7   )r8   r9      rb   )rZ   r}   re   rZ   r}   rd   re   r'   r7   ABthing1thing2rZ   r}   rK   )r   rf   rF   rG   r   rH   edgesr=   r^   r   r<   r   r?   )r$   r   elistG1ndictr   r   r   test_edges_nbunch   s*   



z!HistoricalTests.test_edges_nbunchc                 C   s   |   }|g d |ddksJ t|dgdgks!J tdd |ddgD ddgks5J td	d | D g d
ksFJ d S )Nr|   r'   r4   r'   r4   c                 s       | ]\}}|V  qd S Nr   .0ndr   r   r   	<genexpr>!      z.HistoricalTests.test_degree.<locals>.<genexpr>r7   r   c                 s   r   r   r   r   r   r   r   r   "  r   )r4   r4   r   r   )r   rf   degreer=   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J d S )N)r      r   r4   c                 s   r   r   r   r   r   r   r   r   '  r   z/HistoricalTests.test_degree2.<locals>.<genexpr>r   r   r4   )r   rf   r?   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sJ tdd ||D g dks.J td	d ||D g d
ks@J t|g g ksKJ t|g i ksVJ d S )Nr   r   c                 s   r   r   r   r   r   r   r   r   -  r   z4HistoricalTests.test_degree_graph.<locals>.<genexpr>r'   r7   c                 s   r   r   r   r   r   r   r   r   /  r   )r   r4   r4   c                 s   r   r   r   r   r   r   r   r   1  r   )r   r   r4   )r   r   dictr   r?   r=   )r$   r   P5r   r   r   test_degree_graph)  s   

$$$z!HistoricalTests.test_degree_graphc                 C   s4   t  }t| g ksJ t| i ksJ d S r   )r   r   r=   r   r   )r$   r   r   r   r   	test_null5  s   zHistoricalTests.test_nullc                 C   sr   |   }|g d | dksJ | dksJ | dks#J |dddks-J |dddks7J d S )	Nr|   r
   r   r'   r7   r   r9   r   )r   rf   ordersizenumber_of_edgesr+   r   r   r   test_order_size:  s   zHistoricalTests.test_order_sizec                 C   s@   |   }| }|j|jksJ |j|jksJ ||usJ d S r   )r   copyadjr!   r#   r   r   r   	test_copyC  s
   zHistoricalTests.test_copyc                 C   sX   |   }|g d |g d}tt|g dsJ tt| ddgs*J d S )Nr|   )r'   r7   r9   rZ   re   )r   rf   subgraphr   r=   r   r   )r$   r   SGr   r   r   test_subgraphJ  s
   zHistoricalTests.test_subgraphc                 C   s   |   }| sT|g d | }||usJ | sJ |j|jks'J |j|jks/J t|tdg dks>J |	dd |
ddsLJ |
ddrVJ d S d S )Nr|   r   )rZ   r}   )r7   r'   rd   re   r'   r7   )r   r^   rf   to_directedr!   r   r?   	out_edgesr=   r_   r]   )r$   r   DGr   r   r   test_to_directedQ  s    z HistoricalTests.test_to_directedc                 C   s   |   }| ri|g d | }||usJ | rJ | s%J |j|jks-J |j|jks5J t|tdg dksDJ t|ddgg dksSJ |	dd |
ddraJ |
ddrkJ d S d S )Nr|   r   r   r'   r7   )r   r^   rf   to_undirectedr!   r   r?   r   r=   r_   r]   )r$   r   UGr   r   r   test_to_undirectedi  s$   z"HistoricalTests.test_to_undirectedc                 C   s   |   }|g d |d t|d ddgksJ t|dddgks)J t|dddgks6J t|dg ksAJ ttj|jd d S )Nr|   GJKr'   r7   r8   r   rE   )	r   rf   r<   r?   	neighborsrF   rG   r   rH   r+   r   r   r   test_neighbors  s   
zHistoricalTests.test_neighborsc                 C   s   |   }|g d |d t| g dksJ t| g ds'J tdd | D g dks8J t| tdg dksFJ t|	d	d
dgksSJ t
tj|j	d |  t|dksiJ t|dksrJ d S )Nr|   r   )r'   r7   r8   r9   r   r2   r3   c                 s   r   r   r   )r   kvr   r   r   r     r   z1HistoricalTests.test_iterators.<locals>.<genexpr>)r   r   r   r4   r4   r   r   r5   )r   )r7   r   )r8   r   )r9   r4   )r   r   )r2   r   )r3   r   r'   r7   r8   ra   r   )r   rf   r<   r?   r@   r   r   r   rA   r   rF   rG   r   rH   clearnumber_of_nodesr   r+   r   r   r   test_iterators  s   
"	zHistoricalTests.test_iteratorsc                 C   s.   t  }t  }|g }t ||sJ d S r   )r   r   r   is_isomorphic)r$   	nullgraphr   r%   r   r   r   test_null_subgraph  s   
z"HistoricalTests.test_null_subgraphc                 C   sX   t  }t d}t d}|g }t ||sJ |g d}t ||s*J d S )Nr   r	   )r   r4   r   r
   r   )r   r   empty_graphr   r   )r$   r   E5E10r%   r   r   r   test_empty_subgraph  s   


z#HistoricalTests.test_empty_subgraphc                 C   s@   t d}t d}t d}|g d}t ||sJ d S )Nr   r   r   )r   r4   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 J |dh}t ||s.J |t|}t ||s=J ||}t ||sJJ |dg}t ||sXJ d S )Nr   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 )Nr   )r   rF   rG   r   rH   r*   r>   r   r   r   r   r   test_node_tuple_issue  s   z%HistoricalTests.test_node_tuple_issueN)'__name__
__module____qualname__classmethodr   r&   r,   r.   rB   rC   rI   rL   rP   rT   rX   rY   r`   rc   rg   rl   rp   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	   sJ    
	
	"
	

r   )
__doc__rF   networkxr   r   r   networkx.utilsr   r   r   r   r   r   r   <module>   s    