o
    ]ZhS                     @   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   Y/var/www/auris/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   listZ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&   r5   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 )Nr8   r9   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!   r8   r9   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   ))r9   r   )r9   r   )r   r9   )r   r9   rA   )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.   r8   r!   r9   )r/   r0   r$   )r
   r1   r2   r;   r3   r   r   r   r4   r   r   r   r5   ]   s   "z-TestPartialDuplicationGraph.test_create_usingN)	r)   r*   r+   r6   r   r@   rB   rD   r5   r   r   r   r   r7   5   s    
r7   )r6   r   Znetworkxr
   r   r7   r   r   r   r   <module>   s
    -