
    fi(                     |    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	dS )
    N)line)edges_equalc                   P    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S )TestGeneratorLinec                     t          j        d          }t          j        |          }t          j        |t          j        d                    sJ d S N   )nx
star_graph
line_graphis_isomorphiccomplete_graphselfGLs      {/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/generators/tests/test_line.py	test_starzTestGeneratorLine.test_star	   sJ    M!M!2#4Q#7#78888888    c                     t          j        d          }t          j        |          }t          j        |t          j        d                    sJ d S )Nr	      )r
   
path_graphr   r   r   s      r   	test_pathzTestGeneratorLine.test_path   sI    M!M!2=#3#34444444r   c                     t          j        d          }t          j        |          }t          j        ||          sJ d S r   )r
   cycle_graphr   r   r   s      r   
test_cyclezTestGeneratorLine.test_cycle   s?    N1M!1%%%%%%%r   c                 |    t          j        g d          }t          j        |          }|j        i i i dk    sJ d S )N)r      r      r      )r
   DiGraphr   adjr   s      r   test_digraph1zTestGeneratorLine.test_digraph1   sJ    J///00M!uR<<<<<<<<r   c                     t          j        g d          }t          j        |          }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   s      r   test_multigraph1z"TestGeneratorLine.test_multigraph1   sg    MJJJKKM!GGII  
 
 	
 	
 	
 	
 	
r   c                     t          j        ddg          }t          j        |          }t          |                                dg          sJ d S )Nr   r!   r!   r   )r   r!   r   )r   r!   r   r.   r   s      r   test_multigraph2z"TestGeneratorLine.test_multigraph27   sM    M66*++M!17799'=&>???????r   c                     t          j        ddg          }t          j        |          }t          |                                ddg          sJ d S )Nr3   r4   )r5   r!   r   r   )r8   r5   r
   MultiDiGraphr   r   r0   r   s      r   test_multidigraph1z$TestGeneratorLine.test_multidigraph1<   sP    OVV,--M!17799'=?U&VWWWWWWWr   c                     t          j        g d          }t          j        |          }t          |                                g d          sJ d S )N)r   r   r   r3   ))r)   r5   )r,   r5   )r-   r5   r9   r   s      r   test_multidigraph2z$TestGeneratorLine.test_multidigraph2A   sa    O<<<==M!GGIITTT
 
 	
 	
 	
 	
 	
r   c                     t          j        g d          }t          j        |          }t          |                                ddg          sJ d S )Nr   r3   r!   r#   r   r3   r3   r@   )r
   r$   r   r   r0   r   s      r   test_digraph2zTestGeneratorLine.test_digraph2I   sR    J///00M!17799'79I&JKKKKKKKr   c                     t          j        g d          }t          j        |t          j                              }t	          |                                ddg          sJ d S Nr?   )create_usingrA   rB   )r
   r$   r   Graphr   r0   r   s      r   test_create1zTestGeneratorLine.test_create1N   s]    J///00M!"(**55517799'79I&JKKKKKKKr   c                     t          j        g d          }t          j        |t          j                              }t	          |                                ddg          sJ d S rE   )r
   rG   r   r$   r   r0   r   s      r   test_create2zTestGeneratorLine.test_create2S   s]    H---..M!"*,,77717799'79I&JKKKKKKKr   N)__name__
__module____qualname__r   r   r   r&   r1   r6   r;   r=   rC   rH   rJ    r   r   r   r      s        9 9 9
5 5 5
& & &
= = =
 
 
2@ @ @
X X X

 
 
L L L
L L L
L L 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dS )TestGeneratorInverseLinec                 V   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}|                    |           t          j        |          }t          j                    }g d	}|                    |           t          j        ||          sJ d S )
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    HJJFFFFFFFFFFFFF
 	
