
    fiS                     N    d Z ddlZddlZ G d d          Z G d d          ZdS )zAUnit tests for the :mod:`networkx.generators.duplication` module.    Nc                   6    e Zd ZdZd Zd Zd Zd Zd Zd Z	dS )	TestDuplicationDivergenceGraphzoUnit tests for the
    :func:`networkx.generators.duplication.duplication_divergence_graph`
    function.

    c                     t          j        dd          }t          |          dk    sJ t          j        ddd          }t          |          dk    sJ d S )N      p*   r	   seed)nxduplication_divergence_graphlenselfGs     /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/generators/tests/test_duplication.pytest_final_sizez.TestDuplicationDivergenceGraph.test_final_size   sX    +A3331vv{{{{+A<<<1vv{{{{{{    c                     t          j        t          j                  5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nr      r   pytestraisesr   NetworkXErrorr   r   s    r   test_probability_too_largez9TestDuplicationDivergenceGraph.test_probability_too_large   s    ]2+,, 	4 	4+A3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4   AA
Ac                     t          j        t          j                  5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   s    r   test_probability_too_smallz9TestDuplicationDivergenceGraph.test_probability_too_small   s    ]2+,, 	5 	5+A4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r   c                     t          j        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   s     r   "test_non_extreme_probability_valuezATestDuplicationDivergenceGraph.test_non_extreme_probability_value   sZ    +A2>>>1vv{{{{AHHJJ#S#S#SSSSSSSr   c                     t          j        t          j        d          5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nz&.*n must be greater than or equal to 2matchr   r   r   r   s    r   test_minimum_desired_nodesz9TestDuplicationDivergenceGraph.test_minimum_desired_nodes"   s    ]$L
 
 
 	4 	4 +A3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   AA	A	c                 \    G d dt           j                  } G d dt           j                  }t          j        ddd|          }t	          ||          sJ t          j        t           j        d	
          5  t          j        ddd|           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )DTestDuplicationDivergenceGraph.test_create_using.<locals>.DummyGraphN__name__
__module____qualname__ r   r   
DummyGraphr0   )           Dr   r6   c                       e Zd ZdS )FTestDuplicationDivergenceGraph.test_create_using.<locals>.DummyDiGraphNr1   r5   r   r   DummyDiGraphr9   ,   r7   r   r:   r#   r$   r
   )r   create_using!create_using must not be directedr+   )r   GraphDiGraphr   
isinstancer   r   r   r   r6   r:   r   s       r   test_create_usingz0TestDuplicationDivergenceGraph.test_create_using(   s6   	 	 	 	 	 	 	 		 	 	 	 	2: 	 	 	 +As*UUU!Z(((((]2+3VWWW 	X 	X+As,WWWW	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	Xs   ;B!!B%(B%N)
r2   r3   r4   __doc__r   r   r!   r)   r-   rA   r5   r   r   r   r      s           4 4 45 5 5T T T
4 4 4
X 
X 
X 
X 
Xr   r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )TestPartialDuplicationGraphzlUnit tests for the
    :func:`networkx.generators.duplication.partial_duplication_graph`
    function.

    c                     d}d}d}d}t          j        ||||          }t          |          |k    sJ t          j        ||||d          }t          |          |k    sJ d S )N
   r&         ?r
   )r   r   partial_duplication_graphr   r   Nnr	   qr   s         r   r   z+TestPartialDuplicationGraph.test_final_size<   sq    (Aq!441vv{{{{(Aq!"===1vv{{{{{{r   c                 n    d}d}d}d}t          j        ||||          }t          |          |k    sJ d S )NrF   rG   rH   rJ   s         r   test_initial_clique_sizez4TestPartialDuplicationGraph.test_initial_clique_sizeF   sC    (Aq!441vv{{{{{{r   c                     t          j        t          j                  5  d}d}d}d}t          j        ||||          }d d d            d S # 1 swxY w Y   d S )Nr&   rF   rG   r   r   r   r   rI   rJ   s         r   test_invalid_initial_sizez5TestPartialDuplicationGraph.test_invalid_initial_sizeN   s    ]2+,, 	9 	9AAAA,Q1a88A	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s    AAAc                 x    d}d}dD ]2\  }}||||f}t          j        t          j        t          j        g|R   3d S )Nr   ))rG   r   )rG   r    )r   rG   )r    rG   rQ   )r   rK   rL   r	   rM   argss         r   test_invalid_probabilitiesz6TestPartialDuplicationGraph.test_invalid_probabilitiesV   s]    > 	Q 	QDAqq!Q<DM"*B,HP4PPPPP	Q 	Qr   c                 `    G d dt           j                  } G d dt           j                  }t          j        dddd|          }t	          ||          sJ t          j        t           j        d	
          5  t          j        dddd|           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdS )ATestPartialDuplicationGraph.test_create_using.<locals>.DummyGraphNr1   r5   r   r   r6   rX   ^   r7   r   r6   c                       e Zd ZdS )CTestPartialDuplicationGraph.test_create_using.<locals>.DummyDiGraphNr1   r5   r   r   r:   rZ   a   r7   r   r:   rF   r&   rG   )r;   r<   r+   )r   r=   r>   rI   r?   r   r   r   r@   s       r   rA   z-TestPartialDuplicationGraph.test_create_using]   s:   	 	 	 	 	 	 	 		 	 	 	 	2: 	 	 	 (QSzRRR!Z(((((]2+3VWWW 	U 	U(QS|TTTT	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	Us   <B##B'*B'N)	r2   r3   r4   rB   r   rO   rR   rU   rA   r5   r   r   rD   rD   5   sq             9 9 9Q Q Q
U 
U 
U 
U 
Ur   rD   )rB   r   networkxr   r   rD   r5   r   r   <module>r\      s    G G     *X *X *X *X *X *X *X *XZ2U 2U 2U 2U 2U 2U 2U 2U 2U 2Ur   