o
    ñ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J ‚d S ©Né   )ÚnxÚ
star_graphÚ
line_graphÚis_isomorphicÚcomplete_graph©ÚselfÚGÚL© r   úW/var/www/vscode/kcb/lib/python3.10/site-packages/networkx/generators/tests/test_line.pyÚ	test_star	   ó   

zTestGeneratorLine.test_starc                 C   s.   t  d¡}t  |¡}t  |t  d¡¡sJ ‚d S )Nr   é   )r   Ú
path_graphr	   r
   r   r   r   r   Ú	test_path   r   zTestGeneratorLine.test_pathc                 C   ó(   t  d¡}t  |¡}t  ||¡sJ ‚d S r   )r   Úcycle_graphr	   r
   r   r   r   r   Ú
test_cycle   ó   

zTestGeneratorLine.test_cyclec                 C   s2   t  g d¢¡}t  |¡}|ji i i dœksJ ‚d S )N)©r   é   ©r   é   ©r   é   )r   ÚDiGraphr	   Úadjr   r   r   r   Útest_digraph1   s   
zTestGeneratorLine.test_digraph1c                 C   ó2   t  g d¢¡}t  |¡}t| ¡ g d¢ƒsJ ‚d S )N)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'   r(   ©r   Ú
MultiGraphr	   r   Úedgesr   r   r   r   Útest_multigraph1   s   
þz"TestGeneratorLine.test_multigraph1c                 C   s0   t  ddg¡}t  |¡}t| ¡ dgƒsJ ‚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J ‚d S )Nr/   r0   )r1   ©r   r   r   )r3   r1   ©r   ÚMultiDiGraphr	   r   r-   r   r   r   r   Útest_multidigraph1<   ó   
z$TestGeneratorLine.test_multidigraph1c                 C   r$   )N)r   r   r   r/   ))r&   r1   )r)   r1   )r*   r1   r4   r   r   r   r   Útest_multidigraph2A   s   
þz$TestGeneratorLine.test_multidigraph2c                 C   s2   t  g d¢¡}t  |¡}t| ¡ ddgƒsJ ‚d S )N©r   r/   ©r   r    ©r   r/   ©r/   r:   )r   r!   r	   r   r-   r   r   r   r   Útest_digraph2I   r7   zTestGeneratorLine.test_digraph2c                 C   ó:   t  g d¢¡}t j|t  ¡ d}t| ¡ ddgƒsJ ‚d S ©Nr9   )Úcreate_usingr;   r<   )r   r!   r	   ÚGraphr   r-   r   r   r   r   Útest_create1N   ó   zTestGeneratorLine.test_create1c                 C   r>   r?   )r   rA   r	   r!   r   r-   r   r   r   r   Útest_create2S   rC   zTestGeneratorLine.test_create2N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r#   r.   r2   r6   r8   r=   rB   rD   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  ¡ }g d	¢}| |¡ t  ||¡sLJ ‚d S )
Nr   r   r    r   r   é   é   é   ))ÚaÚb©rL   Úc)rL   Úd)rL   Úe©rO   rP   )rQ   Úf)rQ   Úg)rS   rT   ©r   rA   Úadd_edges_fromÚinverse_line_graphr
   ©r   r   ÚG_edgesÚHÚsolutionÚsolution_edgesr   r   r   Útest_exampleZ   s*   ó



z%TestGeneratorInverseLine.test_examplec                 C   sr   t  ¡ }ddgddgddgddgddgddgg}| |¡ t  |¡}t  ¡ }g d¢}| |¡ t  ||¡s7J ‚d S )Nr   r   r    r   r   )rN   )rM   rO   rR   )rP   rQ   )rP   rS   rU   rX   r   r   r   Útest_example_2{   s   (


z'TestGeneratorInverseLine.test_example_2c                 C   s2   t  d¡}t  |¡}t  d¡}t  ||¡sJ ‚d S )Nr   r    ©r   r   rW   r
   ©r   r   rZ   r[   r   r   r   Ú	test_pair…   ó   


z"TestGeneratorInverseLine.test_pairc                 C   s2   t  d¡}t  d¡}t  |¡}t  ||¡sJ ‚d S )Nr   rI   r_   )r   r   r[   rZ   r   r   r   Ú	test_line‹   rb   z"TestGeneratorInverseLine.test_linec                 C   s\   t  d¡}t  |¡}t  ¡ }| ddgddgddgg¡ t  ||¡s*t  ||¡s,J ‚d S d S )Nr    r   r   r   )r   r   rW   rA   rV   r
   )r   r   rZ   Úalternative_solutionr   r   r   Útest_triangle_graph‘   s
   

$z,TestGeneratorInverseLine.test_triangle_graphc                 C   r   r   )r   r   rW   r
   ©r   r   rZ   r   r   r   r   š   r   z#TestGeneratorInverseLine.test_cyclec                 C   s,   t  ¡ }t  |¡}t  |t  d¡¡sJ ‚d S )Nr   )r   rA   rW   r
   r   rf   r   r   r   Ú
