o
    ]ZŽh   ã                   @   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   úR/var/www/auris/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   Z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_graph2   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_digraph6   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   r7   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 )Nr0   r
   r   r   r   )r   ZMultiDiGraphr.   r8   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_barbellD   s   zTestVolume.test_barbellN)	r(   r)   r*   r+   r/   r5   r'   r9   r;   r   r   r   r   r,   /   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   r/   M   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)r1   r2   r3   r   r
   g      @)r   r4   r?   r@   rA   r   r   r   r   X   s   z#TestNormalizedCutSize.test_directedN)r(   r)   r*   r+   r/   r   r   r   r   r   r<   J   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   rG   rC   ZG2ZS2r   r   r   r/   g   s   zTestConductance.test_graphN©r(   r)   r*   r+   r/   r   r   r   r   rE   d   ó    rE   c                   @   rD   )Ú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   rF   )r   r   r?   ÚrangeZedge_expansion©r   r   r   r   Ú	expansionrC   r   r   r   r/   z   s   zTestEdgeExpansion.test_graphNrH   r   r   r   r   rJ   w   rI   rJ   c                   @   rD   )Ú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>   Znode_expansion©r   r   r   rM   rC   r   r   r   r/   ˆ   s
   
zTestNodeExpansion.test_graphNrH   r   r   r   r   rN   …   rI   rN   c                   @   rD   )Ú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   Zcomplete_graphr?   rK   Zboundary_expansionrO   r   r   r   r/   •   s
   
z TestBoundaryExpansion.test_graphNrH   r   r   r   r   rP   ’   rI   rP   c                   @   rD   )Ú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   r?   rK   Zmixing_expansionrL   r   r   r   r/   ¢   s   zTestMixingExpansion.test_graphNrH   r   r   r   r   rR   Ÿ   rI   rR   )r+   Znetworkxr   r   r,   r<   rE   rJ   rN   rP   rR   r   r   r   r   Ú<module>   s    )