o
    &?e                     @   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   h/home/www/facesmatcher.com/pyenv/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	   Zcycle_graph
ValueError)r   GZ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_nodeZ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_deltaH   s   "r4   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)r6   c)r7   r5      r   )r   r	   lenr#   )r%   sr   r   r   test_non_numeric_orderingO   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   r9   )r   r   r    r!   r	   )r=   r   r   r   )test_scale_free_graph_initial_graph_kwargV   s   "r>   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.r2   r8   r   c                 3       | ]	\}}| kV  qd S r'   r   .0vdkr   r   	<genexpr>h       z6TestRandomKOutGraph.test_regularity.<locals>.<genexpr>r   r   c                 3   rA   r'   r   rB   rF   r   r   rH   j   rI   N)r   all
out_degree)r   nr   r%   r   rF   r   test_regularityb   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.r2   r8   r   F
self_loopsr   N)r   r    number_of_selfloops)r   rL   rG   r   r%   r   r   r   test_no_self_loopsl   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 positiver0   r2   r8   r3   )r   r   r$   r   r   r   r   r   test_negative_alphat   s   "z'TestRandomKOutGraph.test_negative_alphaN)r-   r.   r/   __doc__rM   rR   rS   r   r   r   r   r?   \   s
    
r?   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 )	r@   r2   r8   c                 3   rA   r'   r   rB   rF   r   r   rH      rI   z=TestUniformRandomKOutGraph.test_regularity.<locals>.<genexpr>r   r   c                 3   rA   r'   r   rB   rF   r   r   rH      rI   N)r   rJ   rK   r   rL   r%   r   rF   r   rM      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 )	rN   r2   r8   FrO   r   c                 3   rA   r'   r   rB   rF   r   r   rH      rI   z@TestUniformRandomKOutGraph.test_no_self_loops.<locals>.<genexpr>N)r   r    rQ   rJ   rK   rV   r   rF   r   rR      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 )Nr2   r8   Twith_replacementc                 3   rA   r'   r   rB   rF   r   r   rH      rI   zCTestUniformRandomKOutGraph.test_with_replacement.<locals>.<genexpr>	   F)rX   rP   r   c                 3   rA   r'   r   rB   rF   r   r   rH      rI   )r   is_multigraphrJ   rK   r    rQ   rV   r   rF   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 )Nr2   r8   FrW   c                 3   rA   r'   r   rB   rF   r   r   rH      rI   zFTestUniformRandomKOutGraph.test_without_replacement.<locals>.<genexpr>)r   rZ   rJ   rK   rV   r   rF   r   test_without_replacement   s
   "z3TestUniformRandomKOutGraph.test_without_replacementN)r-   r.   r/   rT   rM   rR   r[   r\   r   r   r   r   rU   y   s    	rU   )rT   r   Znetworkxr    Znetworkx.classesr   r   Znetworkx.generators.directedr   r   r   r   r   r	   r
   r4   r<   markZparametrizer*   r>   r?   rU   r   r   r   r   <module>   s     
6
