o
    hS                     @   s4   d Z ddlZddlZG dd dZG dd dZdS )zAUnit tests for the :mod:`networkx.generators.duplication` module.    Nc                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )TestDuplicationDivergenceGraphzoUnit tests for the
    :func:`networkx.generators.duplication.duplication_divergence_graph`
    function.

    c                 C   sB   t jddd}t|dksJ t jdddd}t|dksJ d S )N      p*   r   seed)nxduplication_divergence_graphlenselfG r   ^/var/www/vscode/kcb/lib/python3.10/site-packages/networkx/generators/tests/test_duplication.pytest_final_size   s   z.TestDuplicationDivergenceGraph.test_final_sizec                 C   @   t tj tjddd W d    d S 1 sw   Y  d S )Nr      r   pytestraisesr
   NetworkXErrorr   r   r   r   r   test_probability_too_large      "z9TestDuplicationDivergenceGraph.test_probability_too_largec                 C   r   )Nr   r   r   r   r   r   r   test_probability_too_small   r   z9TestDuplicationDivergenceGraph.test_probability_too_smallc                 C   s<   t jdddd}t|dksJ t| g dksJ d S )N   333333?r   r   ))r   r   )r   r   )r   r   )r   r   )   r   )   r   )r
   r   r   listdegreer   r   r   r   "test_non_extreme_probability_value   s   zATestDuplicationDivergenceGraph.test_non_extreme_probability_valuec                 C   sD   t jtjdd tjddd W d    d S 1 sw   Y  d S )Nz&.*n must be greater than or equal to 2matchr   r   r   r   r   r   r   test_minimum_desired_nodes"   s
   "z9TestDuplicationDivergenceGraph.test_minimum_desired_nodesc                 C   s   G dd dt j}G dd dt j}t jddd|d}t||s"J tjt jd	d
 t jddd|d W d    d S 1 s?w   Y  d S )Nc                   @      e Zd ZdS )zDTestDuplicationDivergenceGraph.test_create_using.<locals>.DummyGraphN__name__
__module____qualname__r   r   r   r   
DummyGraph)       r-   c                   @   r(   )zFTestDuplicationDivergenceGraph.test_create_using.<locals>.DummyDiGraphNr)   r   r   r   r   DummyDiGraph,   r.   r/   r   r   r   )r	   create_using!create_using must not be directedr%   )r
   GraphDiGraphr   
isinstancer   r   r   r   r-   r/   r   r   r   r   test_create_using(   s   "z0TestDuplicationDivergenceGraph.test_create_usingN)
r*   r+   r,   __doc__r   r   r   r$   r'   r6   r   r   r   r   r      s    r   c                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )TestPartialDuplicationGraphzlUnit tests for the
    :func:`networkx.generators.duplication.partial_duplication_graph`
    function.

    c                 C   sX   d}d}d}d}t ||||}t||ksJ t j||||dd}t||ks*J d S )N
   r!         ?r   )r	   r
   partial_duplication_graphr   r   Nnr   qr   r   r   r   r   <   s   z+TestPartialDuplicationGraph.test_final_sizec                 C   s4   d}d}d}d}t ||||}t||ksJ d S )Nr9   r:   r;   r=   r   r   r   test_initial_clique_sizeF   s   z4TestPartialDuplicationGraph.test_initial_clique_sizec                 C   sR   t tj d}d}d}d}t||||}W d    d S 1 s"w   Y  d S )Nr!   r9   r:   r   r   r
   r   r<   r=   r   r   r   test_invalid_initial_sizeN   s   "z5TestPartialDuplicationGraph.test_invalid_initial_sizec                 C   s>   d}d}dD ]\}}||||f}t jtjtjg|R   qd S )Nr   ))r:   r   )r:   r   )r   r:   )r   r:   rB   )r   r>   r?   r   r@   argsr   r   r   test_invalid_probabilitiesV   s   z6TestPartialDuplicationGraph.test_invalid_probabilitiesc                 C   s   G dd dt j}G dd dt j}t jdddd|d}t||s#J tjt jd	d
 t jdddd|d W d    d S 1 sAw   Y  d S )Nc                   @   r(   )zATestPartialDuplicationGraph.test_create_using.<locals>.DummyGraphNr)   r   r   r   r   r-   ^   r.   r-   c                   @   r(   )zCTestPartialDuplicationGraph.test_create_using.<locals>.DummyDiGraphNr)   r   r   r   r   r/   a   r.   r/   r9   r!   r:   )r0   r1   r%   )r
   r2   r3   r<   r4   r   r   r   r5   r   r   r   r6   ]   s   "z-TestPartialDuplicationGraph.test_create_usingN)	r*   r+   r,   r7   r   rA   rC   rE   r6   r   r   r   r   r8   5   s    
r8   )r7   r   networkxr
   r   r8   r   r   r   r   <module>   s
    -