
    fi$                     V    d dl Z d dlZd dlmZ  G d d          Z G d d          ZdS )    N)convert_node_labels_to_integersc                   V    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dS )TestCliquesc                    g d}t          t          j                            |          d          | _        t          t          j        | j                            | _        t          j        d          }t          j	        |d t          d          D                       }|                    g d           || _        d S )N)      r   r      r   r	      r
   r
   r
   r
   )first_label   c                     i | ]}||d z   	S r
    ).0is     }/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/algorithms/tests/test_clique.py
<dictcomp>z,TestCliques.setup_method.<locals>.<dictcomp>   s     < < <aAE < < <    ))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"   s      r   setup_methodzTestCliques.setup_method   s    ---r}77::JJJrtv..//a  Q < <588 < < <==	DDDEEEr   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 d S )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    "/$&))**'// LL)))YYYARIc&"oo&&&VS1A1A*B*BBBBBc&"oo&&&VX1F1F*G*GGGGGGGr   c                    | 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 d S )
Nr
   >   r
   r	   r   r   >   r	   r   r   >   r   r   r)   r*   r+   r,   r-   c              3   :   K   | ]}t          |          v V  d S N)set)r   canswers     r   	<genexpr>z-TestCliques.test_selfloops.<locals>.<genexpr>   s.      003q66V#000000r   )r   add_edger   r   r   r.   r8   r0   	frozensetlenall)r#   r   r2   r:   s      @r   test_selfloopszTestCliques.test_selfloops   s    1"/$&))**2,TV44553y"%%&&#c)S.A.A*B*BBBBB,,			999q!fr2hG6{{c"gg%%%%0000R000000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 d S )Nr
   r	   )r
   r   r   r   r   )r   r   r   )r   r   r   r"   r/   r0   )r#   hcls     r   test_find_cliques2zTestCliques.test_find_cliques2!   s]    2?46**++c&#&&''QFLLL1a&)))+TTTTTTTr   c                 B   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            n# 1 swxY w Y   t          j        t                    5  t          t          j        | j        g d                     d d d            d S # 1 swxY w Y   d S )Nr	   r'   r(   r   )r	   r   r   r
   )
r   r   r   r   r.   r/   r0   pytestraises
ValueErrorr1   s       r   test_find_cliques3zTestCliques.test_find_cliques3%   s    "/$&1#..//'44 LL))),c&#&&''6#fh2G2G+H+HHHHHc&"oo&&&VX1F1F*G*GGGGG"/$&1a&1122'A77 LL>c&#&&''6#fh2G2G+H+HHHHHc&"oo&&&VX1F1F*G*GGGGG"/$&)))4455'			::II;c&#&&''6#fh2G2G+H+HHHHHc&"oo&&&VX1F1F*G*GGGGG"/$&)))4455'			::II;c&#&&''6#fh2G2G+H+HHHHHc&"oo&&&VX1F1F*G*GGGGG]:&& 	8 	866777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 ]:&& 	B 	B*46<<<@@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs$   *N99N= N=*PPPc                 ~   | j         }t          j        |d          dk    sJ t          t          j        |dg                                                    dgk    sJ t          t          j        |ddg                                                    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 d S )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   ss   F#Aq))Q....B(QC007799::qcAAAAB(QF33::<<==!QGGGG#A1v..aA,,>>>>#Aq))Q....#A&&+
 +
 
 
 
 
 #AT!WW555:
 :
 
 
 
 
 #AYYY777qQ1;M;MMMMM#Atw777<
 <
 
 
 
 
 #AtAww@@@E
 E
 
 
 
 
 
 
r   c                    | j         }t          j        |d          dk    sJ t          t          j        |dg                                                    dgk    sJ t          t          j        |ddg                                                    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 d S )Nr
   r   r	   rJ   r   rK   rM   )r   r   node_clique_numberr   rP   r   rQ   s     r   test_node_clique_numberz#TestCliques.test_node_clique_number   s   F$Q**a////B)!aS1188::;;sBBBBB)!aV44;;==>>1a&HHHH$QA//qQ<<????$Q**a////$Q'',
 ,
 
 
 
 
 $Q888=
 =
 
 
 
 
 $QA@@@aLLPPPP$Q47;;;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        |d t          dd          D                       }t          |          g dk    sJ d S )	N)r
   r	   r   r   r   r   r)   r*   r+   r,   r-   r
      rW   r   c                     i | ]}| |S r   r   r   vs     r   r   z:TestCliques.test_make_clique_bipartite.<locals>.<dictcomp>   s    ">">">QA2q">">">r   r   )r
   r	   r   r   r   )r   r   make_clique_bipartiter/   projected_graphr    adjr   )r#   r   Br"   H1s        r   test_make_clique_bipartitez&TestCliques.test_make_clique_bipartite   s    F$Q''ayySSSSSSSq%2,,//u~~~~5Q<<00b">">%1++">">">??bzz___,,,,,,r   c                 (   | j         }t          j        |          }t          j        |t	          dd                    }t          j        |d t	          dd          D                       }t          j        |          }|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.

        rW   r   c                     i | ]	}| |d z
  
