a
    œç1b  ã                   @   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                   @   s8   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   sL   t  dd¡}h d£}h d£}t  |||¡dks2J ‚t  |||¡dksHJ ‚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   úBlib/python3.9/site-packages/networkx/algorithms/tests/test_cuts.pyÚtest_symmetric
   s
    zTestCutSize.test_symmetricc                 C   sL   t  dd¡}h d£}h d£}t  |||¡dks2J ‚t  |||¡dksHJ ‚dS )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   s
    zTestCutSize.test_single_edgec                 C   sP   t  dd¡ ¡ }h d£}h d£}t  |||¡dks6J ‚t  |||¡dksLJ ‚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   s
    zTestCutSize.test_directedc                 C   sP   t  dd¡ ¡ }h d£}h d£}t  |||¡dks6J ‚t  |||¡dksLJ ‚dS )z2Tests that a cut in a directed graph is symmetric.r   r   r   r   é   Nr   r   r   r   r   Útest_directed_symmetric"   s
    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                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )Ú
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s8J ‚d S )Nr   r   r   r   r   )Úlistr   r(   Úedgesr    r)   ©r   r2   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 )Nr+   r   r   r   r   )r   ZMultiDiGraphr)   r3   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&   r*   r0   r"   r4   r6   r   r   r   r   r'   0   s   r'   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTestNormalizedCutSizezLUnit 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sPJ ‚d S )Nr   r   r   ç      ø?)r   Ú
path_graphÚsetÚnormalized_cut_size©r   r   r   r   ÚsizeÚexpectedr   r   r   r*   Q   s    
z TestNormalizedCutSize.test_graphc                 C   sX   t  g d¢¡}ddh}t|ƒ| }t  |||¡}d}||ks@J ‚|t  ||¡ksTJ ‚d S )N)r,   r-   r.   r   r   g      @)r   r/   r:   r;   r<   r   r   r   r   \   s    z#TestNormalizedCutSize.test_directedN)r#   r$   r%   r&   r*   r   r   r   r   r   r7   K   s   r7   c                   @   s   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s6J ‚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   rA   r>   ZG2ZS2r   r   r   r*   k   s    zTestConductance.test_graphN©r#   r$   r%   r&   r*   r   r   r   r   r?   h   s   r?   c                   @   s   e Zd ZdZdd„ ZdS )ÚTestEdgeExpansionz=Unit tests for the :func:`~networkx.edge_expansion` function.c                 C   sZ   t  dd¡}ttdƒƒ}t|ƒ| }t  |||¡}d}||ksBJ ‚|t  ||¡ksVJ ‚d S )Nr	   r   r@   )r   r   r:   ÚrangeZedge_expansion©r   r   r   r   Ú	expansionr>   r   r   r   r*   ~   s    zTestEdgeExpansion.test_graphNrB   r   r   r   r   rC   {   s   rC   c                   @   s   e Zd ZdZdd„ ZdS )Ú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   r9   Znode_expansion©r   r   r   rF   r>   r   r   r   r*   Œ   s
    
zTestNodeExpansion.test_graphNrB   r   r   r   r   rG   ‰   s   rG   c                   @   s   e Zd ZdZdd„ ZdS )ÚTestBoundaryExpansionzAUnit tests for the :func:`~networkx.boundary_expansion` function.c                 C   s6   t  d¡}ttdƒƒ}t  ||¡}d}||ks2J ‚d S )Né
   r   r8   )r   Zcomplete_graphr:   rD   Zboundary_expansionrH   r   r   r   r*   ™   s
    
z TestBoundaryExpansion.test_graphNrB   r   r   r   r   rI   –   s   rI   c                   @   s   e Zd ZdZdd„ ZdS )ÚTestMixingExpansionz?Unit tests for the :func:`~networkx.mixing_expansion` function.c                 C   sF   t  dd¡}ttdƒƒ}t|ƒ| }t  |||¡}d}||ksBJ ‚d S )Nr	   r   g†a†a˜?)r   r   r:   rD   Zmixing_expansionrE   r   r   r   r*   ¦   s    zTestMixingExpansion.test_graphNrB   r   r   r   r   rK   £   s   rK   )r&   Znetworkxr   r   r'   r7   r?   rC   rG   rI   rK   r   r   r   r   Ú<module>   s   )