o
    ßË·e  ã                   @   s€   d Z ddlZG dd„ dƒZG dd„ dƒZG dd„ dƒZG d	d
„ d
ƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZ	G dd„ dƒZ
dS )z:Unit tests for the :mod:`networkx.algorithms.cuts` module.é    Nc                   @   ó8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚTestCutSizez7Unit tests for the :func:`~networkx.cut_size` function.c                 C   óL   t  dd¡}h d£}h d£}t  |||¡dksJ ‚t  |||¡dks$J ‚dS )z%Tests that the cut size is symmetric.é   r   ¾   r   é   é   ¾   é   r   é   r   N©ÚnxÚbarbell_graphÚcut_size©ÚselfÚGÚSÚT© r   úZ/var/www/ideatree/venv/lib/python3.10/site-packages/networkx/algorithms/tests/test_cuts.pyÚtest_symmetric
   ó
   zTestCutSize.test_symmetricc                 C   r   )z!Tests for a cut of a single edge.r   r   ¾   r   r   r
   ¾   r   r   r   r   Nr   r   r   r   r   Útest_single_edge   r   zTestCutSize.test_single_edgec                 C   óP   t  dd¡ ¡ }h d£}h d£}t  |||¡dksJ ‚t  |||¡dks&J ‚dS )z9Tests that each directed edge is counted once in the cut.r   r   r   r   r
   N©r   r   Úto_directedr   r   r   r   r   Útest_directed   ó
   zTestCutSize.test_directedc                 C   r   )z2Tests that a cut in a directed graph is symmetric.r   r   r   r	   é   Nr   r   r   r   r   Útest_directed_symmetric"   r    z#TestCutSize.test_directed_symmetricc                 C   s,   t  ddg¡}t  |dhdh¡dksJ ‚dS )z5Tests that parallel edges are each counted for a cut.ÚabÚaÚbr
   N)r   Ú
MultiGraphr   ©r   r   r   r   r   Útest_multigraph*   s   zTestCutSize.test_multigraphN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r"   r(   r   r   r   r   r      s    r   c                   @   r   )Ú
TestVolumez5Unit tests for the :func:`~networkx.volume` function.c                 C   s&   t  d¡}t  |ddh¡dksJ ‚d S )Nr   r   r   )r   Úcycle_graphÚvolumer'   r   r   r   Ú
test_graph3   s   
zTestVolume.test_graphc                 C   s*   t  g d¢¡}t  |ddh¡dksJ ‚d S )N©©r   r   ©r   r
   ©r
   r   )r   r   r   r   r
   )r   ÚDiGraphr/   r'   r   r   r   Útest_digraph7   s   zTestVolume.test_digraphc                 C   s<   t t d¡ ¡ ƒ}t |d ¡}t |ddh¡dksJ ‚d S )Nr   r
   r   r   r!   )Úlistr   r.   Úedgesr&   r/   ©r   r8   r   r   r   r   r(   ;   s   zTestVolume.test_multigraphc                 C   s2   g d¢}t  |d ¡}t  |ddh¡dksJ ‚d S )Nr1   r
   r   r   r   )r   ÚMultiDiGraphr/   r9   r   r   r   Útest_multidigraph@   s   zTestVolume.test_multidigraphc                 C   s@   t  dd¡}t  |h d£¡dksJ ‚t  |h d£¡dksJ ‚d S )Nr   r   r   é   r   )r   r   r/   r'   r   r   r   Útest_barbellE   s   zTestVolume.test_barbellN)	r)   r*   r+   r,   r0   r6   r(   r;   r=   r   r   r   r   r-   0   s    r-   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTestNormalizedCutSizezBUnit tests for the :func:`~networkx.normalized_cut_size` function.c                 C   sT   t  d¡}ddh}t|ƒ| }t  |||¡}d}||ksJ ‚|t  ||¡ks(J ‚d S )Nr   r   r
   ç      ø?)r   Ú
path_graphÚsetÚnormalized_cut_size©r   r   r   r   ÚsizeÚexpectedr   r   r   r0   N   s   
z TestNormalizedCutSize.test_graphc                 C   sX   t  g d¢¡}ddh}t|ƒ| }t  |||¡}d}||ks J ‚|t  ||¡ks*J ‚d S )N)r2   r3   r4   r   r
   g      @)r   r5   rA   rB   rC   r   r   r   r   Y   s   z#TestNormalizedCutSize.test_directedN)r)   r*   r+   r,   r0   r   r   r   r   r   r>   K   s    r>   c                   @   ó   e Zd ZdZdd„ ZdS )ÚTestConductancez:Unit tests for the :func:`~networkx.conductance` function.c                 C   sb   t  dd¡}dh}dh}t  |||¡}d}||ksJ ‚t  dd¡}h d£}t  ||¡dks/J ‚d S )Nr   r   r   çš™™™™™É?r   r   g’$I’$IÂ?)r   r   Úconductance)r   r   r   r   rI   rE   ÚG2ÚS2r   r   r   r0   h   s   zTestConductance.test_graphN©r)   r*   r+   r,   r0   r   r   r   r   rG   e   ó    rG   c                   @   rF   )ÚTestEdgeExpansionz=Unit tests for the :func:`~networkx.edge_expansion` function.c                 C   sZ   t  dd¡}ttdƒƒ}t|ƒ| }t  |||¡}d}||ks!J ‚|t  ||¡ks+J ‚d S )Nr   r   rH   )r   r   rA   ÚrangeÚedge_expansion©r   r   r   r   Ú	expansionrE   r   r   r   r0   {   s   zTestEdgeExpansion.test_graphNrL   r   r   r   r   rN   x   rM   rN   c                   @   rF   )ÚTestNodeExpansionz=Unit tests for the :func:`~networkx.node_expansion` function.c                 C   s2   t  d¡}h d£}t  ||¡}d}||ksJ ‚d S )Nr!   r   g«ªªªªªú?)r   r@   Únode_expansion©r   r   r   rR   rE   r   r   r   r0   ‰   s
   
zTestNodeExpansion.test_graphNrL   r   r   r   r   rS   †   rM   rS   c                   @   rF   )ÚTestBoundaryExpansionzAUnit tests for the :func:`~networkx.boundary_expansion` function.c                 C   s6   t  d¡}ttdƒƒ}t  ||¡}d}||ksJ ‚d S )Né
   r   r?   )r   Úcomplete_graphrA   rO   Úboundary_expansionrU   r   r   r   r0   –   s
   
z TestBoundaryExpansion.test_graphNrL   r   r   r   r   rV   “   rM   rV   c                   @   rF   )ÚTestMixingExpansionz?Unit tests for the :func:`~networkx.mixing_expansion` function.c                 C   sF   t  dd¡}ttdƒƒ}t|ƒ| }t  |||¡}d}||ks!J ‚d S )Nr   r   g†a†a˜?)r   r   rA   rO   Úmixing_expansionrQ   r   r   r   r0   £   s   zTestMixingExpansion.test_graphNrL   r   r   r   r   rZ       rM   rZ   )r,   Únetworkxr   r   r-   r>   rG   rN   rS   rV   rZ   r   r   r   r   Ú<module>   s    )