
    ިsgS                     @    d Z ddlZddlZ G d d      Z G d d      Zy)zAUnit tests for the :mod:`networkx.generators.duplication` module.    Nc                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	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 y )N      p*   r	   seed)nxduplication_divergence_graphlenselfGs     ]/var/www/html/venv/lib/python3.12/site-packages/networkx/generators/tests/test_duplication.pytest_final_sizez.TestDuplicationDivergenceGraph.test_final_size   sH    ++A31v{{++A<1v{{    c                     t        j                  t        j                        5  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nr      r   pytestraisesr   NetworkXErrorr   r   s    r   test_probability_too_largez9TestDuplicationDivergenceGraph.test_probability_too_large   s9    ]]2++, 	4++A3	4 	4 	4   AAc                     t        j                  t        j                        5  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   s    r   test_probability_too_smallz9TestDuplicationDivergenceGraph.test_probability_too_small   s9    ]]2++, 	5++A4	5 	5 	5r   c                     t        j                  ddd      }t        |      dk(  sJ t        |j	                               g dk(  sJ y )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   s@    ++A2>1v{{AHHJ#SSSSr   c                     t        j                  t        j                  d      5  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nz&.*n must be greater than or equal to 2matchr   r   r   r   s    r   test_minimum_desired_nodesz9TestDuplicationDivergenceGraph.test_minimum_desired_nodes"   sA    ]]$L
 	4 ++A3	4 	4 	4s   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        y # 1 sw Y   y xY w)Nc                       e Zd Zy)DTestDuplicationDivergenceGraph.test_create_using.<locals>.DummyGraphN__name__
__module____qualname__ r   r   
DummyGraphr0   )       r   r6   c                       e Zd Zy)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(   s    	 		2:: 	 ++As*U!Z(((]]2++3VW 	X++As,W	X 	X 	Xs   ?B""B+N)
r2   r3   r4   __doc__r   r   r!   r)   r-   rA   r5   r   r   r   r      s'    45T
4
Xr   r   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)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 y )N
   r&         ?r
   )r   r   partial_duplication_graphr   r   Nnr	   qr   s         r   r   z+TestPartialDuplicationGraph.test_final_size<   sd    ((Aq!41v{{((Aq!"=1v{{r   c                 d    d}d}d}d}t        j                  ||||      }t        |      |k(  sJ y )NrF   rG   rH   rJ   s         r   test_initial_clique_sizez4TestPartialDuplicationGraph.test_initial_clique_sizeF   s<    ((Aq!41v{{r   c                     t        j                  t        j                        5  d}d}d}d}t        j                  ||||      }d d d        y # 1 sw Y   y xY w)Nr&   rF   rG   r   r   r   r   rI   rJ   s         r   test_invalid_initial_sizez5TestPartialDuplicationGraph.test_invalid_initial_sizeN   sS    ]]2++, 	9AAAA,,Q1a8A	9 	9 	9s   !AAc                     d}d}dD ]>  \  }}||||f}t        j                  t        j                  t        j                  g|  @ y )Nr   ))rG   r   )rG   r    )r   rG   )r    rG   rQ   )r   rK   rL   r	   rM   argss         r   test_invalid_probabilitiesz6TestPartialDuplicationGraph.test_invalid_probabilitiesV   sM    > 	QDAqq!Q<DMM"**B,H,HP4P	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        y # 1 sw Y   y xY w)Nc                       e Zd Zy)ATestPartialDuplicationGraph.test_create_using.<locals>.DummyGraphNr1   r5   r   r   r6   rX   ^   r7   r   r6   c                       e Zd Zy)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!Z(((]]2++3VW 	U((QS|T	U 	U 	Us    B$$B-N)	r2   r3   r4   rB   r   rO   rR   rU   rA   r5   r   r   rD   rD   5   s"    9Q
Ur   rD   )rB   r   networkxr   r   rD   r5   r   r   <module>r\      s'    G  *X *XZ2U 2Ur   