o
    j$                     @   s<   d dl Z d dlZd dlmZ G dd dZG dd dZdS )    N)convert_node_labels_to_integersc                   @   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d Zdd Zdd Zdd ZdS )TestCliquesc                 C   sl   g d}t tj|dd| _tt| j| _td}t	|dd t
dD }|g d || _d S )N)      r   r      r   r      r   r   r   r   )Zfirst_label   c                 S   s   i | ]}||d  qS r    ).0ir
   r
   f/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/networkx/algorithms/tests/test_clique.py
<dictcomp>   s    z,TestCliques.setup_method.<locals>.<dictcomp>))r   r   )r      )r   r   )r   r   )r   r   )cnltinx
generatorsZhavel_hakimi_graphGlistfind_cliquesclZcomplete_graphrelabel_nodesrangeZremove_edges_fromH)selfzr   r
   r
   r   setup_method   s   

zTestCliques.setup_methodc                 C   s   t t| j}t| j}g dg dg dddgddgg}ttt|ttt|ks/J ttt|ttt|ks?J d S )Nr   r   r   r   r   r   r   )r   r         	   
      )r   r   r   r   find_cliques_recursivesortedmapr   r   rclexpectedr
   r
   r   test_find_cliques1   s
   " $zTestCliques.test_find_cliques1c                    s   | j dd tt| j }tt| j }ttt|ttt|ks'J h dh dh dddhddhg t	 t	|ksBJ t
 fd	d
|D sOJ d S )Nr   >   r   r   r   r   >   r   r   r   >   r   r   r   r    r!   r"   r#   c                 3   s    | ]	}t | v V  qd S N)set)r   cZanswerr
   r   	<genexpr>   s    z-TestCliques.test_selfloops.<locals>.<genexpr>)r   Zadd_edger   r   r   r$   r,   r&   	frozensetlenall)r   r   r(   r
   r.   r   test_selfloops   s    "zTestCliques.test_selfloopsc                 C   sB   t t| j}ttt|ddgg dddgg dgksJ d S )Nr   r   )r   r   r   r   r   )r   r   r   )r   r   r   r   r%   r&   )r   hclr
   r
   r   test_find_cliques2!   s   2zTestCliques.test_find_cliques2c                 C   sT  t t| jdg}t| jdg}g dg dg}ttt|ttt|ks*J ttt|ttt|ks:J t t| jddg}t| jddg}g dg}ttt|ttt|kscJ ttt|ttt|kssJ t t| jg d}t| jg d}g dg}ttt|ttt|ksJ ttt|ttt|ksJ t t| jg d}t| jg d}g dg}ttt|ttt|ksJ ttt|ttt|ksJ tt	 t t| jg d W d    n	1 sw   Y  tt	 t t| jg d W d    d S 1 s#w   Y  d S )Nr   r   r   r   )r   r   r   r   )
r   r   r   r   r$   r%   r&   pytestraises
ValueErrorr'   r
   r
   r   test_find_cliques3%   s4     
  
  
  $zTestCliques.test_find_cliques3c                 C   sx  | j }t|ddksJ tt|dg dgksJ tt|ddg ddgks/J t|ddgdddks>J t|ddksHJ t|ddddddddddddks]J tj|t|dddddddddddddksvJ tj|g ddddddksJ tj|| jdddddddddddddksJ tj|t|| jdddddddddddddksJ d S )Nr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   )nodes)r   r   r   cliques)r   r   Znumber_of_cliquesr   valuesr   r   r   r
   r
   r   test_number_of_cliquesF   sv    $"z"TestCliques.test_number_of_cliquesc                 C   s,  | j }t|ddksJ tt|dg dgksJ tt|ddg ddgks/J t|ddgdddks>J t|ddksHJ t|ddddddddddddks]J tj|| jdddddddddddddksuJ tj|ddg| jddddksJ tj|d| jddksJ d S )Nr   r   r   r:   r   r;   r=   )r   r   Znode_clique_numberr   r?   r   r@   r
   r
   r   test_node_clique_number   sD    $$z#TestCliques.test_node_clique_numberc                 C   s   | j }t|}t|g dksJ t|tdd}|j|jks#J t|tdd}t|dd tddD }t|g d	ksDJ d S )