!!!!!$$8::	
 	
 	
 	///8,,,,,,,r   c                 ,   t          j                    }ddgddgddgddgddgddgg}|                    |           t          j        |          }t          j                    }g d}|                    |           t          j        ||          sJ d S )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    HJJq6Aq6Aq6Aq6Aq6Aq6B	!!!!!$$8::UUU///8,,,,,,,r   c                     t          j        d          }t          j        |          }t          j        d          }t          j        ||          sJ d S )Nr!   r#   r
   r   r`   r   r   r   rc   rd   s       r   	test_pairz"TestGeneratorInverseLine.test_pair   sO    M!!!$$=##8,,,,,,,r   c                     t          j        d          }t          j        d          }t          j        |          }t          j        ||          sJ d S )Nr	   rR   rj   )r   r   rd   rc   s       r   	test_linez"TestGeneratorInverseLine.test_line   sO    M!=##!!$$8,,,,,,,r   c                    t          j        d          }t          j        |          }t          j                    }|                    ddgddgddgg           t          j        ||          st          j        ||          sJ d S d S )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  !!$$!xzz++aVaVaV,DEEE 1%%R)9!=Q)R)RRRRRRRRr   c                     t          j        d          }t          j        |          }t          j        ||          sJ d S r   )r
   r   r`   r   r   r   rc   s      r   r   z#TestGeneratorInverseLine.test_cycle   s@    N1!!$$1%%%%%%%r   c                     t          j                    }t          j        |          }t          j        |t          j        d                    sJ d S )Nr   )r
   rG   r`   r   r   rs   s      r   
test_emptyz#TestGeneratorInverseLine.test_empty   sG    HJJ!!$$2#4Q#7#78888888r   c                     t          j        d          }t          j        |          }t          j        d          }t          j        ||          sJ d S )Nr   r!   )r
   r   r`   r   r   rk   s       r   test_K1z TestGeneratorInverseLine.test_K1   sP    a  !!$$=##8,,,,,,,r   c                     t          j        d          }t          j        t           j        d          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr	   zedgeless graph)match)r
   empty_graphpytestraisesNetworkXErrorr`   r   r   s     r   test_edgeless_graphz,TestGeneratorInverseLine.test_edgeless_graph   s    N1]2+3CDDD 	% 	%!!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   AAAc                     t          j        d          }|                    dd           t          j        t           j        t           j        |           d S )Nr   r   )r
   r   add_edger{   r|   r}   r`   r~   s     r   test_selfloops_errorz-TestGeneratorInverseLine.test_selfloops_error   sE    N1	

