
    ިsg(                     h    d dl Z d dlZd dlmZ d dlmZ  G d d      Z G d d      Z G d d	      Z	y)
    N)line)edges_equalc                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestGeneratorLinec                     t        j                  d      }t        j                  |      }t        j                  |t        j                  d            sJ y N   )nx
star_graph
line_graphis_isomorphiccomplete_graphselfGLs      V/var/www/html/venv/lib/python3.12/site-packages/networkx/generators/tests/test_line.py	test_starzTestGeneratorLine.test_star	   s?    MM!MM!2#4#4Q#7888    c                     t        j                  d      }t        j                  |      }t        j                  |t        j                  d            sJ y )Nr	      )r
   
path_graphr   r   r   s      r   	test_pathzTestGeneratorLine.test_path   s=    MM!MM!2==#3444r   c                     t        j                  d      }t        j                  |      }t        j                  ||      sJ y r   )r
   cycle_graphr   r   r   s      r   
test_cyclezTestGeneratorLine.test_cycle   s4    NN1MM!1%%%r   c                     t        j                  g d      }t        j                  |      }|j                  i i i dk(  sJ y )N)r      r      r      )r
   DiGraphr   adjr   s      r   test_digraph1zTestGeneratorLine.test_digraph1   s8    JJ/0MM!uuR<<<<r   c                     t        j                  g d      }t        j                  |      }t        |j	                         g d      sJ y )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   s      r   test_multigraph1z"TestGeneratorLine.test_multigraph1   s?    MMJKMM!GGI
 	
 
r   c                     t        j                  ddg      }t        j                  |      }t        |j	                         dg      sJ y )Nr   r!   r!   r   )r   r!   r   )r   r!   r   r.   r   s      r   test_multigraph2z"TestGeneratorLine.test_multigraph27   s=    MM66*+MM!1779'=&>???r   c                     t        j                  ddg      }t        j                  |      }t        |j	                         ddg      sJ y )Nr3   r4   )r5   r!   r   r   )r8   r5   r
   MultiDiGraphr   r   r0   r   s      r   test_multidigraph1z$TestGeneratorLine.test_multidigraph1<   s@    OOVV,-MM!1779'=?U&VWWWr   c                     t        j                  g d      }t        j                  |      }t        |j	                         g d      sJ y )N)r   r   r   r3   ))r)   r5   )r,   r5   )r-   r5   r9   r   s      r   test_multidigraph2z$TestGeneratorLine.test_multidigraph2A   s=    OO<=MM!GGIT
 	
 
r   c                     t        j                  g d      }t        j                  |      }t        |j	                         ddg      sJ y )Nr   r3   r!   r#   r   r3   r3   r@   )r
   r$   r   r   r0   r   s      r   test_digraph2zTestGeneratorLine.test_digraph2I   s<    JJ/0MM!1779'79I&JKKKr   c                     t        j                  g d      }t        j                  |t        j                               }t	        |j                         ddg      sJ y Nr?   )create_usingrA   rB   )r
   r$   r   Graphr   r0   r   s      r   test_create1zTestGeneratorLine.test_create1N   sD    JJ/0MM!"((*51779'79I&JKKKr   c                     t        j                  g d      }t        j                  |t        j                               }t	        |j                         ddg      sJ y rE   )r
   rG   r   r$   r   r0   r   s      r   test_create2zTestGeneratorLine.test_create2S   sD    HH-.MM!"**,71779'79I&JKKKr   N)__name__
__module____qualname__r   r   r   r&   r1   r6   r;   r=   rC   rH   rJ    r   r   r   r      s>    9
5
&
=
2@
X

L
L
Lr   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestGeneratorInverseLinec                 L   t        j                         }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}|j                  |       t        j                  |      }t        j                         }g d	}|j                  |       t        j                  ||      sJ y )
Nr   r!   r#   r   r	            ))abrU   c)rU   d)rU   erX   rY   )rZ   f)rZ   g)r\   r]   r
   rG   add_edges_frominverse_line_graphr   r   r   G_edgesHsolutionsolution_edgess         r   test_examplez%TestGeneratorInverseLine.test_exampleZ   s    HHJFFFFFFFFFFFFF
 	
