U
    ?hŠ(  ã                   @   sV   d dl Z d dlZd dlmZ d dlmZ G dd„ dƒZG dd„ dƒZG dd	„ d	ƒZ	dS )
é    N)Úline)Úedges_equalc                   @   sd   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S )ÚTestGeneratorLinec                 C   s.   t  d¡}t  |¡}t  |t  d¡¡s*t‚d S ©Né   )ÚnxÚ
star_graphÚ
line_graphÚis_isomorphicÚcomplete_graphÚAssertionError©ÚselfÚGÚL© r   úU/var/www/html/venv/lib/python3.8/site-packages/networkx/generators/tests/test_line.pyÚ	test_star	   s    

zTestGeneratorLine.test_starc                 C   s.   t  d¡}t  |¡}t  |t  d¡¡s*t‚d S )Nr   é   )r   Ú
path_graphr	   r
   r   r   r   r   r   Ú	test_path   s    

zTestGeneratorLine.test_pathc                 C   s(   t  d¡}t  |¡}t  ||¡s$t‚d S r   )r   Úcycle_graphr	   r
   r   r   r   r   r   Ú
test_cycle   s    

zTestGeneratorLine.test_cyclec                 C   s4   t  dddg¡}t  |¡}|ji i i dœks0t‚d S )N©r   é   ©r   é   ©r   é   )r   r   r   )r   ÚDiGraphr	   Zadjr   r   r   r   r   Útest_digraph1   s    
zTestGeneratorLine.test_digraph1c                 C   sT   t  ddddddg¡}t  |¡}t| ¡ dddd	d
ddddddddddgƒsPt‚d S )Nr   )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   r   )r"   r%   )r"   r#   )r"   r&   )r"   r$   )r%   r&   )r%   r#   )r%   r$   )r&   r#   )r&   r$   )r#   r$   ©r   Ú
MultiGraphr	   r   Úedgesr   r   r   r   r   Útest_multigraph1   s*    
ñþz"TestGeneratorLine.test_multigraph1c                 C   s0   t  ddg¡}t  |¡}t| ¡ dgƒs,t‚d S )N©r   r   ©r   r   )©r   r   r   )r   r   r   r'   r   r   r   r   Útest_multigraph27   s    
z"TestGeneratorLine.test_multigraph2c                 C   s2   t  ddg¡}t  |¡}t| ¡ ddgƒs.t‚d S )Nr+   r,   )r-   ©r   r   r   )r/   r-   ©r   ZMultiDiGraphr	   r   r)   r   r   r   r   r   Útest_multidigraph1<   s    
z$TestGeneratorLine.test_multidigraph1c                 C   s8   t  ddddg¡}t  |¡}t| ¡ dddgƒs4t‚d S )Nr   r+   )r"   r-   )r%   r-   )r&   r-   r0   r   r   r   r   Útest_multidigraph2A   s    
þz$TestGeneratorLine.test_multidigraph2c                 C   s4   t  dddg¡}t  |¡}t| ¡ ddgƒs0t‚d S )Nr   r+   ©r   r   ©r   r+   ©r+   r3   )r   r   r	   r   r)   r   r   r   r   r   Útest_digraph2I   s    
zTestGeneratorLine.test_digraph2c                 C   s<   t  dddg¡}t j|t  ¡ d}t| ¡ ddgƒs8t‚d S ©Nr   r+   r3   )Zcreate_usingr4   r5   )r   r   r	   ÚGraphr   r)   r   r   r   r   r   Útest_create1N   s    zTestGeneratorLine.test_create1c                 C   s<   t  dddg¡}t j|t  ¡ d}t| ¡ ddgƒs8t‚d S r7   )r   r8   r	   r   r   r)   r   r   r   r   r   Útest_create2S   s    zTestGeneratorLine.test_create2N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r*   r.   r1   r2   r6   r9   r:   r   r   r   r   r      s   r   c                   @   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)S )*ÚTestGeneratorInverseLinec                 C   s¨   t  ¡ }ddgddgddgddgddgddgddgddgddgddgddgddgddgg}| |¡ t  |¡}t  ¡ }d	d
ddddddg}| |¡ t  ||¡s¤t‚d S )Nr   r   r   r   r   é   é   é   )ÚaÚb©rB   Úc)rB   Úd)rB   Úe©rE   rF   )rG   Úf)rG   Úg)rI   rJ   ©r   r8   Úadd_edges_fromÚinverse_line_graphr
   r   ©r   r   ÚG_edgesÚHÚsolutionZsolution_edgesr   r   r   Útest_exampleZ   s:    ó

