
    ܛ7i)                     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      `/home/rose/Desktop/poly/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d      sJ y )Nr3   r4   )r5   r!   r   r   )r8   r5   Tdirectedr
   MultiDiGraphr   r   r0   r   s      r   test_multidigraph1z$TestGeneratorLine.test_multidigraph1<   sJ    OOVV,-MM!GGI.0FGRV
 	
 
r   c                     t        j                  g d      }t        j                  |      }t        |j	                         g dd      sJ y )N)r   r   r   r3   ))r)   r5   )r,   r5   )r-   r5   Tr9   r;   r   s      r   test_multidigraph2z$TestGeneratorLine.test_multidigraph2C   s@    OO<=MM!GGIT
 	
 
r   c                     t        j                  g d      }t        j                  |      }t        |j	                         ddgd      sJ y )Nr   r3   r!   r#   r   r3   r3   rB   Tr9   )r
   r$   r   r   r0   r   s      r   test_digraph2zTestGeneratorLine.test_digraph2L   sE    JJ/0MM!GGI(*:;d
 	
 
r   c                     t        j                  g d      }t        j                  |t        j                               }t	        |j                         ddg      sJ y )NrA   create_usingrC   rD   )r
   r$   r   Graphr   r0   r   s      r   test_create1zTestGeneratorLine.test_create1S   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d      sJ y )NrA   rG   rC   rD   Tr9   )r
   rI   r   r$   r   r0   r   s      r   test_create2zTestGeneratorLine.test_create2X   sM    HH-.MM!"**,7GGI(*:;d
 	
 
r   N)__name__
__module____qualname__r   r   r   r&   r1   r6   r=   r?   rE   rJ   rL    r   r   r   r      s;    9
5
&
=
2@



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rW   c)rW   d)rW   erZ   r[   )r\   f)r\   g)r^   r_   r
   rI   add_edges_frominverse_line_graphr   r   r   G_edgesHsolutionsolution_edgess         r   test_examplez%TestGeneratorInverseLine.test_examplea   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	   )rY   )rX   rZ   r]   )r[   r\   )r[   r^   r`   rc   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   rb   r   r   r   re   rf   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	   rT   rl   )r   r   rf   re   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   rb   rI   ra   r   )r   r   re   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   rb   r   r   r   re   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
   rI   rb   r   r   ru   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   rb   r   r   rm   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NetworkXErrorrb   r   r   s     r   test_edgeless_graphz,TestGeneratorInverseLine.test_edgeless_graph   s@    NN1]]2++3CD!!!$ EDDs   AA#c                     t        j                  d      }|j                  dd       t        j                  t         j
                  t         j                  |       y )Nr   r   )r
   r   add_edger}   r~   r   rb   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#   rT   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   rb   wheel_graphr   remove_edgecomposer   complete_bipartite_graphdiamond_graphra   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$   ra   r}   r~   NetworkXNotImplementedrb   r/   )r   r   rd   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   rb   r   r   r   re   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   rb   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   rb   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   rb   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   rb   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   rb   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   rb   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#   rW   rX   rZ   r   r   s       r   test_line_different_node_typesz7TestGeneratorInverseLine.test_line_different_node_types  sE    MM23MM!!!!$1%%%r   N)rM   rN   rO   rh   rj   rn   rp   rs   r   rw   ry   r   r   r   r   r   r   r   r   r   r   r   r   rP   r   r   rR   rR   `   sl    -B---S&
9
-%
B
-B^	K&&&&&&&&r   rR   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_error1  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)NrP   ).0uvr   cells      r   	<genexpr>zCTestGeneratorPrivateFunctions.test_diamond_graph.<locals>.<genexpr><  s(     G$Q1QqAaDyy$s   !!)r
   r   r0   r   r   lenall)r   edger   r   s     @@r   test_diamond_graphz0TestGeneratorPrivateFunctions.test_diamond_graph6  sU    GGD--atDDt9>!>G$GGGG	 r   N)rM   rN   rO   r   r   r   r   rP   r   r   r   r   &  s    D
J
O
Hr   r   )
r}   networkxr
   networkx.generatorsr   networkx.utilsr   r   rR   r   rP   r   r   <module>r      s7      $ &U
 U
pC& C&LH Hr   