
    h$                     H    d dl Z d dlZd dlmZ  G d d      Z G d d      Zy)    N)convert_node_labels_to_integersc                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)TestCliquesc           	         g d}t        t        j                  j                  |      d      | _        t        t        j                  | j                              | _        t        j                  d      }t        j                  |t        d      D ci c]  }||dz   
 c}      }|j                  g d       || _        y c c}w )N)      r   r      r   r	      r
   r
   r
   r
   )first_label   ))r	   r   )r	      )r	   r   )r
   r   )r   r   )cnltinx
generatorshavel_hakimi_graphGlistfind_cliquesclcomplete_graphrelabel_nodesrangeremove_edges_fromH)selfzr   is       b/var/www/django_project/virt/lib/python3.12/site-packages/networkx/algorithms/tests/test_clique.pysetup_methodzTestCliques.setup_method   s    -r}}77:Jrtvv./a Q58 <aAE <=	DE !=s   C
c                    t        t        j                  | j                              }t        j                  | 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 y )Nr	   r   r
   r   r	   r   r   )r   r         	   
      )r   r   r   r   find_cliques_recursivesortedmapr   r   rclexpecteds       r   test_find_cliques1zTestCliques.test_find_cliques1   s    "//$&&)*''/ )YARIc&"o&&VS1A*BBBBc&"o&&VX1F*GGGG    c                    | j                   j                  dd       t        t        j                  | j                               }t        t        j
                  | 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(  sJ t        fd	|D              sJ y )
Nr
   >   r
   r	   r   r   >   r	   r   r   >   r   r   r#   r$   r%   r&   r'   c              3   8   K   | ]  }t        |      v   y wN)set).0canswers     r   	<genexpr>z-TestCliques.test_selfloops.<locals>.<genexpr>   s     03q6V#0s   )r   add_edger   r   r   r(   r3   r*   	frozensetlenall)r   r   r,   r6   s      @r   test_selfloopszTestCliques.test_selfloops   s    1"//$&&)*2,,TVV453y"%&#c)S.A*BBBB	9q!fr2hG6{c"g%%%0R0000r/   c                     t        t        j                  | j                              }t	        t        t        |            ddgg dddgg dgk(  sJ y )Nr
   r	   )r
   r   r   r   r   )r   r   r   )r   r   r   r   r)   r*   )r   hcls     r   test_find_cliques2zTestCliques.test_find_cliques2!   sD    2??466*+c&#&'QFL1a&)+TTTTr/   c                 J   t        t        j                  | j                  dg            }t        j                  | 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                  | j                  ddg            }t        j                  | j                  ddg      }g dg}t        t        t
        |            t        t        t
        |            k(  sJ t        t        t
        |            t        t        t
        |            k(  sJ t        t        j                  | j                  g d            }t        j                  | j                  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                  | j                  g d            }t        j                  | j                  g d      }g dg}t        t        t
        |            t        t        t
        |            k(  sJ t        t        t
        |            t        t        t
        |            k(  sJ t        j                  t              5  t        t        j                  | j                  g d             d d d        t        j                  t              5  t        t        j                  | j                  g d             d d d        y # 1 sw Y   WxY w# 1 sw Y   y xY w)Nr	   r!   r"   r   )r	   r   r   r
   )
r   r   r   r   r(   r)   r*   pytestraises
ValueErrorr+   s       r   test_find_cliques3zTestCliques.test_find_cliques3%   s    "//$&&1#./''4 ),c&#&'6#fh2G+HHHHc&"o&&VX1F*GGGG"//$&&1a&12''A7 >c&#&'6#fh2G+HHHHc&"o&&VX1F*GGGG"//$&&)45''	:;c&#&'6#fh2G+HHHHc&"o&&VX1F*GGGG"//$&&)45''	:;c&#&'6#fh2G+HHHHc&"o&&VX1F*GGGG]]:& 	867	8 ]]:& 	B**466<@A	B 	B	8 	8	B 	Bs   ,N,NNN"c                 j   | j                   }t        j                  |d      dk(  sJ t        t        j                  |dg      j	                               dgk(  sJ t        t        j                  |ddg      j	                               ddgk(  sJ t        j                  |ddg      dddk(  sJ t        j                  |d      dk(  sJ t        j                  |      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k(  sJ t        j                  |g d      ddddk(  sJ t        j                  || j
                        ddddddddddddk(  sJ t        j                  |t        |      | j
                        ddddddddddddk(  sJ y )Nr
   r	   r
   r	   r
   r	   r   r   r   r   r#   r$   r%   r&   r'   )nodes)r	   r   r   cliques)r   r   number_of_cliquesr   valuesr   r   r   s     r   test_number_of_cliquesz"TestCliques.test_number_of_cliquesF   s   FF##Aq)Q...B((QC0779:qcAAAB((QF3::<=!QGGG##A1v.aA,>>>##Aq)Q...##A&+
 
 	
 
 ##AT!W5:
 
 	
 
 ##AY7qQ1;MMMM##Atww7<
 
 	
 
 ##AtAw@E
 
 	
 
r/   c                    | j                   }t        j                  |d      dk(  sJ t        t        j                  |dg      j	                               dgk(  sJ t        t        j                  |ddg      j	                               ddgk(  sJ t        j                  |ddg      dddk(  sJ t        j                  |d      dk(  sJ t        j                  |      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k(  sJ t        j                  |ddg| j
                        dddk(  sJ t        j                  |d| j
                        dk(  sJ y )Nr
   r   r	   rF   r   rG   rI   )r   r   node_clique_numberr   rL   r   rM   s     r   test_node_clique_numberz#TestCliques.test_node_clique_number   s   FF$$Q*a///B))!aS188:;sBBBB))!aV4;;=>1a&HHH$$QA/qQ<???$$Q*a///$$Q',
 
 	
 
 $$Q8=
 
 	
 
 $$QA@aLPPP$$Q477;q@@@r/   c                    | j                   }t        j                  |      }t        |      g dk(  sJ t        j                  |t        dd            }|j                  |j                  k(  sJ t        j                  |t        dd            }t        j                  |t        dd      D ci c]  }| | c}      }t        |      g dk(  sJ y c c}w )N)r
   r	   r   r   r   r   r#   r$   r%   r&   r'   r
      rS   r   r   )r
   r	   r   r   r   )r   r   make_clique_bipartiter)   projected_graphr   adjr   )r   r   Br   H1vs         r   test_make_clique_bipartitez&TestCliques.test_make_clique_bipartite   s    FF$$Q'aySSSSq%2,/uu~~5Q<0b%1+">QA2q5">?bz_,,, #?s   -C
