o
    3ήcj                     @   sN   d Z ddlmZ ddlZddlmZ dd Zdd Zd	d
 Z	G dd dZ
dS )zLUnit tests for the :mod:`networkx.algorithms.community.centrality`
module.

    )
itemgetterN)girvan_newmanc                 C   s   t tt| S N)setmap	frozenset)iterable r	   Z/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/community/tests/test_centrality.pyset_of_sets   s   r   c                 C   s   t | t |ks
J d S r   r   resultexpectedr	   r	   r
   validate_communities   s   r   c                    s   t  fdd|D sJ d S )Nc                 3   s     | ]}t  t |kV  qd S r   r   ).0pr   r	   r
   	<genexpr>   s    z0validate_possible_communities.<locals>.<genexpr>)anyr   r	   r   r
   validate_possible_communities   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 )TestGirvanNewmanziUnit tests for the
    :func:`networkx.algorithms.community.centrality.girvan_newman`
    function.

    c                 C   sD   t d}tt|}t|dksJ t|d dhdhdhg d S )N      r      )nxempty_graphlistr   lenr   selfGcommunitiesr	   r	   r
   test_no_edges   s   
zTestGirvanNewman.test_no_edgesc                 C   s   t d}tt|}t|dksJ t|d ddhddhg t|d dhdhddhgddhdhdhg t|d dhdhdhdhg d S N   r   r   r   r   )r   
path_graphr   r   r   r   r   r   r	   r	   r
   test_undirected$   s   
&"z TestGirvanNewman.test_undirectedc                 C   s   t t d}tt|}t|dksJ t|d ddhddhg t|d dhdhddhgddhdhdhg t|d dhdhdhdhg d S r$   )r   DiGraphr&   r   r   r   r   r   r   r	   r	   r
   test_directed3   s   &"zTestGirvanNewman.test_directedc                 C   s   t d}|dd |dd tt|}t|dksJ t|d ddhddhg t|d dhdhddhgddhdhdhg t|d dhdhdhdhg d S )Nr%   r   r   r   r   )r   r&   add_edger   r   r   r   r   r   r	   r	   r
   test_selfloops=   s   
&"zTestGirvanNewman.test_selfloopsc                 C   s   t  }|g d dd }tt||}t|dksJ t|d dhh dg t|d dhdhddhg t|d dhdhdhdhg d S )	N))r   r   r   )r   r   r   )r   r   r   c                 S   s    t | jddtddd d S )Nweight)datar   )key)maxedgesr   )r!   r	   r	   r
   heaviestN   s    z:TestGirvanNewman.test_most_valuable_edge.<locals>.heaviestr   r   >   r   r   r   r   r   )r   Graphadd_weighted_edges_fromr   r   r   r   )r    r!   r1   r"   r	   r	   r
   test_most_valuable_edgeI   s   "z(TestGirvanNewman.test_most_valuable_edgeN)	__name__
__module____qualname____doc__r#   r'   r)   r+   r4   r	   r	   r	   r
   r      s    
r   )r8   operatorr   networkxr   networkx.algorithms.communityr   r   r   r   r   r	   r	   r	   r
   <module>   s    