N)r   r   r   r   r   r   r   r    r!   r"   r#   r      rC   r   c                 S   s   i | ]}| |qS r
   r
   r   vr
   r
   r   r      s    z:TestCliques.test_make_clique_bipartite.<locals>.<dictcomp>r   )r   r   r   r   r   )r   r   make_clique_bipartiter%   projected_graphr   adjr   )r   r   Br   H1r
   r
   r   test_make_clique_bipartite   s   
z&TestCliques.test_make_clique_bipartitec                 C   s\   | j }t|}t|tdd}t|dd tddD }t|}|j|jks,J dS )zTests that the maximal clique graph is the same as the bipartite
        clique graph after being projected onto the nodes representing the
        cliques.

        rC   r   c                 S   s   i | ]}| |d  qS r	   r
   rI   r
   r
   r   r      s    z:TestCliques.test_make_max_clique_graph.<locals>.<dictcomp>r   r   N)r   r   rK   rL   r   r   make_max_clique_graphrM   )r   r   rN   rO   ZH2r
   r
   r   test_make_max_clique_graph   s   

z&TestCliques.test_make_max_clique_graphc                 C   sD   t tj ttt  W d    d S 1 sw   Y  d S r+   )r6   r7   r   ZNetworkXNotImplementednextr   ZDiGraph)r   r
   r
   r   test_directed   s   "zTestCliques.test_directedc                 C   s8   t  }tt |g ksJ tt |g ksJ d S r+   )r   Graphr%   r   r$   r@   r
   r
   r   test_find_cliques_trivial   s   z%TestCliques.test_find_cliques_trivialc                 C   sF   t g d}t g d}|d t t j|t jd|s!J d S )N)r:   )r   r   )r   r   )r   r   ))r   r   )r   r   r:   r   )Zcreate_using)r   rU   add_nodeZis_isomorphicrQ   )r   r   Er
   r
   r   'test_make_max_clique_graph_create_using   s   
 z3TestCliques.test_make_max_clique_graph_create_usingN)__name__
__module____qualname__r   r*   r3   r5   r9   rA   rB   rP   rR   rT   rV   rY   r
   r
   r
   r   r      s    		!=$r   c                   @   s   e Zd Zdd ZdS )TestEnumerateAllCliquesc                 C   s  t  }g d}|| tt |}ttt|}t||ks#J g dgdgdgdgdgdgdgddgg d	g d
g dddgg dg dg dddgg dddgddgg dg dg dg dddgg dddgddgddgg dg dg dddgg dddgg dddgddgg dddgddgddgg dg dg dg d}ttt|ttt|ksJ d S )N))ab)r^   r-   )r^   d)r^   e)r_   r-   )r_   r`   )r_   ra   )r-   r`   )r-   ra   )r`   ra   )fr_   )rb   r-   )rb   g)rc   rb   )rc   r-   )rc   r`   )rc   ra   r^   r_   r-   r`   ra   rb   rc   )r^   r_   r`   )r^   r_   r`   ra   )r^   r_   ra   )r^   r-   r`   )r^   r-   r`   ra   )r^   r-   ra   )r^   r`   ra   )r_   r-   r`   )r_   r-   r`   ra   )r_   r-   ra   )r_   r-   rb   )r_   r`   ra   )r-   r`   ra   )r-   r`   ra   rc   )r-   r`   rc   )r-   ra   rc   )r-   rb   rc   )r`   ra   rc   )r^   r_   r-   )r^   r_   r-   r`   )r^   r_   r-   r`   ra   )r^   r_   r-   ra   )r   rU   Zadd_edges_fromr   Zenumerate_all_cliquesr&   r1   r%   )r   r   Zedges_fig_4r>   Zclique_sizesZexpected_cliquesr
   r
   r   test_paper_figure_4   s   
	
 !"#$%&'()*+,-$0z+TestEnumerateAllCliques.test_paper_figure_4N)rZ   r[   r\   rd   r
   r
   r
   r   r]      s    r]   )r6   Znetworkxr   r   r   r   r]   r
   r
   r
   r   <module>   s     N