o
    ִi(                     @   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   V/home/kuhnn/.local/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