test_emptyŸ   s   
z#TestGeneratorInverseLine.test_emptyc                 C   s2   t  d¡}t  |¡}t  d¡}t  ||¡sJ ‚d S )Nr   r   )r   r   rW   r   r
   r`   r   r   r   Útest_K1¤   rb   z TestGeneratorInverseLine.test_K1c                 C   sJ   t  d¡}tjt jdd t  |¡ W d   ƒ d S 1 sw   Y  d S )Nr   zedgeless graph)Úmatch)r   Úempty_graphÚpytestÚraisesÚNetworkXErrorrW   ©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_edgerk   rl   rm   rW   rn   r   r   r   Útest_selfloops_error¯   s   
z-TestGeneratorInverseLine.test_selfloops_errorc                 C   sn  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  ¡ }| g d¢¡ t t jt j|¡ | ddg¡ t t jt j|¡ t  ¡ }| g d¢¡ t t jt j|¡ d S )Nr    rI   r   r   r   r   ©r   r   ©r   r    r   )r   r    )rr   ©r   r   )r   r   rs   )r   r   ©r   r   )rr   rt   ru   rs   )r   r   rk   rl   rm   rW   Úwheel_graphr   Úremove_edgeÚcomposer   Úcomplete_bipartite_graphÚdiamond_graphrV   rp   )r   ÚclawÚwheelÚ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!   rV   rk   rl   ÚNetworkXNotImplementedrW   r,   )r   r   rY   r   r   r   Útest_wrong_graph_typeã   s   

z.TestGeneratorInverseLine.test_wrong_graph_typec                 C   ó2   t  d¡}t  |¡}t  |¡}t  ||¡sJ ‚d S ©Né
   )r   r   r	   rW   r
   ©r   r   rZ   ÚJr   r   r   Útest_line_inverse_line_completeî   rb   z8TestGeneratorInverseLine.test_line_inverse_line_completec                 C   r   r‚   ©r   r   r	   rW   r
   r„   r   r   r   Útest_line_inverse_line_pathô   rb   z4TestGeneratorInverseLine.test_line_inverse_line_pathc                 C   r   r   )r   Úhypercube_graphr	   rW   r
   r„   r   r   r   Ú test_line_inverse_line_hypercubeú   rb   z9TestGeneratorInverseLine.test_line_inverse_line_hypercubec                 C   r   r‚   )r   r   r	   rW   r
   r„   r   r   r   Útest_line_inverse_line_cycle   rb   z5TestGeneratorInverseLine.test_line_inverse_line_cyclec                 C   r   )Né   )r   r   r	   rW   r
   r„   r   r   r   Útest_line_inverse_line_star  rb   z4TestGeneratorInverseLine.test_line_inverse_line_starc                 C   s6   t  ddd¡}t  |¡}t  |¡}t  ||¡sJ ‚d S )Nr    r   r   )r   Úcomplete_multipartite_graphr	   rW   r
   r„   r   r   r   Ú#test_line_inverse_line_multipartite  ó   

z<TestGeneratorInverseLine.test_line_inverse_line_multipartitec                 C   r   )Nr   )r   Ú dorogovtsev_goltsev_mendes_graphr	   rW   r
   r„   r   r   r   Útest_line_inverse_line_dgm  rb   z3TestGeneratorInverseLine.test_line_inverse_line_dgmc                 C   s6   t  g d¢¡}t  |¡}t  |¡}t  ||¡sJ ‚d S )N)r   r   r    rL   rM   rO   r‡   r„   r   r   r   Útest_line_different_node_types  r   z7TestGeneratorInverseLine.test_line_different_node_typesN)rE   rF   rG   r]   r^   ra   rc   re   r   rg   rh   ro   rq   r~   r€   r†   rˆ   rŠ   r‹   r   r   r’   r“   r   r   r   r   rH   Y   s*    !
	/rH   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestGeneratorPrivateFunctionsc                 C   ó4   t  ¡ }t t jtj|d¡ t t jtj|d¡ d S ©Nrr   r   )r   rz   rk   rl   rm   r   Ú
_trianglesrn   r   r   r   Útest_triangles_error   ó   z2TestGeneratorPrivateFunctions.test_triangles_errorc                 C   r•   )N)r   r   r   )r   r   r    )r   rz   rk   rl   rm   r   Ú_odd_trianglern   r   r   r   Útest_odd_triangles_error%  r™   z6TestGeneratorPrivateFunctions.test_odd_triangles_errorc                 C   r•   r–   )r   rz   rk   rl   rm   r   Ú_select_starting_cellrn   r   r   r   Útest_select_starting_cell_error*  r™   z=TestGeneratorPrivateFunctions.test_select_starting_cell_errorc                    sR   t  ¡ ‰ ˆ jD ]}tjˆ |d‰tˆƒdksJ ‚t‡ ‡fdd„ˆD ƒƒs&J ‚qd S )N)Ústarting_edger    c                 3   s.    | ]}ˆD ]}||kr|ˆ | v V  qqd S )Nr   )Ú.0ÚuÚv©r   Úcellr   r   Ú	<genexpr>5  s   €, zCTestGeneratorPrivateFunctions.test_diamond_graph.<locals>.<genexpr>)r   rz   r-   r   rœ   ÚlenÚall)r   Úedger   r¢   r   Útest_diamond_graph/  s   
üz0TestGeneratorPrivateFunctions.test_diamond_graphN)rE   rF   rG   r˜   r›   r   r¨   r   r   r   r   r”     s
    r”   )
rk   Únetworkxr   Únetworkx.generatorsr   Únetworkx.utilsr   r   rH   r”   r   r   r   r   Ú<module>   s    Q G