U
    ?h<                     @   s   d dl 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
G dd dZG dd dZdS )    Nc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestTrianglesc                 C   s&   t  }tt | g ks"td S N)nxGraphlist	trianglesvaluesAssertionErrorselfG r   X/var/www/html/venv/lib/python3.8/site-packages/networkx/algorithms/tests/test_cluster.py
test_empty   s    zTestTriangles.test_emptyc                 C   sd   t d}tt | ddddddddddg
ks8tt |ddddddddddd
ks`td S N
   r   
r                           	   )r   
path_graphr   r   r   r	   r
   r   r   r   	test_path   s    
.zTestTriangles.test_pathc              	   C   s   t  }tt | ddddddddgks2tt |ddksFttt |ddg ddgksjtt |ddks~tt |ddgdddkstd S Nr   r   r   r   r   )r   cubical_graphr   r   r   r	   r
   r   r   r   test_cubical   s    *$zTestTriangles.test_cubicalc                 C   s   t d}tt | dddddgks.ttt | d dksLtt |ddks`t|dd tt | dddddgkstt |ddkst|dd tt | dddddgkstt |ddkstd S )Nr   r   r   r   r   r   )	r   complete_graphr   r   r   r	   sumremove_edgeadd_edger
   r   r   r   test_k5#   s    
$$$zTestTriangles.test_k5N)__name__
__module____qualname__r   r   r!   r&   r   r   r   r   r      s   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestDirectedClusteringc                 C   s8   t  }tt | g ks"tt |i ks4td S r   r   DiGraphr   
clusteringr   r	   r
   r   r   r   test_clustering1   s    z&TestDirectedClustering.test_clusteringc                 C   s   t jdt  d}tt | ddddddddddg
ks@tt |ddddddddddd
kshtt |ddks|td S )Nr   Zcreate_usingr   r   r   r   r,   r   r-   r   r	   r
   r   r   r   r   6   s4    
z TestDirectedClustering.test_pathc                 C   s   t jdt  d}tt | dddddgks6tt |dksHt|dd tt | dddddgksxtt |ddgdddkst|dd tt | dddddgkstt |ddgdddkstt |ddkstd S )	Nr   r/   r   r   UUUUUU?r   r   r   竪?	r   r"   r,   r   r-   r   r	   average_clusteringr$   r
   r   r   r   r&   R   s,    $

zTestDirectedClustering.test_k5c                 C   s8   t jdt  d}|dd t |d dks4td S )Nr   r/   r   r   UUUUUU?)r   cycle_graphr,   r%   r-   r	   r
   r   r   r   test_triangle_and_edgej   s    z-TestDirectedClustering.test_triangle_and_edgeN)r'   r(   r)   r.   r   r&   r8   r   r   r   r   r*   0   s   r*   c                   @   s8   e Zd Zedd Zdd Zdd Zdd Zd	d
 ZdS )TestDirectedWeightedClusteringc                 C   s   t dad S Nnumpypytestimportorskipnpclsr   r   r   setup_classq   s    z*TestDirectedWeightedClustering.setup_classc                 C   s<   t  }tt j|dd g ks&tt |i ks8td S NweightrD   r+   r
   r   r   r   r.   v   s    z.TestDirectedWeightedClustering.test_clusteringc                 C   st   t jdt  d}tt j|dd ddddddddddg
ksDtt j|ddddddddddddd
ksptd S )Nr   r/   rD   rE   r   r   r0   r
   r   r   r   r   {   s2    
z(TestDirectedWeightedClustering.test_pathc                 C   s   t jdt  d}tt j|dd dddddgks:tt j|dddksPt|dd tt j|dd dddddgkstt j|ddgddddd	kst|dd tt j|dd d
ddd
d
gkstt j|ddgdddd
d	kstd S )Nr   r/   rD   rE   r   r   r1   r   r2   r3   r4   r
   r   r   r   r&      s0    (
"
z&TestDirectedWeightedClustering.test_k5c                 C   sr   t jdt  d}|jdddd t |d dks8ttjt j|ddd d	 tjt j|dddd	 d S )
Nr   r/   r   r   r   rE   r6   rD   gUUUUUU?)	r   r7   r,   r%   r-   r	   r?   testingassert_allcloser
   r   r   r   r8      s
    z5TestDirectedWeightedClustering.test_triangle_and_edgeN)	r'   r(   r)   classmethodrB   r.   r   r&   r8   r   r   r   r   r9   p   s   
r9   c                   @   sH   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dS )TestWeightedClusteringc                 C   s   t dad S r:   r<   r@   r   r   r   rB      s    z"TestWeightedClustering.setup_classc                 C   s<   t  }tt j|dd g ks&tt |i ks8td S rC   r   r   r   r-   r   r	   r
   r   r   r   r.      s    z&TestWeightedClustering.test_clusteringc                 C   sl   t d}tt j|dd ddddddddddg
