
    ިsg                        d Z ddlZddlZddlmZmZ ddlmZm	Z	m
Z
mZmZmZ  G d d      Zd Zd Zej"                  j%                  d	 ej
                          ej&                  d
g      f      d        Z G d d      Z G d d      Zy)z:Generators - Directed Graphs
----------------------------
    N)GraphMultiDiGraph)gn_graph	gnc_graph	gnr_graphrandom_k_out_graphrandom_uniform_k_out_graphscale_free_graphc                       e Zd Zd Zd Zd Zy)TestGeneratorsDirectedc                     t        d       t        dd       t        d       t        d       t        dd       t        ddd       t        dd       t        dd       y )Nd         ?*   seed)r   r   r   r
   selfs    Z/var/www/html/venv/lib/python3.12/site-packages/networkx/generators/tests/test_directed.pytest_smoke_test_random_graphsz4TestGeneratorsDirected.test_smoke_test_random_graphs   sL    #s#2#s$#B2&    c                    t        j                  t        j                  t        dt                      t        j                  t        j                  t        ddt                      t        j                  t        j                  t        dt                      t	        dd      }t	        dt               d      }t        |j                               t        |j                               k(  sJ t        ddd      }t        ddt               d      }t        |j                               t        |j                               k(  sJ t        dd      }t        dt               d      }t        |j                               t        |j                               k(  sJ t        dddddd	t        j                  d
t              d      }t        j                  t        t        dddd       t        j                  t        t        dd       t        j                  t        t        dd       t        j                  t        t        dd       y )Nr   )create_usingr      r   )r   r   g333333?g?g?   )alphabetagammadelta_in	delta_outinitial_graphr   g333333ӿ)r   )r   )r   )pytestraisesnxNetworkXErrorr   r   r   r   r   sortededgesr
   cycle_graph
ValueError)r   GMGs      r   #test_create_using_keyword_argumentsz:TestGeneratorsDirected.test_create_using_keyword_arguments   s   b&&#EGLb&&	3%'Rb&&	3UWMSq!cQ?aggi F288:$6666c3Q'sCln1Eaggi F288:$6666c"sa@aggi F288:$6666..F	
 	j"2Cc3Gj"2CtDj"2CdCj"2CtDr   c                 b   t        j                         }|j                  d       d }t        j                  t	        d      |      sJ t        j                  t	        d|      |      sJ t        j                  t        d      |      sJ t        j                  t        dd      |      sJ y )Nr   c                     | S N )xs    r   kernelz6TestGeneratorsDirected.test_parameters.<locals>.kernel@   s    Hr   r   )r2   r   )r$   DiGraphadd_nodeis_isomorphicr   r   r   )r   r*   r2   s      r   test_parametersz&TestGeneratorsDirected.test_parameters<   s    JJL	

1	 Q///6 :A>>>	!a000	!S 11555r   N)__name__
__module____qualname__r   r,   r6   r0   r   r   r   r      s    	'E:
6r   r   c                      t        j                  t        d      5  t        dd       d d d        t        j                  t        d      5  t        dd       d d d        y # 1 sw Y   ;xY w# 1 sw Y   y xY w)Nzdelta_in must be >= 0.match
   )r   zdelta_out must be >= 0.)r    )r"   r#   r)   r
   r0   r   r   $test_scale_free_graph_negative_deltar?   I   sc    	z)A	B *b)*	z)B	C +r*+ +* *+ +s   A$A0$A-0A9c                      t        g d      } t        d|       }t        |      dk(  sJ t        |j                        dk(  sJ y )N))ab)rB   c)rC   rA      r!   )r   r
   lenr'   )r*   ss     r   test_non_numeric_orderingrH   P   s?    9:A!,Aq6Q;;qww<1r   ig)r   r   c                     t        j                  t        j                        5  t	        d|        d d d        y # 1 sw Y   y xY w)Nr   rE   )r"   r#   r$   r%   r
   )rI   s    r   )test_scale_free_graph_initial_graph_kwargrK   W   s3    	r''	( 0B/0 0 0s	   ;Ac                   "    e Zd ZdZd Zd Zd Zy)TestRandomKOutGraphz_Unit tests for the
    :func:`~networkx.generators.directed.random_k_out_graph` function.

    c                     d}dd}t        ||      }t        fd|j                         D              sJ t        ||d      }t        fd|j                         D              sJ y)	2Tests that the generated graph is `k`-out-regular.r=   rD   r   c              3   .   K   | ]  \  }}|k(    y wr/   r0   .0vdks      r   	<genexpr>z6TestRandomKOutGraph.test_regularity.<locals>.<genexpr>i        5da165   r   r   c              3   .   K   | ]  \  }}|k(    y wr/   r0   rQ   s      r   rV   z6TestRandomKOutGraph.test_regularity.<locals>.<genexpr>k   rW   rX   N)r   all
