
    fi                          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
dS )z:Unit tests for the :mod:`networkx.algorithms.cuts` module.    Nc                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )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 dS )z%Tests that the cut size is symmetric.   r      r               r      r	   Nnxbarbell_graphcut_sizeselfGSTs       {/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/algorithms/tests/test_cuts.pytest_symmetriczTestCutSize.test_symmetric	   j    Q""IIII{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 dS )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                                          }h d}h d}t          j        |||          dk    sJ t          j        |||          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   s       r   test_directedzTestCutSize.test_directed   v    Q""..00IIII{1a##q(((({1a##q((((((r   c                     t          j        dd                                          }h d}h d}t          j        |||          dk    sJ t          j        |||          dk    sJ dS )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 dS )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)   s>    M4,''{1secU++q000000r   N)	__name__
__module____qualname____doc__r   r   r!   r%   r,    r   r   r   r      se        AA) ) )) ) )) ) )) ) )1 1 1 1 1r   r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )
TestVolumez5Unit tests for the :func:`~networkx.volume` function.c                 h    t          j        d          }t          j        |ddh          dk    sJ d S )Nr	   r   r   )r   cycle_graphvolumer+   s     r   
test_graphzTestVolume.test_graph2   s8    N1yQF##q((((((r   c                 l    t          j        g d          }t          j        |ddh          dk    sJ d S )Nr   r   r   r   r   r   )r   r   r   r   r   )r   DiGraphr6   r+   s     r   test_digraphzTestVolume.test_digraph6   s?    J77788yQF##q((((((r   c                     t          t          j        d                                                    }t          j        |dz            }t          j        |ddh          dk    sJ d S )Nr	   r   r   r   r$   )listr   r5   edgesr*   r6   r   rA   r   s      r   r,   zTestVolume.test_multigraph:   s_    R^A&&,,..//M%!)$$yQF##q((((((r   c                 v    g d}t          j        |dz            }t          j        |ddh          dk    sJ d S )Nr9   r   r   r   r	   )r   MultiDiGraphr6   rB   s      r   test_multidigraphzTestVolume.test_multidigraph?   sG    000OEAI&&y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 d S )Nr   r   r      r   )r   r   r6   r+   s     r   test_barbellzTestVolume.test_barbellD   s\    Q""yIII&&!++++yIII&&!++++++r   N)	r-   r.   r/   r0   r7   r>   r,   rE   rH   r1   r   r   r3   r3   /   se        ??) ) )) ) )) ) )
) ) )
, , , , ,r   r3   c                       e Zd ZdZd Zd ZdS )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 d S )Nr	   r   r         ?)r   
path_graphsetnormalized_cut_sizer   r   r   r   sizeexpecteds         r   r7   z TestNormalizedCutSize.test_graphM   sw    M!FFFQJ%aA..*421!Q7777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 d S )N)r:   r;   r<   r   r   g      @)r   r=   rN   rO   rP   s         r   r!   z#TestNormalizedCutSize.test_directedX   s~    J///00FFFQJ%aA..*421!Q77777777r   N)r-   r.   r/   r0   r7   r!   r1   r   r   rJ   rJ   J   s8        LL	8 	8 	8	8 	8 	8 	8 	8r   rJ   c                       e Zd ZdZd ZdS )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 d S )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   s    Q"" CCnQ1--;&&&&a##YY~b"%%......r   Nr-   r.   r/   r0   r7   r1   r   r   rU   rU   d   s)        DD/ / / / /r   rU   c                       e Zd ZdZd ZdS )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 d S )Nr   r   rW   )r   r   rN   rangeedge_expansionr   r   r   r   	expansionrR   s         r   r7   zTestEdgeExpansion.test_graphz   s    Q""aMMFFQJ%aA..	9$$$$2,Q22222222r   Nr[   r1   r   r   r]   r]   w   s)        GG3 3 3 3 3r   r]   c                       e Zd ZdZd ZdS )TestNodeExpansionz=Unit tests for the :func:`~networkx.node_expansion` function.c                 t    t          j        d          }h d}t          j        ||          }d}||k    sJ d S )Nr$   r   g?)r   rM   node_expansionr   r   r   rb   rR   s        r   r7   zTestNodeExpansion.test_graph   sJ    M!II%a++	 9$$$$$$r   Nr[   r1   r   r   rd   rd      s)        GG% % % % %r   rd   c                       e Zd ZdZd ZdS )TestBoundaryExpansionzAUnit tests for the :func:`~networkx.boundary_expansion` function.c                     t          j        d          }t          t          d                    }t          j        ||          }d}||k    sJ d S )N
   r	   rL   )r   complete_graphrN   r_   boundary_expansionrg   s        r   r7   z TestBoundaryExpansion.test_graph   sS    b!!aMM)!Q//	 9$$$$$$r   Nr[   r1   r   r   ri   ri      s)        KK% % % % %r   ri   c                       e Zd ZdZd ZdS )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 d S )Nr   r   gaa?)r   r   rN   r_   mixing_expansionra   s         r   r7   zTestMixingExpansion.test_graph   sf    Q""aMMFFQJ'1a00	 )9$$$$$$r   Nr[   r1   r   r   ro   ro      s)        II	% 	% 	% 	% 	%r   ro   )r0   networkxr   r   r3   rJ   rU   r]   rd   ri   ro   r1   r   r   <module>rs      sb   @ @    &1 &1 &1 &1 &1 &1 &1 &1R, , , , , , , ,68 8 8 8 8 8 8 84/ / / / / / / /&3 3 3 3 3 3 3 3
% 
% 
% 
% 
% 
% 
% 
%
% 
% 
% 
% 
% 
% 
% 
%% % % % % % % % % %r   