ks<tt j|ddddddddddddd
kshtd S )Nr   rD   rE   r   r   r   r   r   r-   r   r	   r
   r   r   r   r      s2    

z TestWeightedClustering.test_pathc              	   C   s   t  }tt j|dd ddddddddgks6tt |ddksJttt j|ddgdd ddgksrtt j|ddddkstt j|ddgdddddkstd S )NrD   rE   r   r   r   r   r   r    r   r-   r   r	   r
   r   r   r   r!      s    

(z#TestWeightedClustering.test_cubicalc                 C   s   t d}tt j|dd dddddgks2tt j|dddksHt|dd tt j|dd dddddgks|tt j|ddgdddddkstd S )	Nr   rD   rE   r   r   r3   r   r2   r   r"   r   r-   r   r	   r5   r$   r
   r   r   r   r&      s    
(
zTestWeightedClustering.test_k5c                 C   sj   t d}|jdddd t |d dks0ttjt j|ddd d tjt j|dddd d S )	Nr   r   r   r   rE   UUUUUU?rD   r6   )r   r7   r%   r-   r	   r?   rF   rG   r
   r   r   r   r8     s
    
z-TestWeightedClustering.test_triangle_and_edgec                 C   s^   t d}|jdddd |jdddd t |d dks@tt j|ddd dksZtd S )	Nr   r   r   rE   rN   rD   UUUUUUտ)r   r7   r%   r-   r	   r
   r   r   r   test_triangle_and_signed_edge  s
    
z4TestWeightedClustering.test_triangle_and_signed_edgeN)r'   r(   r)   rH   rB   r.   r   r!   r&   r8   rQ   r   r   r   r   rI      s   
rI   c                   @   s@   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dS )TestClusteringc                 C   s   t d d S r:   r=   r>   r@   r   r   r   rB     s    zTestClustering.setup_classc                 C   s8   t  }tt | g ks"tt |i ks4td S r   rJ   r
   r   r   r   r.     s    zTestClustering.test_clusteringc                 C   sd   t d}tt | ddddddddddg
ks8tt |ddddddddddd
ks`td S r   rK   r
   r   r   r   r     s2    

zTestClustering.test_pathc              	   C   s   t  }tt | ddddddddgks2tt |ddksFttt |ddg ddgksjtt |ddks~tt |ddgdddkstd S r   rL   r
   r   r   r   r!   5  s    *$zTestClustering.test_cubicalc                 C   s   t d}tt | dddddgks.tt |dks@t|dd tt | dddddgksptt |ddgdddkstd S )Nr   r   r   r3   r   r2   rM   r
   r   r   r   r&   =  s    
$
zTestClustering.test_k5c                 C   s   t d}tt | dddddgks.tt |dks@t|dd |jdddd tt j|dd dd	dd
d
gkstd S )Nr   r   r   r   rO   rE   rD   r6   rP   g      ?)	r   r"   r   r-   r   r	   r5   r$   r%   r
   r   r   r   test_k5_signedK  s    
$zTestClustering.test_k5_signedN)
r'   r(   r)   rH   rB   r.   r   r!   r&   rT   r   r   r   r   rR     s   
rR   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestTransitivityc                 C   s   t  }t |dkstd S Nr   )r   r   transitivityr	   r
   r   r   r   test_transitivity[  s    z"TestTransitivity.test_transitivityc                 C   s    t d}t |dkstd S )Nr   r   )r   r   rW   r	   r
   r   r   r   r   _  s    
zTestTransitivity.test_pathc                 C   s   t  }t |dkstd S rV   )r   r    rW   r	   r
   r   r   r   r!   c  s    zTestTransitivity.test_cubicalc                 C   s>   t d}t |dkst|dd t |dks:td S )Nr   r   r   g      ?)r   r"   rW   r	   r$   r
   r   r   r   r&   g  s    
zTestTransitivity.test_k5N)r'   r(   r)   rX   r   r!   r&   r   r   r   r   rU   Z  s   rU   c                   @   sD   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S )TestSquareClusteringc                 C   s8   t  }tt | g ks"tt |i ks4td S r   )r   r   r   square_clusteringr   r	   r
   r   r   r   r.   o  s    z$TestSquareClustering.test_clusteringc                 C   sd   t d}tt | ddddddddddg
ks8tt |ddddddddddd
ks`td S r   )r   r   r   rZ   r   r	   r
   r   r   r   r   t  s2    

zTestSquareClustering.test_pathc              	   C   s   t  }tt | ddddddddgks2ttt |ddg ddgksVtt |dgd dksptt |ddkstt |ddgdddkstd S )NrN   r   r   r   )r   r    r   rZ   r   r	   r
   r   r   r   r!     s    

$z!TestSquareClustering.test_cubicalc                 C   s2   t d}tt | dddddgks.td S Nr   r   )r   r"   r   rZ   r   r	   r
   r   r   r   r&     s    