ø

z%TestGeneratorInverseLine.test_examplec                 C   sx   t  ¡ }ddgddgddgddgddgddgg}| |¡ t  |¡}t  ¡ }dddd	d
g}| |¡ t  ||¡stt‚d S )Nr   r   r   r   r   rD   )rC   rE   rH   )rF   rG   )rF   rI   rK   rN   r   r   r   Útest_example_2{   s    (


z'TestGeneratorInverseLine.test_example_2c                 C   s2   t  d¡}t  |¡}t  d¡}t  ||¡s.t‚d S )Nr   r   ©r   r   rM   r
   r   ©r   r   rP   rQ   r   r   r   Ú	test_pair…   s    


z"TestGeneratorInverseLine.test_pairc                 C   s2   t  d¡}t  d¡}t  |¡}t  ||¡s.t‚d S )Nr   r?   rT   )r   r   rQ   rP   r   r   r   Ú	test_line‹   s    


z"TestGeneratorInverseLine.test_linec                 C   sX   t  d¡}t  |¡}t  ¡ }| ddgddgddgg¡ t  ||¡sTt  ||¡sTt‚d S )Nr   r   r   r   )r   r   rM   r8   rL   r
   r   )r   r   rP   Zalternative_solutionr   r   r   Útest_triangle_graph‘   s
    

z,TestGeneratorInverseLine.test_triangle_graphc                 C   s(   t  d¡}t  |¡}t  ||¡s$t‚d S r   )r   r   rM   r
   r   ©r   r   rP   r   r   r   r   š   s    

z#TestGeneratorInverseLine.test_cyclec                 C   s,   t  ¡ }t  |¡}t  |t  d¡¡s(t‚d S )Nr   )r   r8   rM   r
   r   r   rY   r   r   r   Ú
test_emptyŸ   s    
z#TestGeneratorInverseLine.test_emptyc                 C   s2   t  d¡}t  |¡}t  d¡}t  ||¡s.t‚d S )Nr   r   )r   r   rM   r   r
   r   rU   r   r   r   Útest_K1¤   s    