out_degree)r   nr   r*   rU   s       @r   test_regularityz#TestRandomKOutGraph.test_regularityc   sd    q!U+5alln5555q!U45alln5555r   c                 b    d}d}d}t        |||d      }t        j                  |      dk(  sJ y) Tests for forbidding self-loops.r=   rD   r   F
self_loopsr   N)r   r$   number_of_selfloops)r   r\   rU   r   r*   s        r   test_no_self_loopsz&TestRandomKOutGraph.test_no_self_loopsm   s:    q!Uu=%%a(A---r   c                 ~    t        j                  t        d      5  t        ddd       d d d        y # 1 sw Y   y xY w)Nzalpha must be positiver;   r=   rD   r>   )r"   r#   r)   r   r   s    r   test_negative_alphaz'TestRandomKOutGraph.test_negative_alphau   s2    ]]:-EF 	*r1b)	* 	* 	*s   3<N)r7   r8   r9   __doc__r]   rc   re   r0   r   r   rM   rM   ]   s    
6.*r   rM   c                   (    e Zd ZdZd Zd Zd Zd Zy)TestUniformRandomKOutGraphzkUnit tests for the
    :func:`~networkx.generators.directed.random_uniform_k_out_graph`
    function.

    c                     d}dt        |      }t        fd|j                         D              sJ t        |d      }t        fd|j                         D              sJ y)rO   r=   rD   c              3   .   K   | ]  \  }}|k(    y wr/   r0   rQ   s      r   rV   z=TestUniformRandomKOutGraph.test_regularity.<locals>.<genexpr>   rW   rX   r   r   c              3   .   K   | ]  \  }}|k(    y wr/   r0   rQ   s      r   rV   z=TestUniformRandomKOutGraph.test_regularity.<locals>.<genexpr>   rW   rX   N)r	   rZ   r[   r   r\   r*   rU   s      @r   r]   z*TestUniformRandomKOutGraph.test_regularity   s[    &q!,5alln5555&q!"55alln5555r   c                     d}dt        |d      }t        j                  |      dk(  sJ t        fd|j	                         D              sJ y)r_   r=   rD   Fr`   r   c              3   .   K   | ]  \  }}|k(    y wr/   r0   rQ   s      r   rV   z@TestUniformRandomKOutGraph.test_no_self_loops.<locals>.<genexpr>   rW   rX   N)r	   r$   rb   rZ   r[   rl   s      @r   rc   z-TestUniformRandomKOutGraph.test_no_self_loops   sN    &q!>%%a(A---5alln5555r   c                 8   d}dt        |d      }|j                         sJ t        fd|j                         D              sJ d}dt        |dd      }t	        j
                  |      d	k(  sJ t        fd
|j                         D              sJ y )Nr=   rD   Twith_replacementc              3   .   K   | ]  \  }}|k(    y wr/   r0   rQ   s      r   rV   zCTestUniformRandomKOutGraph.test_with_replacement.<locals>.<genexpr>   rW   rX   	   F)rq   ra   r   c              3   .   K   | ]  \  }}|k(    y wr/   r0   rQ   s      r   rV   zCTestUniformRandomKOutGraph.test_with_replacement.<locals>.<genexpr>   rW   rX   )r	   is_multigraphrZ   r[   r$   rb   rl   s      @r   test_with_replacementz0TestUniformRandomKOutGraph.test_with_replacement   s    &q!dC   5alln5555&q!ePUV%%a(A---5alln5555r   c                     d}dt        |d      }|j                         rJ t        fd|j                         D              sJ y )Nr=   rD   Frp   c              3   .   K   | ]  \  }}|k(    y wr/   r0   rQ   s      r   rV   zFTestUniformRandomKOutGraph.test_without_replacement.<locals>.<genexpr>   rW   rX   )r	   ru   rZ   r[   rl   s      @r   test_without_replacementz3TestUniformRandomKOutGraph.test_without_replacement   sE    &q!eD??$$$5alln5555r   N)r7   r8   r9   rf   r]   rc   rv   ry   r0   r   r   rh   rh   z   s    66
66r   rh   )rf   r"   networkxr$   networkx.classesr   r   networkx.generators.directedr   r   r   r   r	   r
   r   r?   rH   markparametrizer3   rK   rM   rh   r0   r   r   <module>r      s      0 36 36l+ 
JBJJx,@AB0 C0
* *:)6 )6r   