U
    ?hf                     @   s   d Z ddlZG dd dZdS )z@Unit tests for the :mod:`networkx.algorithms.efficiency` module.    Nc                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestEfficiencyc                 C   s:   t  | _| jdddg t d| _t dd| _d S )N            )nxZGraphG1Zadd_nodes_fromZcycle_graphG2Zlollipop_graphG3self r   [/var/www/html/venv/lib/python3.8/site-packages/networkx/algorithms/tests/test_efficiency.pysetup_method   s    
zTestEfficiency.setup_methodc                 C   s   t | jdddkstdS )z>
        When nodes are disconnected, efficiency is 0
        r   r   r   N)r   
efficiencyr   AssertionErrorr   r   r   r   "test_efficiency_disconnected_nodes   s    z1TestEfficiency.test_efficiency_disconnected_nodesc                 C   s   t | jdkstdS )z=
        In a disconnected graph the efficiency is 0
        r   N)r   local_efficiencyr   r   r   r   r   r   (test_local_efficiency_disconnected_graph   s    z7TestEfficiency.test_local_efficiency_disconnected_graphc                 C   s4   t | jdddkstt | jdddks0td S )Nr   r   r   g      ?)r   r   r	   r   r   r   r   r   test_efficiency   s    zTestEfficiency.test_efficiencyc                 C   s   t | jdkstd S )Ng?)r   global_efficiencyr	   r   r   r   r   r   test_global_efficiency    s    z%TestEfficiency.test_global_efficiencyc                 C   s0   t ddD ] }t|}t|dks
tq
dS )zX
        Tests that the average global efficiency of the complete graph is one.
        r   
   r   N)ranger   complete_graphr   r   r   nGr   r   r   %test_global_efficiency_complete_graph#   s    
z4TestEfficiency.test_global_efficiency_complete_graphc                 C   s0   t ddD ] }t|}t|dks
tq
dS )z
        Test that the local efficiency for a complete graph with at least 3
        nodes should be one. For a graph with only 2 nodes, the induced
        subgraph has no edges.
        r   r   r   N)r   r   r   r   r   r   r   r   r   $test_local_efficiency_complete_graph+   s    
z3TestEfficiency.test_local_efficiency_complete_graphc                 C   s   t | jdkstdS )z
        Test that the ego graph is used when computing local efficiency.
        For more information, see GitHub issue #2710.
        g?N)r   r   r
   r   r   r   r   r   test_using_ego_graph5   s    z#TestEfficiency.test_using_ego_graphN)__name__
__module____qualname__r   r   r   r   r   r   r   r    r   r   r   r   r      s   	
r   )__doc__Znetworkxr   r   r   r   r   r   <module>   s   