o
    3ήc!                     @   sN   d dl Z d dlZd dlm  mZ d dlmZ G dd dZG dd dZ	dS )    N)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   J/tmp/pip-target-vg8gfxp4/lib/python/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.   r/   )r0   r   r   r   )r2   r0   r   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.   r9   )r   r    r   r   r,   r   r   r   r   test_digraph2I   r6   zTestGeneratorLine.test_digraph2c                 C   :   t g d}t j|t  d}t| ddgsJ d S Nr8   )create_usingr:   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   rB   zTestGeneratorLine.test_create2N)__name__
__module____qualname__r   r   r   r"   r-   r1   r5   r7   r<   rA   rC   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'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rK   c)rK   d)rK   erN   rO   )rP   f)rP   g)rR   rS   r   r@   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   )rM   )rL   rN   rQ   )rO   rP   )rO   rR   rT   rW   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   rV   r	   r   r   rY   rZ   r   r   r   	test_pair      


z"TestGeneratorInverseLine.test_pairc                 C   s2   t d}t d}t |}t ||sJ d S )Nr   rH   r^   )r   r   rZ   rY   r   r   r   	test_line   ra   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
   rV   r@   rU   r	   )r   r   rY   alternative_solutionr   r   r   test_triangle_graph   s
   

$z,TestGeneratorInverseLine.test_triangle_graphc                 C   r   r   )r   r   rV   r	   r   r   rY   r   r   r   r      r   z#TestGeneratorInverseLine.test_cyclec                 C   s,   t  }t |}t |t dsJ d S )Nr   )r   r@   rV   r	   r
   re   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
   rV   r   r	   r_   r   r   r   test_K1   ra   z TestGeneratorInverseLine.test_K1c                 C   s>   t  }ddgddgddgg}|| tt jt j| d S Nr   r   r   r   )r   r@   rU   pytestraisesNetworkXErrorrV   r   r   rX   r   r   r   	test_claw   s   
z"TestGeneratorInverseLine.test_clawc                 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g
}|| tt jt j| 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g	}|| tt jt j| t d}|dd tt jt j| d S )Nr   r   r   r   r   r   )	r   r@   rU   ri   rj   rk   rV   r
   remove_edge)r   r   rX   K5mer   r   r   test_non_line_graph   s<   


z,TestGeneratorInverseLine.test_non_line_graphc                 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 rh   )r   r    rU   ri   rj   NetworkXNotImplementedrV   r+   rl   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   rV   r	   r   r   rY   Jr   r   r   test_line_inverse_line_complete   ra   z8TestGeneratorInverseLine.test_line_inverse_line_completec                 C   rs   rt   r   r   r   rV   r	   rv   r   r   r   test_line_inverse_line_path   ra   z4TestGeneratorInverseLine.test_line_inverse_line_pathc                 C   rs   r   )r   hypercube_graphr   rV   r	   rv   r   r   r    test_line_inverse_line_hypercube   ra   z9TestGeneratorInverseLine.test_line_inverse_line_hypercubec                 C   rs   rt   )r   r   r   rV   r	   rv   r   r   r   test_line_inverse_line_cycle   ra   z5TestGeneratorInverseLine.test_line_inverse_line_cyclec                 C   rs   )N   )r   r   r   rV   r	   rv   r   r   r   test_line_inverse_line_star   ra   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   rV   r	   rv   r   r   r   #test_line_inverse_line_multipartite     

z<TestGeneratorInverseLine.test_line_inverse_line_multipartitec                 C   rs   )Nr   )r    dorogovtsev_goltsev_mendes_graphr   rV   r	   rv   r   r   r   test_line_inverse_line_dgm  ra   z3TestGeneratorInverseLine.test_line_inverse_line_dgmc                 C   s6   t g d}t |}t |}t ||sJ d S )N)r   r   r   rK   rL   rN   ry   rv   r   r   r   test_line_different_node_types  r   z7TestGeneratorInverseLine.test_line_different_node_typesN)rD   rE   rF   r\   r]   r`   rb   rd   r   rf   rg   rm   rp   rr   rx   rz   r|   r}   r   r   r   r   r   r   r   r   rG   Y   s(    !
	+rG   )
ri   networkxr   networkx.generators.line
generatorslinenetworkx.utilsr   r   rG   r   r   r   r   <module>   s    Q