S r   r   r^   s     r   r   z:TestCliques.test_make_max_clique_graph.<locals>.<dictcomp>   s     "B"B"BA2q1u"B"B"Br   r
   r   N)r   r   r`   ra   r    r   make_max_clique_graphrb   )r#   r   rc   rd   H2s        r   test_make_max_clique_graphz&TestCliques.test_make_max_clique_graph   s     F$Q''5Q<<00 b"B"BeAqkk"B"B"BCC%a((vr   c                     t          j        t          j                  5  t	          t          j        t          j                                         d d d            d S # 1 swxY w Y   d S r7   )rE   rF   r   NetworkXNotImplementednextr   DiGraph)r#   s    r   test_directedzTestCliques.test_directed   s    ]2455 	0 	0..///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   3AA#&A#c                     t          j                    }t          t          j        |                    g k    sJ t          t          j        |                    g k    sJ d S r7   )r   Graphr/   r   r.   rQ   s     r   test_find_cliques_trivialz%TestCliques.test_find_cliques_trivial   sZ    HJJboa(())R////b/2233r999999r   c                     t          j        g d          }t          j        g d          }|                    d           t          j        t          j        |t           j                  |          sJ d S )N)rJ   )r   r
   )r   r
   )r   r   ))r   r
   )r   r	   rJ   r   )create_using)r   rq   add_nodeis_isomorphicrh   )r#   r   Es      r   'test_make_max_clique_graph_create_usingz3TestCliques.test_make_max_clique_graph_create_using   so    H55566H---..	

1 8 R R RTUVVVVVVVr   N)__name__
__module____qualname__r%   r4   r@   rC   rH   rR   rU   re   rj   ro   rr   rx   r   r   r   r   r      s          H H H1 1 1U U UB B BB;
 ;
 ;
z"A "A "AH- - -      0 0 0: : :
W W W W Wr   r   c                       e Zd Zd ZdS )TestEnumerateAllCliquesc                    t          j                    }g d}|                    |           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 d S )N))ab)r   r9   )r   d)r   e)r   r9   )r   r   )r   r   )r9   r   )r9   r   )r   r   )fr   )r   r9   )r   g)r   r   )r   r9   )r   r   )r   r   r   r   r9   r   r   r   r   )r   r   r   )r   r   r   r   )r   r   r   )r   r9   r   )r   r9   r   r   )r   r9   r   )r   r   r   )r   r9   r   )r   r9   r   r   )r   r9   r   )r   r9   r   )r   r   r   )r9   r   r   )r9   r   r   r   )r9   r   r   )r9   r   r   )r9   r   r   )r   r   r   )r   r   r9   )r   r   r9   r   )r   r   r9   r   r   )r   r   r9   r   )r   rq   add_edges_fromr   enumerate_all_cliquesr0   r>   r/   )r#   r   edges_fig_4rN   clique_sizesexpected_cliquess         r   test_paper_figure_4z+TestEnumerateAllCliques.test_paper_figure_4   sS    HJJ
 
 
& 	
%%%r/2233CW--..l##|3333.
E.
E.
 E.
 E	.

 E.
 E.
 E.
 #J.
 OO.
 !  .
 OO.
 #J.
 OO.
 !  .
 OO.
  #J!.
" OO#.
$ #J%.
& #J'.
( OO).
* !  +.
, OO-.
. OO/.
0 #J1.
2 OO3.
4 #J5.
6 #J7.
8 #J9.
: OO;.
< !  =.
> OO?.
@ #JA.
B OOC.
D #JE.
F OOG.
H #JI.
J #JK.
L OOM.
N #JO.
P #JQ.
R #JS.
T OOU.
V !  W.
X &%%Y.
Z !  [.
` c&'**++vc&BR6S6S/T/TTTTTTTr   N)ry   rz   r{   r   r   r   r   r}   r}      s-        NU NU NU NU NUr   r}   )rE   networkxr   r   r   r   r}   r   r   r   <module>r      s         = = = = = =JW JW JW JW JW JW JW JWZOU OU OU OU OU OU OU OU OU OUr   