
    wg                          d Z ddlZ G d d      Z G d d      Z G d d      Z G d	 d
      Z G d d      Z G d d      Z G d d      Z	 G d d      Z
y)z:Unit tests for the :mod:`networkx.algorithms.cuts` module.    Nc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)TestCutSizez7Unit tests for the :func:`~networkx.cut_size` function.c                     t        j                  dd      }h d}h d}t        j                  |||      dk(  sJ t        j                  |||      dk(  sJ y)z%Tests that the cut size is symmetric.   r      r               r      r	   Nnxbarbell_graphcut_sizeselfGSTs       h/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_cuts.pytest_symmetriczTestCutSize.test_symmetric	   T    Q"{{1a#q((({{1a#q(((    c                     t        j                  dd      }h d}h d}t        j                  |||      dk(  sJ t        j                  |||      dk(  sJ y)z!Tests for a cut of a single edge.r   r      r   r   r      r   r	   r   r   Nr   r   s       r   test_single_edgezTestCutSize.test_single_edge   r   r   c                     t        j                  dd      j                         }h d}h d}t        j                  |||      dk(  sJ t        j                  |||      dk(  sJ y)z9Tests that each directed edge is counted once in the cut.r   r   r   r   r   Nr   r   to_directedr   r   s       r   test_directedzTestCutSize.test_directed   ]    Q"..0{{1a#q((({{1a#q(((r   c                     t        j                  dd      j                         }h d}h d}t        j                  |||      dk(  sJ t        j                  |||      dk(  sJ y)z2Tests that a cut in a directed graph is symmetric.r   r   r   r
      Nr   r   s       r   test_directed_symmetricz#TestCutSize.test_directed_symmetric!   r"   r   c                 n    t        j                  ddg      }t        j                  |dhdh      dk(  sJ y)z5Tests that parallel edges are each counted for a cut.ababr   N)r   
MultiGraphr   r   r   s     r   test_multigraphzTestCutSize.test_multigraph)   s3    MM4,'{{1secU+q000r   N)	__name__
__module____qualname____doc__r   r   r!   r%   r,    r   r   r   r      s    A))))1r   r   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)
TestVolumez5Unit tests for the :func:`~networkx.volume` function.c                 h    t        j                  d      }t        j                  |ddh      dk(  sJ y )Nr	   r   r   )r   cycle_graphvolumer+   s     r   
test_graphzTestVolume.test_graph2   s-    NN1yyQF#q(((r   c                 l    t        j                  g d      }t        j                  |ddh      dk(  sJ y )Nr   r   r   r   r   r   )r   r   r   r   r   )r   DiGraphr6   r+   s     r   test_digraphzTestVolume.test_digraph6   s.    JJ78yyQF#q(((r   c                     t        t        j                  d      j                               }t        j                  |dz        }t        j
                  |ddh      dk(  sJ y )Nr	   r   r   r   r$   )listr   r5   edgesr*   r6   r   rA   r   s      r   r,   zTestVolume.test_multigraph:   sM    R^^A&,,./MM%!)$yyQF#q(((r   c                 v    g d}t        j                  |dz        }t        j                  |ddh      dk(  sJ y )Nr9   r   r   r   r	   )r   MultiDiGraphr6   rB   s      r   test_multidigraphzTestVolume.test_multidigraph?   s6    0OOEAI&yyQF#q(((r   c                     t        j                  dd      }t        j                  |h d      dk(  sJ t        j                  |h d      dk(  sJ y )Nr   r   r      r   )r   r   r6   r+   s     r   test_barbellzTestVolume.test_barbellD   sF    Q"yyI&!+++yyI&!+++r   N)	r-   r.   r/   r0   r7   r>   r,   rE   rH   r1   r   r   r3   r3   /   s    ?)))
)
,r   r3   c                       e Zd ZdZd Zd Zy)TestNormalizedCutSizezBUnit tests for the :func:`~networkx.normalized_cut_size` function.c                     t        j                  d      }ddh}t        |      |z
  }t        j                  |||      }d}||k(  sJ |t        j                  ||      k(  sJ y )Nr	   r   r         ?)r   