z TestGeneratorInverseLine.test_K1c              	   C   s4   t  d¡}tjt jdd t  |¡ W 5 Q R X d S )Nr   zedgeless graph)Úmatch)r   Zempty_graphÚpytestÚraisesÚNetworkXErrorrM   ©r   r   r   r   r   Útest_edgeless_graphª   s    
z,TestGeneratorInverseLine.test_edgeless_graphc                 C   s,   t  d¡}| dd¡ t t jt j|¡ d S )Nr   r   )r   r   Úadd_edger]   r^   r_   rM   r`   r   r   r   Útest_selfloops_error¯   s    
z-TestGeneratorInverseLine.test_selfloops_errorc                 C   sv  t  d¡}t t jt j|¡ t  d¡}t t jt j|¡ t  d¡}| dd¡ t t jt j|¡ t  	t  
d¡t  dd¡¡}t t jt j|¡ t  ¡ }| ddg¡ t t jt j|¡ | d	d¡ t t jt j|¡ t  ¡ }| dd
g¡ t t jt j|¡ t  ¡ }| ddddg¡ t t jt j|¡ | ddg¡ t t jt j|¡ t  ¡ }| ddddg¡ t t jt j|¡ d S )Nr   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_   rM   Zwheel_graphr   Zremove_edgeZcomposer   Zcomplete_bipartite_graphÚdiamond_graphrL   rb   )r   ZclawÚwheelZK5mr   r   r   r   Útest_non_line_graphs´   s2    


z-TestGeneratorInverseLine.test_non_line_graphsc                 C   sx   t  ¡ }ddgddgddgg}| |¡ t t jt j|¡ t  ¡ }ddgddgddgg}| |¡ t t jt j|¡ d S )Nr   r   r   r   )r   r   rL   r]   r^   ZNetworkXNotImplementedrM   r(   )r   r   rO   r   r   r   Útest_wrong_graph_typeã   s    

z.TestGeneratorInverseLine.test_wrong_graph_typec                 C   s2   t  d¡}t  |¡}t  |¡}t  ||¡s.t‚d S ©Né
   )r   r   r	   rM   r
   r   ©r   r   rP   ÚJr   r   r   Útest_line_inverse_line_completeî   s    


z8TestGeneratorInverseLine.test_line_inverse_line_completec                 C   s2   t  d¡}t  |¡}t  |¡}t  ||¡s.t‚d S ri   ©r   r   r	   rM   r
   r   rk   r   r   r   Útest_line_inverse_line_pathô   s    


z4TestGeneratorInverseLine.test_line_inverse_line_pathc                 C   s2   t  d¡}t  |¡}t  |¡}t  ||¡s.t‚d S r   )r   Zhypercube_graphr	   rM   r
   r   rk   r   r   r   Ú test_line_inverse_line_hypercubeú   s    


z9TestGeneratorInverseLine.test_line_inverse_line_hypercubec                 C   s2   t  d¡}t  |¡}t  |¡}t  ||¡s.t‚d S ri   )r   r   r	   rM   r
   r   rk   r   r   r   Útest_line_inverse_line_cycle   s    


z5TestGeneratorInverseLine.test_line_inverse_line_cyclec                 C   s2   t  d¡}t  |¡}t  |¡}t  ||¡s.t‚d S )Né   )r   r   r	   rM   r
   r   rk   r   r   r   Útest_line_inverse_line_star  s    


z4TestGeneratorInverseLine.test_line_inverse_line_starc                 C   s6   t  ddd¡}t  |¡}t  |¡}t  ||¡s2t‚d S )Nr   r   r   )r   Zcomplete_multipartite_graphr	   rM   r
   r   rk   r   r   r   Ú#test_line_inverse_line_multipartite  s    

z<TestGeneratorInverseLine.test_line_inverse_line_multipartitec                 C   s2   t  d¡}t  |¡}t  |¡}t  ||¡s.t‚d S )Nr   )r   Z dorogovtsev_goltsev_mendes_graphr	   rM   r
   r   rk   r   r   r   Útest_line_inverse_line_dgm  s    


z3TestGeneratorInverseLine.test_line_inverse_line_dgmc                 C   s>   t  ddddddg¡}t  |¡}t  |¡}t  ||¡s:t‚d S )Nr   r   r   rB   rC   rE   rn   rk   r   r   r   Útest_line_different_node_types  s    

z7TestGeneratorInverseLine.test_line_different_node_typesN)r;   r<   r=   rR   rS   rV   rW   rX   r   rZ   r[   ra   rc   rg   rh   rm   ro   rp   rq   rs   rt   ru   rv   r   r   r   r   r>   Y   s(   !
	/r>   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestGeneratorPrivateFunctionsc                 C   s4   t  ¡ }t t jtj|d¡ t t jtj|d¡ d S ©Nrd   r   )r   re   r]   r^   r_   r   Z
_trianglesr`   r   r   r   Útest_triangles_error   s    z2TestGeneratorPrivateFunctions.test_triangles_errorc                 C   s4   t  ¡ }t t jtj|d¡ t t jtj|d¡ d S )N)r   r   r   )r   r   r   )r   re   r]   r^   r_   r   Z_odd_triangler`   r   r   r   Útest_odd_triangles_error%  s    z6TestGeneratorPrivateFunctions.test_odd_triangles_errorc                 C   s4   t  ¡ }t t jtj|d¡ t t jtj|d¡ d S rx   )r   re   r]   r^   r_   r   Ú_select_starting_cellr`   r   r   r   Útest_select_starting_cell_error*  s    z=TestGeneratorPrivateFunctions.test_select_starting_cell_errorc                    sR   t  ¡ ‰ ˆ jD ]>}tjˆ |d‰tˆƒdks0t‚t‡ ‡fdd„ˆD ƒƒst‚qd S )N)Zstarting_edger   c                 3   s,   | ]$}ˆD ]}||kr
|ˆ | kV  q
qd S )Nr   )Ú.0ÚuÚv©r   Úcellr   r   Ú	<genexpr>5  s
        zCTestGeneratorPrivateFunctions.test_diamond_graph.<locals>.<genexpr>)r   re   r)   r   r{   Úlenr   Úall)r   Úedger   r€   r   Útest_diamond_graph/  s
    
z0TestGeneratorPrivateFunctions.test_diamond_graphN)r;   r<   r=   ry   rz   r|   r†   r   r   r   r   rw     s   rw   )
r]   Znetworkxr   Znetworkx.generatorsr   Znetworkx.utilsr   r   r>   rw   r   r   r   r   Ú<module>   s   Q G