!!!!$88:	
 	/8,,,r   c                 "   t        j                         }ddgddgddgddgddgddgg}|j                  |       t        j                  |      }t        j                         }g d}|j                  |       t        j                  ||      sJ y )Nr   r!   r#   r   r	   )rW   )rV   rX   r[   )rY   rZ   )rY   r\   r^   ra   s         r   test_example_2z'TestGeneratorInverseLine.test_example_2{   s    HHJq6Aq6Aq6Aq6Aq6Aq6B	!!!!$88:U/8,,,r   c                     t        j                  d      }t        j                  |      }t        j                  d      }t        j                  ||      sJ y )Nr!   r#   r
   r   r`   r   r   r   rc   rd   s       r   	test_pairz"TestGeneratorInverseLine.test_pair   sD    MM!!!!$==#8,,,r   c                     t        j                  d      }t        j                  d      }t        j                  |      }t        j                  ||      sJ y )Nr	   rR   rj   )r   r   rd   rc   s       r   	test_linez"TestGeneratorInverseLine.test_line   sD    MM!==#!!!$8,,,r   c                    t        j                  d      }t        j                  |      }t        j                         }|j	                  ddgddgddgg       t        j
                  ||      st        j
                  ||      sJ y y )Nr#   r   r   r!   )r
   r   r`   rG   r_   r   )r   r   rc   alternative_solutions       r   test_triangle_graphz,TestGeneratorInverseLine.test_triangle_graph   s}    a !!!$!xxz++aVaVaV,DE 1%)9)9!=Q)RRR)R%r   c                     t        j                  d      }t        j                  |      }t        j                  ||      sJ y r   )r
   r   r`   r   r   r   rc   s      r   r   z#TestGeneratorInverseLine.test_cycle   s6    NN1!!!$1%%%r   c                     t        j                         }t        j                  |      }t        j                  |t        j                  d            sJ y )Nr   )r
   rG   r`   r   r   rs   s      r   
test_emptyz#TestGeneratorInverseLine.test_empty   s>    HHJ!!!$2#4#4Q#7888r   c                     t        j                  d      }t        j                  |      }t        j                  d      }t        j                  ||      sJ y )Nr   r!   )r
   r   r`   r   r   rk   s       r   test_K1z TestGeneratorInverseLine.test_K1   sF    a !!!$==#8,,,r   c                     t        j                  d      }t        j                  t         j                  d      5  t        j
                  |       d d d        y # 1 sw Y   y xY w)Nr	   zedgeless graph)match)r
   empty_graphpytestraisesNetworkXErrorr`   r   r   s     r   test_edgeless_graphz,TestGeneratorInverseLine.test_edgeless_graph   sH    NN1]]2++3CD 	%!!!$	% 	% 	%s   AA#c                     t        j                  d      }|j                  dd       t        j                  t         j
                  t         j                  |       y )Nr   r   )r
   r   add_edger{   r|   r}   r`   r~   s     r   test_selfloops_errorz-TestGeneratorInverseLine.test_selfloops_error   s:    NN1	

1ab&&(=(=qAr   c                    t        j                  d      }t        j                  t         j                  t         j
                  |       t        j                  d      }t        j                  t         j                  t         j
                  |       t        j                  d      }|j                  dd       t        j                  t         j                  t         j
                  |       t        j                  t        j                  d      t        j                  dd            }t        j                  t         j                  t         j
                  |       t        j                         }|j                  ddg       t        j                  t         j                  t         j
                  |       |j                  d	d       t        j                  t         j                  t         j
                  |       t        j                         }|j                  dd
g       t        j                  t         j                  t         j
                  |       t        j                         }|j                  g d       t        j                  t         j                  t         j
                  |       |j                  ddg       t        j                  t         j                  t         j
                  |       t        j                         }|j                  g d       t        j                  t         j                  t         j
                  |       y )Nr#   rR   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`   wheel_graphr   remove_edgecomposer   complete_bipartite_graphdiamond_graphr_   r   )r   clawwheelK5mr   s        r   test_non_line_graphsz-TestGeneratorInverseLine.test_non_line_graphs   s'   
 }}Qb&&(=(=tD q!b&&(=(=uE "1b&&(=(=sC JJr}}Q')D)DQ)JKb&&(=(=qA
 	&&)*b&&(=(=qA	

1ab&&(=(=qA 	&&)*b&&(=(=qA 	9:b&&(=(=qA	&&)*b&&(=(=qA 	9:b&&(=(=qAr   c                    t        j                         }ddgddgddgg}|j                  |       t        j                  t         j
                  t         j                  |       t        j                         }ddgddgddgg}|j                  |       t        j                  t         j
                  t         j                  |       y )Nr   r   r!   r#   )r
   r$   r_   r{   r|   NetworkXNotImplementedr`   r/   )r   r   rb   s      r   test_wrong_graph_typez.TestGeneratorInverseLine.test_wrong_graph_type   s    JJLq6Aq6Aq6*	!b//1F1FJMMOq6Aq6Aq6*	!b//1F1FJr   c                     t        j                  d      }t        j                  |      }t        j                  |      }t        j                  ||      sJ y N
   )r
   r   r   r`   r   r   r   rc   Js       r   test_line_inverse_line_completez8TestGeneratorInverseLine.test_line_inverse_line_complete   sF    b!MM!!!!$1%%%r   c                     t        j                  d      }t        j                  |      }t        j                  |      }t        j                  ||      sJ y r   r
   r   r   r`   r   r   s       r   test_line_inverse_line_pathz4TestGeneratorInverseLine.test_line_inverse_line_path   D    MM"MM!!!!$1%%%r   c                     t        j                  d      }t        j                  |      }t        j                  |      }t        j                  ||      sJ y r   )r
   hypercube_graphr   r`   r   r   s       r    test_line_inverse_line_hypercubez9TestGeneratorInverseLine.test_line_inverse_line_hypercube   sF    q!MM!!!!$1%%%r   c                     t        j                  d      }t        j                  |      }t        j                  |      }t        j                  ||      sJ y r   )r
   r   r   r`   r   r   s       r   test_line_inverse_line_cyclez5TestGeneratorInverseLine.test_line_inverse_line_cycle   sD    NN2MM!!!!$1%%%r   c                     t        j                  d      }t        j                  |      }t        j                  |      }t        j                  ||      sJ y )N   )r
   r   r   r`   r   r   s       r   test_line_inverse_line_starz4TestGeneratorInverseLine.test_line_inverse_line_star  r   r   c                     t        j                  ddd      }t        j                  |      }t        j                  |      }t        j                  ||      sJ y )Nr#   r   r	   )r
   complete_multipartite_graphr   r`   r   r   s       r   #test_line_inverse_line_multipartitez<TestGeneratorInverseLine.test_line_inverse_line_multipartite  sJ    **1a3MM!!!!$1%%%r   c                     t        j                  d      }t        j                  |      }t        j                  |      }t        j                  ||      sJ y )Nr   )r
    dorogovtsev_goltsev_mendes_graphr   r`   r   r   s       r   test_line_inverse_line_dgmz3TestGeneratorInverseLine.test_line_inverse_line_dgm  sF    //2MM!!!!$1%%%r   c                     t        j                  g d      }t        j                  |      }t        j                  |      }t        j                  ||      sJ y )N)r   r!   r#   rU   rV   rX   r   r   s       r   test_line_different_node_typesz7TestGeneratorInverseLine.test_line_different_node_types  sE    MM23MM!!!!$1%%%r   N)rK   rL   rM   rf   rh   rl   rn   rq   r   ru   rw   r   r   r   r   r   r   r   r   r   r   r   r   rN   r   r   rP   rP   Y   sl    -B---S&
