o
    h                     @   s   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 dZdd Zd	d
 Zejde edgfdd ZG dd dZG dd dZdS )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                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestGeneratorsDirectedc                 C   sX   t d tdd td td t ddd tdddd tddd tddd d S )Nd         ?*   seed)r   r   r   r	   self r   [/var/www/vscode/kcb/lib/python3.10/site-packages/networkx/generators/tests/test_directed.pytest_smoke_test_random_graphs   s   
z4TestGeneratorsDirected.test_smoke_test_random_graphsc                 C   s`  t jtjtdt d t jtjtddt d t jtjtdt d tddd}tdt dd}t	|
 t	|
 ks>J tdddd}tddt dd}t	|
 t	|
 ks\J tddd}tdt dd}t	|
 t	|
 ksxJ tdddddd	tjd
tddd}t ttdddd t jttddd t jttddd t jttddd d S )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MGr   r   r   #test_create_using_keyword_arguments   s4   
z:TestGeneratorsDirected.test_create_using_keyword_argumentsc                 C   st   t  }|d dd }t td|sJ t td|d|s#J t td|s-J t tdd|s8J d S )Nr   c                 S   s   | S Nr   )xr   r   r   kernel@   s   z6TestGeneratorsDirected.test_parameters.<locals>.kernelr   )r+   r   )r    DiGraphadd_nodeis_isomorphicr   r   r   )r   r&   r+   r   r   r   test_parameters<   s   
z&TestGeneratorsDirected.test_parametersN)__name__
__module____qualname__r   r(   r/   r   r   r   r   r
      s    r
   c                   C   sz   t jtdd tddd W d    n1 sw   Y  t jtdd tddd W d    d S 1 s6w   Y  d S )Nzdelta_in must be >= 0.match
   )r   zdelta_out must be >= 0.)r   )r   r   r%   r	   r   r   r   r   $test_scale_free_graph_negative_deltaI   s   "r7   c                  C   s>   t g d} td| d}t|dksJ t|jdksJ d S )N))ab)r9   c)r:   r8      r   )r   r	   lenr#   )r&   sr   r   r   test_non_numeric_orderingP   s   r?   ig)r   r   c                 C   s>   t tj td| d W d    d S 1 sw   Y  d S )Nr   r<   )r   r   r    r!   r	   )r@   r   r   r   )test_scale_free_graph_initial_graph_kwargW   s   "rA   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestRandomKOutGraphz_Unit tests for the
    :func:`~networkx.generators.directed.random_k_out_graph` function.

    c                    sh   d}d d}t | |}t fdd| D sJ t | |dd}t fdd| D s2J d	S )
2Tests that the generated graph is `k`-out-regular.r5   r;   r   c                 3       | ]	\}}| kV  qd S r)   r   .0vdkr   r   	<genexpr>i       z6TestRandomKOutGraph.test_regularity.<locals>.<genexpr>r   r   c                 3   rD   r)   r   rE   rI   r   r   rK   k   rL   N)r   all
out_degree)r   nr   r&   r   rI   r   test_regularityc   s   "z#TestRandomKOutGraph.test_regularityc                 C   s2   d}d}d}t |||dd}t|dksJ dS ) Tests for forbidding self-loops.r5   r;   r   F
self_loopsr   N)r   r    number_of_selfloops)r   rO   rJ   r   r&   r   r   r   test_no_self_loopsm   s
   z&TestRandomKOutGraph.test_no_self_loopsc                 C   s@   t jtdd tddd W d    d S 1 sw   Y  d S )Nzalpha must be positiver3   r5   r;   r6   )r   r   r%   r   r   r   r   r   test_negative_alphau   s   "z'TestRandomKOutGraph.test_negative_alphaN)r0   r1   r2   __doc__rP   rU   rV   r   r   r   r   rB   ]   s
    
rB   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )TestUniformRandomKOutGraphzkUnit tests for the
    :func:`~networkx.generators.directed.random_uniform_k_out_graph`
    function.

    c                    s`   d}d t | }t fdd| D sJ t | dd}t fdd| D s.J dS )	rC   r5   r;   c                 3   rD   r)   r   rE   rI   r   r   rK      rL   z=TestUniformRandomKOutGraph.test_regularity.<locals>.<genexpr>r   r   c                 3   rD   r)   r   rE   rI   r   r   rK      rL   N)r   rM   rN   r   rO   r&   r   rI   r   rP      s   
"z*TestUniformRandomKOutGraph.test_regularityc                    sJ   d}d t | dd}t|dksJ t fdd| D s#J dS )	rQ   r5   r;   FrR   r   c                 3   rD   r)   r   rE   rI   r   r   rK      rL   z@TestUniformRandomKOutGraph.test_no_self_loops.<locals>.<genexpr>N)r   r    rT   rM   rN   rY   r   rI   r   rU      s
   "z-TestUniformRandomKOutGraph.test_no_self_loopsc                    s   d}d t | dd}| sJ t fdd| D s J d}d t | ddd	}t|d
ks5J t fdd| D sDJ d S )Nr5   r;   Twith_replacementc                 3   rD   r)   r   rE   rI   r   r   rK      rL   zCTestUniformRandomKOutGraph.test_with_replacement.<locals>.<genexpr>	   F)r[   rS   r   c                 3   rD   r)   r   rE   rI   r   r   rK      rL   )r   is_multigraphrM   rN   r    rT   rY   r   rI   r   test_with_replacement   s   "z0TestUniformRandomKOutGraph.test_with_replacementc                    sD   d}d t | dd}| rJ t fdd| D s J d S )Nr5   r;   FrZ   c                 3   rD   r)   r   rE   rI   r   r   rK      rL   zFTestUniformRandomKOutGraph.test_without_replacement.<locals>.<genexpr>)r   r]   rM   rN   rY   r   rI   r   test_without_replacement   s
   "z3TestUniformRandomKOutGraph.test_without_replacementN)r0   r1   r2   rW   rP   rU   r^   r_   r   r   r   r   rX   z   s    	rX   )rW   r   networkxr    networkx.classesr   r   networkx.generators.directedr   r   r   r   r   r	   r
   r7   r?   markparametrizer,   rA   rB   rX   r   r   r   r   <module>   s     
6