c           	      V   | j                   }t        j                  |      }t        j                  |t	        dd            }t        j
                  |t	        dd      D ci c]	  }| |dz
   c}      }t        j                  |      }|j                  |j                  k(  sJ yc c}w )zTests that the maximal clique graph is the same as the bipartite
        clique graph after being projected onto the nodes representing the
        cliques.

        rS   r   r
   r   N)r   r   rY   rZ   r   r   make_max_clique_graphr[   )r   r   r\   r]   r^   H2s         r   test_make_max_clique_graphz&TestCliques.test_make_max_clique_graph   s     FF$$Q'5Q<0 beAqk"BA2q1u9"BC%%a(vv #Cs    B&
c                     t        j                  t        j                        5  t	        t        j
                  t        j                                      d d d        y # 1 sw Y   y xY wr2   )rA   rB   r   NetworkXNotImplementednextr   DiGraph)r   s    r   test_directedzTestCliques.test_directed   s@    ]]2445 	0./	0 	0 	0s   1AA'c                     t        j                         }t        t        j                  |            g k(  sJ t        t        j                  |            g k(  sJ y r2   )r   Graphr)   r   r(   rM   s     r   test_find_cliques_trivialz%TestCliques.test_find_cliques_trivial   sG    HHJbooa()R///b//23r999r/   c                     t        j                  g d      }t        j                  g d      }|j                  d       t        j                  t        j                  |t         j                        |      sJ y )N)rF   )r   r
   )r   r
   )r   r   ))r   r
   )r   r	   rF   r   )create_using)r   rj   add_nodeis_isomorphicra   )r   r   Es      r   'test_make_max_clique_graph_create_usingz3TestCliques.test_make_max_clique_graph_create_using   sS    HH56HH-.	

1 8 8 RTUVVVr/   N)__name__
__module____qualname__r   r.   r<   r?   rD   rN   rQ   r_   rc   rh   rk   rq    r/   r   r   r      sF    H1UBB;
z"AH-  0:
Wr/   r   c                       e Zd Zd Zy)TestEnumerateAllCliquesc                    t        j                         }g d}|j                  |       t        t        j                  |            }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(  sJ y )N))ab)ry   r5   )ry   d)ry   e)rz   r5   )rz   r{   )rz   r|   )r5   r{   )r5   r|   )r{   r|   )frz   )r}   r5   )r}   g)r~   r}   )r~   r5   )r~   r{   )r~   r|   ry   rz   r5   r{   r|   r}   r~   )ry   rz   r{   )ry   rz   r{   r|   )ry   rz   r|   )ry   r5   r{   )ry   r5   r{   r|   )ry   r5   r|   )ry   r{   r|   )rz   r5   r{   )rz   r5   r{   r|   )rz   r5   r|   )rz   r5   r}   )rz   r{   r|   )r5   r{   r|   )r5   r{   r|   r~   )r5   r{   r~   )r5   r|   r~   )r5   r}   r~   )r{   r|   r~   )ry   rz   r5   )ry   rz   r5   r{   )ry   rz   r5   r{   r|   )ry   rz   r5   r|   )r   rj   add_edges_fromr   enumerate_all_cliquesr*   r:   r)   )r   r   edges_fig_4rJ   clique_sizesexpected_cliquess         r   test_paper_figure_4z+TestEnumerateAllCliques.test_paper_figure_4   s    HHJ
& 	
%r//23CW-.l#|333.
E.
E.
 E.
 E	.

 E.
 E.
 E.
 #J.
 .
 !.
 .
 #J.
 .
 !.
 .
  #J!.
" #.
$ #J%.
& #J'.
( ).
* !+.
, -.
. /.
0 #J1.
2 3.
4 #J5.
6 #J7.
8 #J9.
: ;.
< !=.
> ?.
@ #JA.
B C.
D #JE.
F G.
H #JI.
J #JK.
L M.
N #JO.
P #JQ.
R #JS.
T U.
V !W.
X &Y.
Z ![.
` c&'*+vc&BR6S/TTTTr/   N)rr   rs   rt   r   ru   r/   r   rw   rw      s	    NUr/   rw   )rA   networkxr   r   r   r   rw   ru   r/   r   <module>r      s+      =JW JWZOU OUr/   