9
-%
B
-B^	K&&&&&&&&r   rP   c                   $    e Zd Zd Zd Zd Zd Zy)TestGeneratorPrivateFunctionsc                     t        j                         }t        j                  t         j                  t
        j                  |d       t        j                  t         j                  t
        j                  |d       y Nr   r"   )r
   r   r{   r|   r}   r   
_trianglesr~   s     r   test_triangles_errorz2TestGeneratorPrivateFunctions.test_triangles_error   sH    b&&FCb&&FCr   c                     t        j                         }t        j                  t         j                  t
        j                  |d       t        j                  t         j                  t
        j                  |d       y )N)r   r   r   )r   r   r#   )r
   r   r{   r|   r}   r   _odd_triangler~   s     r   test_odd_triangles_errorz6TestGeneratorPrivateFunctions.test_odd_triangles_error%  sL    b&&(:(:AyIb&&(:(:AyIr   c                     t        j                         }t        j                  t         j                  t
        j                  |d       t        j                  t         j                  t
        j                  |d       y r   )r
   r   r{   r|   r}   r   _select_starting_cellr~   s     r   test_select_starting_cell_errorz=TestGeneratorPrivateFunctions.test_select_starting_cell_error*  sL    b&&(B(BAvNb&&(B(BAvNr   c                     t        j                         j                  D ]@  }t        j                  |      t              dk(  sJ t        fdD              r@J  y )N)starting_edger#   c              3   F   K   | ]  }D ]  }||k7  s	||   v    y w)NrN   ).0uvr   cells      r   	<genexpr>zCTestGeneratorPrivateFunctions.test_diamond_graph.<locals>.<genexpr>5  s+     GQG1QqAaDyGyGs   !!)r
   r   r0   r   r   lenall)r   edger   r   s     @@r   test_diamond_graphz0TestGeneratorPrivateFunctions.test_diamond_graph/  s\    GG 	HD--atDDt9>!>G$GGGG		Hr   N)rK   rL   rM   r   r   r   r   rN   r   r   r   r     s    D
J
O
Hr   r   )
r{   networkxr
   networkx.generatorsr   networkx.utilsr   r   rP   r   rN   r   r   <module>r      s9      $ &NL NLbC& C&LH Hr   