path_graphsetnormalized_cut_sizer   r   r   r   sizeexpecteds         r   r7   z TestNormalizedCutSize.test_graphM   sh    MM!FFQJ%%aA.*4211!Q7777r   c                     t        j                  g d      }ddh}t        |      |z
  }t        j                  |||      }d}||k(  sJ |t        j                  ||      k(  sJ y )N)r:   r;   r<   r   r   g      @)r   r=   rN   rO   rP   s         r   r!   z#TestNormalizedCutSize.test_directedX   si    JJ/0FFQJ%%aA.*4211!Q7777r   N)r-   r.   r/   r0   r7   r!   r1   r   r   rJ   rJ   J   s    L	8	8r   rJ   c                       e Zd ZdZd Zy)TestConductancez:Unit tests for the :func:`~networkx.conductance` function.c                     t        j                  dd      }dh}dh}t        j                  |||      }d}||k(  sJ t        j                  dd      }h d}t        j                  ||      dk(  sJ y )Nr   r   r	   皙?r   r   g$I$I?)r   r   conductance)r   r   r   r   rX   rR   G2S2s           r   r7   zTestConductance.test_graphg   sy    Q" CCnnQ1-;&&&a#~~b"%...r   Nr-   r.   r/   r0   r7   r1   r   r   rU   rU   d   s
    D/r   rU   c                       e Zd ZdZd Zy)TestEdgeExpansionz=Unit tests for the :func:`~networkx.edge_expansion` function.c                     t        j                  dd      }t        t        d            }t        |      |z
  }t        j                  |||      }d}||k(  sJ |t        j                  ||      k(  sJ y )Nr   r   rW   )r   r   rN   rangeedge_expansionr   r   r   r   	expansionrR   s         r   r7   zTestEdgeExpansion.test_graphz   sp    Q"aMFQJ%%aA.	9$$$2,,Q2222r   Nr[   r1   r   r   r]   r]   w   s
    G3r   r]   c                       e Zd ZdZd Zy)TestNodeExpansionz=Unit tests for the :func:`~networkx.node_expansion` function.c                 t    t        j                  d      }h d}t        j                  ||      }d}||k(  sJ y )Nr$   r   g?)r   rM   node_expansionr   r   r   rb   rR   s        r   r7   zTestNodeExpansion.test_graph   s<    MM!%%a+	 9$$$r   Nr[   r1   r   r   rd   rd      s
    G%r   rd   c                       e Zd ZdZd Zy)TestBoundaryExpansionzAUnit tests for the :func:`~networkx.boundary_expansion` function.c                     t        j                  d      }t        t        d            }t        j                  ||      }d}||k(  sJ y )N
   r	   rL   )r   complete_graphrN   r_   boundary_expansionrg   s        r   r7   z TestBoundaryExpansion.test_graph   sF    b!aM))!Q/	 9$$$r   Nr[   r1   r   r   ri   ri      s
    K%r   ri   c                       e Zd ZdZd Zy)TestMixingExpansionz?Unit tests for the :func:`~networkx.mixing_expansion` function.c                     t        j                  dd      }t        t        d            }t        |      |z
  }t        j                  |||      }d}||k(  sJ y )Nr   r   gaa?)r   r   rN   r_   mixing_expansionra   s         r   r7   zTestMixingExpansion.test_graph   sW    Q"aMFQJ''1a0	 )9$$$r   Nr[   r1   r   r   ro   ro      s
    I	%r   ro   )r0   networkxr   r   r3   rJ   rU   r]   rd   ri   ro   r1   r   r   <module>rs      s\    @ &1 &1R, ,68 84/ /&3 3
% 
%
% 
%% %r   