o
    £&?eŠ(  ã                   @   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   úd/home/www/facesmatcher.com/pyenv/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	   Z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.   r/   )r0   ©r   r   r   )r2   r0   ©r   ZMultiDiGraphr	   r   r,   r   r   r   r   Útest_multidigraph1<   ó   
z$TestGeneratorLine.test_multidigraph1c                 C   r#   )N)r   r   r   r.   ))r%   r0   )r(   r0   )r)   r0   r3   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.   r8   )r   r!   r	   r   r,   r   r   r   r   Útest_digraph2I   r5   zTestGeneratorLine.test_digraph2c                 C   ó:   t  g d¢¡}t j|t  ¡ d}t| ¡ ddgƒsJ ‚d S ©Nr7   )Zcreate_usingr9   r:   )r   r!   r	   ÚGraphr   r,   r   r   r   r   Útest_create1N   ó   zTestGeneratorLine.test_create1c                 C   r<   r=   )r   r>   r	   r!   r   r,   r   r   r   r   Útest_create2S   r@   zTestGeneratorLine.test_create2N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r"   r-   r1   r4   r6   r;   r?   rA   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©rI   Úc)rI   Úd)rI   Úe©rL   rM   )rN   Úf)rN   Úg)rP   rQ   ©r   r>   Úadd_edges_fromÚinverse_line_graphr
   ©r   r   ÚG_edgesÚHÚsolutionZ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   )rK   )rJ   rL   rO   )rM   rN   )rM   rP   rR   rU   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   rT   r
   ©r   r   rW   rX   r   r   r   Ú	test_pair…   ó   


z"TestGeneratorInverseLine.test_pairc                 C   s2   t  d¡}t  d¡}t  |¡}t  ||¡sJ ‚d S )Nr   rF   r[   )r   r   rX   rW   r   r   r   Ú	test_line‹   r^   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   rT   r>   rS   r
   )r   r   rW   Zalternative_solutionr   r   r   Útest_triangle_graph‘   s
   

$z,TestGeneratorInverseLine.test_triangle_graphc                 C   r   r   )r   r   rT   r
   ©r   r   rW   r   r   r   r   š   r   z#TestGeneratorInverseLine.test_cyclec                 C   s,   t  ¡ }t  |¡}t  |t  d¡¡sJ ‚d S )Nr   )r   r>   rT   r
   r   ra   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   rT   r   r
   r\   r   r   r   Útest_K1¤   r^   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   Zempty_graphÚpytestÚraisesÚNetworkXErrorrT   ©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_edgere   rf   rg   rT   rh   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    rF   r   r   r   r   ©r   r   ©r   r    r   )r   r    )rl   ©r   r   )r   r   rm   )r   r   ©r   r   )rl   rn   ro   rm   )r   r   re   rf   rg   rT   Zwheel_graphr   Zremove_edgeZcomposer   Zcomplete_bipartite_graphÚdiamond_graphrS   rj   )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!   rS   re   rf   ZNetworkXNotImplementedrT   r+   )r   r   rV   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	   rT   r
   ©r   r   rW   ÚJr   r   r   Útest_line_inverse_line_completeî   r^   z8TestGeneratorInverseLine.test_line_inverse_line_completec                 C   rt   ru   ©r   r   r	   rT   r
   rw   r   r   r   Útest_line_inverse_line_pathô   r^   z4TestGeneratorInverseLine.test_line_inverse_line_pathc                 C   rt   r   )r   Zhypercube_graphr	   rT   r
   rw   r   r   r   Ú test_line_inverse_line_hypercubeú   r^   z9TestGeneratorInverseLine.test_line_inverse_line_hypercubec                 C   rt   ru   )r   r   r	   rT   r
   rw   r   r   r   Útest_line_inverse_line_cycle   r^   z5TestGeneratorInverseLine.test_line_inverse_line_cyclec                 C   rt   )Né   )r   r   r	   rT   r
   rw   r   r   r   Útest_line_inverse_line_star  r^   z4TestGeneratorInverseLine.test_line_inverse_line_starc                 C   s6   t  ddd¡}t  |¡}t  |¡}t  ||¡sJ ‚d S )Nr    r   r   )r   Zcomplete_multipartite_graphr	   rT   r
   rw   r   r   r   Ú#test_line_inverse_line_multipartite  ó   

z<TestGeneratorInverseLine.test_line_inverse_line_multipartitec                 C   rt   )Nr   )r   Z dorogovtsev_goltsev_mendes_graphr	   rT   r
   rw   r   r   r   Útest_line_inverse_line_dgm  r^   z3TestGeneratorInverseLine.test_line_inverse_line_dgmc                 C   s6   t  g d¢¡}t  |¡}t  |¡}t  ||¡sJ ‚d S )N)r   r   r    rI   rJ   rL   rz   rw   r   r   r   Útest_line_different_node_types  r   z7TestGeneratorInverseLine.test_line_different_node_typesN)rB   rC   rD   rY   rZ   r]   r_   r`   r   rb   rc   ri   rk   rr   rs   ry   r{   r|   r}   r   r€   r‚   rƒ   r   r   r   r   rE   Y   s*    !
	/rE   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 ©Nrl   r   )r   rp   re   rf   rg   r   Z
_trianglesrh   r   r   r   Útest_triangles_error   ó   z2TestGeneratorPrivateFunctions.test_triangles_errorc                 C   r…   )N)r   r   r   )r   r   r    )r   rp   re   rf   rg   r   Z_odd_trianglerh   r   r   r   Útest_odd_triangles_error%  rˆ   z6TestGeneratorPrivateFunctions.test_odd_triangles_errorc                 C   r…   r†   )r   rp   re   rf   rg   r   Ú_select_starting_cellrh   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)Z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   rp   r,   r   rŠ   ÚlenÚall)r   Úedger   r   r   Útest_diamond_graph/  s   
üz0TestGeneratorPrivateFunctions.test_diamond_graphN)rB   rC   rD   r‡   r‰   r‹   r•   r   r   r   r   r„     s
    r„   )
re   Znetworkxr   Znetworkx.generatorsr   Znetworkx.utilsr   r   rE   r„   r   r   r   r   Ú<module>   s    Q G