1ab&(=qAAAAAr   c                    t          j        d          }t          j        t           j        t           j        |           t          j        d          }t          j        t           j        t           j        |           t          j        d          }|                    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                    }|                    ddg           t          j        t           j        t           j        |           |                    d	d           t          j        t           j        t           j        |           t          j                    }|                    dd
g           t          j        t           j        t           j        |           t          j                    }|                    g d           t          j        t           j        t           j        |           |                    ddg           t          j        t           j        t           j        |           t          j                    }|                    g d           t          j        t           j        t           j        |           d S )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   sS   
 }Qb&(=tDDD q!!b&(=uEEE ""1b&(=sCCC Jr}Q'')DQ)J)JKKb&(=qAAA
 	&&)***b&(=qAAA	

1ab&(=qAAA 	&&)***b&(=qAAA 	999:::b&(=qAAA	&&)***b&(=qAAA 	999:::b&(=qAAAAAr   c                 z   t          j                    }ddgddgddgg}|                    |           t          j        t           j        t           j        |           t          j                    }ddgddgddgg}|                    |           t          j        t           j        t           j        |           d S )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    JLLq6Aq6Aq6*	!!!b/1FJJJMOOq6Aq6Aq6*	!!!b/1FJJJJJr   c                     t          j        d          }t          j        |          }t          j        |          }t          j        ||          sJ d S N
   )r
   r   r   r`   r   r   r   rc   Js       r   test_line_inverse_line_completez8TestGeneratorInverseLine.test_line_inverse_line_complete   sP    b!!M!!!$$1%%%%%%%r   c                     t          j        d          }t          j        |          }t          j        |          }t          j        ||          sJ d S r   r
   r   r   r`   r   r   s       r   test_line_inverse_line_pathz4TestGeneratorInverseLine.test_line_inverse_line_path   O    M"M!!!$$1%%%%%%%r   c                     t          j        d          }t          j        |          }t          j        |          }t          j        ||          sJ d S r   )r
   hypercube_graphr   r`   r   r   s       r    test_line_inverse_line_hypercubez9TestGeneratorInverseLine.test_line_inverse_line_hypercube   sP    q!!M!!!$$1%%%%%%%r   c                     t          j        d          }t          j        |          }t          j        |          }t          j        ||          sJ d S r   )r
   r   r   r`   r   r   s       r   test_line_inverse_line_cyclez5TestGeneratorInverseLine.test_line_inverse_line_cycle   sO    N2M!!!$$1%%%%%%%r   c                     t          j        d          }t          j        |          }t          j        |          }t          j        ||          sJ d S )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 d S )Nr#   r   r	   )r
   complete_multipartite_graphr   r`   r   r   s       r   #test_line_inverse_line_multipartitez<TestGeneratorInverseLine.test_line_inverse_line_multipartite  sT    *1a33M!!!$$1%%%%%%%r   c                     t          j        d          }t          j        |          }t          j        |          }t          j        ||          sJ d S )Nr   )r
    dorogovtsev_goltsev_mendes_graphr   r`   r   r   s       r   test_line_inverse_line_dgmz3TestGeneratorInverseLine.test_line_inverse_line_dgm  sP    /22M!!!$$1%%%%%%%r   c                     t          j        g d          }t          j        |          }t          j        |          }t          j        ||          sJ d S )N)r   r!   r#   rU   rV   rX   r   r   s       r   test_line_different_node_typesz7TestGeneratorInverseLine.test_line_different_node_types  sV    M22233M!!!$$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   sN       - - -B- - -- - -- - -S S S& & &
9 9 9
- - -% % %
B B B
-B -B -B^	K 	K 	K& & && & && & && & && & && & && & && & & & &r   rP   c                   &    e Zd Zd Zd Zd Zd ZdS )TestGeneratorPrivateFunctionsc                     t          j                    }t          j        t           j        t
          j        |d           t          j        t           j        t
          j        |d           d S Nr   r"   )r
   r   r{   r|   r}   r   
_trianglesr~   s     r   test_triangles_errorz2TestGeneratorPrivateFunctions.test_triangles_error   sL    b&FCCCb&FCCCCCr   c                     t          j                    }t          j        t           j        t
          j        |d           t          j        t           j        t
          j        |d           d S )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%  sN    b&(:AyIIIb&(:AyIIIIIr   c                     t          j                    }t          j        t           j        t
          j        |d           t          j        t           j        t
          j        |d           d S r   )r
   r   r{   r|   r}   r   _select_starting_cellr~   s     r   test_select_starting_cell_errorz=TestGeneratorPrivateFunctions.test_select_starting_cell_error*  sN    b&(BAvNNNb&(BAvNNNNNr   c                     t          j                    j        D ]K}t          j        |          t                    dk    sJ t          fdD                       sJ Ld S )N)starting_edger#   c              3   B   K   | ]}D ]}||k    ||         v V  d S )NrN   ).0uvr   cells      r   	<genexpr>zCTestGeneratorPrivateFunctions.test_diamond_graph.<locals>.<genexpr>5  s;      GGQGG1QqAaDyGGr   )r
   r   r0   r   r   lenall)r   edger   r   s     @@r   test_diamond_graphz0TestGeneratorPrivateFunctions.test_diamond_graph/  s    G 	H 	HD-atDDDDt99>>>>GGGGG$GGGGGGGGG		H 	Hr   N)rK   rL   rM   r   r   r   r   rN   r   r   r   r     s^        D D D
J J J
O O O
H H H H Hr   r   )
r{   networkxr
   networkx.generatorsr   networkx.utilsr   r   rP   r   rN   r   r   <module>r      s         $ $ $ $ $ $ & & & & & &NL NL NL NL NL NL NL NLbC& C& C& C& C& C& C& C&LH H H H H H H H H Hr   