zTestSquareClustering.test_k5c                 C   s>   t dd}tt | ddddddddddg
ks:td S r[   )r   Zcomplete_bipartite_graphr   rZ   r   r	   r
   r   r   r   test_bipartite_k5  s    z&TestSquareClustering.test_bipartite_k5c                 C   s   t ddddddddd	d
dddddddddg}|dddddddddg	}|ddddd d!d"d#g}t |dgd d$kstt |dgd d%kstt |dgd d&kstd'S )(z&Test C4 for figure 1 Lind et al (2005)r   r   r   )r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r      )r      )r      )r      )r      )r      r   r   r   r   r   rc   rd   re   rf   r   r   r   r   r   ra   rb   gwqGܱ?rN   g?N)r   r   ZsubgraphrZ   r	   )r   r   ZG1ZG2r   r   r   test_lind_square_clustering  s6    z0TestSquareClustering.test_lind_square_clusteringc                 C   s4   t ddddddg}t |dgd dks0td	S )
z'Test eq2 for figure 1 Peng et al (2008)r   r]   r^   r_   r`   )r   r   r   rN   N)r   r   rZ   r	   r
   r   r   r   test_peng_square_clustering  s    z0TestSquareClustering.test_peng_square_clusteringN)
r'   r(   r)   r.   r   r!   r&   r\   rg   rh   r   r   r   r   rY   n  s   rY   c                   @   s0   e Zd Zedd Zdd Zdd Zdd Zd	S )
TestAverageClusteringc                 C   s   t d d S r:   rS   r@   r   r   r   rB     s    z!TestAverageClustering.setup_classc              	   C   s,   t  }tt t | W 5 Q R X d S r   )r   r   r=   raisesZeroDivisionErrorr5   r
   r   r   r   r     s    z TestAverageClustering.test_emptyc                 C   s   t d}|dd t |dks(tt j|dddks>tt j|dddksTtt |dddgd	ksntt j|dddgddd	kstt j|dddgddd
kstd S )Nr   r   g?Tcount_zerosFg98?r   gqq?gUUUUUU?r   r7   r%   r5   r	   r
   r   r   r   test_average_clustering  s    
z-TestAverageClustering.test_average_clusteringc                 C   sp   t d}|dd |jdddd t j|dddks<tt j|dd	d
dksTtt j|ddd
dksltd S )Nr   r   r   r   rO   rE   rD   gT)rD   rm   Fg98rn   r
   r   r   r   test_average_clustering_signed  s    
z4TestAverageClustering.test_average_clustering_signedN)r'   r(   r)   rH   rB   r   ro   rp   r   r   r   r   ri     s
   

ri   c                   @   s(   e Zd Zedd Zdd Zdd ZdS )TestDirectedAverageClusteringc                 C   s   t d d S r:   rS   r@   r   r   r   rB     s    z)TestDirectedAverageClustering.setup_classc              	   C   s,   t  }tt t | W 5 Q R X d S r   )r   r,   r=   rj   rk   r5   r
   r   r   r   r     s    z(TestDirectedAverageClustering.test_emptyc                 C   s   t jdt  d}|dd t |dks0tt j|dddksFtt j|dddks\tt |d	ddgd
ksvtt j|d	ddgddd
kstt j|d	ddgdddkstd S )Nr   r/   r   g?Trl   Fg98?r   gqq?rN   )r   r7   r,   r%   r5   r	   r
   r   r   r   ro     s    z5TestDirectedAverageClustering.test_average_clusteringN)r'   r(   r)   rH   rB   r   ro   r   r   r   r   rq     s   
rq   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestGeneralizedDegreec                 C   s   t  }t |i kstd S r   )r   r   generalized_degreer	   r
   r   r   r   test_generalized_degree  s    z-TestGeneralizedDegree.test_generalized_degreec                 C   s>   t d}t |dddiks"tt |dddiks:td S )Nr   r   r   r   )r   r   rs   r	   r
   r   r   r   r   
  s    
zTestGeneralizedDegree.test_pathc                 C   s$   t  }t |dddiks td S )Nr   r   )r   r    rs   r	   r
   r   r   r   r!     s    z"TestGeneralizedDegree.test_cubicalc                 C   s   t d}t |dddiks"t|dd t |dddiksFtt |ddgddiddddksntt |ddiddidddddddddd	kstd S )
Nr   r   r   r   r   r   )r   r   r   )r   r   r   r   r   )r   r"   rs   r	   r$   r
   r   r   r   r&     s    
(zTestGeneralizedDegree.test_k5N)r'   r(   r)   rt   r   r!   r&   r   r   r   r   rr     s   rr   )r=   Znetworkxr   r   r*   r9   rI   rR   rU   rY   ri   rq   rr   r   r   r   r   <module>   s   *@IWJ_#