
    ިsg]                     \    d Z ddlZddlZddlZddlZddlmZ ddlm	Z	m
Z
 eZ G d d      Zy)z
====================
Generators - Classic
====================

Unit tests for various classic graph generators in generators/classic.py
    N)graph_could_be_isomorphic)edges_equalnodes_equalc            	          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 Zd Zd Zd Zd Zd Zd Zej.                  j1                  dg d      d        Zej.                  j1                  dddg      d        Zd Zej.                  j1                  dg d      d        Zd Zej.                  j1                  dddg d d!fd"g d#fg      d$        Zd% Zd& Z d' Z!d( Z"d) Z#ej.                  j1                  dg d*      d+        Z$ej.                  j1                  dg d,      d-        Z%d. Z&ej.                  j1                  dg d      d/        Z'ej.                  j1                  d0d1d2g      d3        Z(d4 Z)ej.                  j1                  dddg d d!fd"g d#fg      d5        Z*d6 Z+d7 Z,d8 Z-d9 Z.d: Z/d; Z0d< Z1d= Z2d> Z3d? Z4y@)ATestGeneratorClassicc                    dD ]  \  }}t        j                  ||      }|j                         }|||dz   z  dz
  |dz
  z  k(  sJ t        j                  |      sJ |j	                         |dz
  k(  sJ t        j
                  |      }|d   dk(  sJ |d   ||z  k(  sJ ||   dk(  sJ ||dz      |||z  z
  dz
  k(  sJ t        |      |dz   k(  rJ  y )N))   r	   )   r
   )   r	      r   r	   )nxbalanced_treeorderis_connectedsizedegree_histogramlen)selfrhtr   dhs         Y/var/www/html/venv/lib/python3.12/site-packages/networkx/generators/tests/test_classic.pytest_balanced_treez'TestGeneratorClassic.test_balanced_tree   s    , 	$DAq  A&AGGIEQ1q5\A-!a%8888??1%%%668uqy((($$Q'Ba5A::a5AqD= =a5A::a!e91q 0000r7a!e###	$    c                 T   t        j                  dd      }t        |t        j                  d            sJ t        j                  dd      }t        |t        j                  d            sJ t        j                  dd      }t        |t        j                  d            sJ y )Nr	   r   )r   r      
   )r   r   is_isomorphic
star_graphr   r   s     r   test_balanced_tree_starz,TestGeneratorClassic.test_balanced_tree_star%   s    qA&Qa 0111qA&Qa 0111rQ'Qb 1222r   c                 v    t        j                  dd      }t        j                  d      }t        ||      sJ y)z[Tests that the balanced tree with branching factor one is the
        path graph.

        r      r   N)r   r   
path_graphr   )r   TPs      r   test_balanced_tree_pathz,TestGeneratorClassic.test_balanced_tree_path.   s4     Q"MM!Q"""r   c                 6   d}d}t        j                  ||      }|j                         |k(  sJ t        j                  |      sJ t        j                  |      }|d   dk(  sJ |d   dk(  sJ ||   dk(  sJ ||dz      dk(  sJ t        |      |dz   k(  sJ y )Nr	   	   r   r   r   r
   )r   full_rary_treer   r   r   r   )r   r   nr   r   s        r   test_full_rary_treez(TestGeneratorClassic.test_full_rary_tree8   s    a#wwyA~~q!!!  #!uzz!uzz!uzz!a%yI%%%2w!a%r   c                 x    t        j                  dd      }t        j                  dd      }t        ||      sJ y )Nr	      r
   )r   r+   r   r   )r   r   ths      r   test_full_rary_tree_balancedz1TestGeneratorClassic.test_full_rary_tree_balancedE   s6    a$a#Q###r   c                 r    t        j                  dd      }t        |t        j                  d            sJ y )Nr   r   )r   r+   r   r%   r!   s     r   test_full_rary_tree_pathz-TestGeneratorClassic.test_full_rary_tree_pathJ   s-    a$Qb 1222r   c                     t        j                  dd      }t        |t        j                  d            sJ t        j                  dd      }t        |t        j                  d            sJ y )Nr   r   r
   )r   r+   r   empty_graphr!   s     r   test_full_rary_tree_emptyz.TestGeneratorClassic.test_full_rary_tree_emptyN   sX    a$Qr 2333a#Qq 1222r   c                 Z    t        j                  dd      }|j                         dk(  sJ y )Nr
      )r   r+   r   r!   s     r   test_full_rary_tree_3_20z-TestGeneratorClassic.test_full_rary_tree_3_20T   s&    a$wwyBr   c                    d}d}t        j                  ||      }t        j                  |      d|z  |z   k(  sJ t        j                  |      ||dz
  z  |z   dz   k(  sJ d}d}t        j                  ||      }t        j                  |      d|z  |z   k(  sJ t        j                  |      ||dz
  z  |z   dz   k(  sJ d}d}t        j                  ||      }t        j                  |      d|z  |z   k(  sJ t        j                  |      ||dz
  z  |z   dz   k(  sJ d}d}t	        j
                  t         j                  t         j                  ||       d}d}t	        j
                  t         j                  t         j                  ||       d}d}t        j                  ||      }t        |t        j                  |dz               sJ d}d}t        j                  ||      }t        |t        j                  |dz               sJ d}d}t        j                  ||      }t        |t        j                  |dz               sJ t	        j
                  t         j                  t         j                  ||t        j                         	       t        j                  ||t        j                         	      }t        |j                         |j                               sJ y )
Nr
   r   r	   r   r$   r   r8   create_using)r   barbell_graphnumber_of_nodesnumber_of_edgespytestraisesNetworkXErrorr   r%   DiGraph
MultiGraphr   edges)r   m1m2bmbs        r   test_barbell_graphz'TestGeneratorClassic.test_barbell_graphX   s    R$!!!$B333!!!$b1f(:Q(>>>>R$!!!$B333!!!$b1f(:Q(>>>>R$!!!$B333!!!$b1f(:Q(>>>> b&&(8(8"bA b&&(8(8"bA R$Qb1f 5666R$Qb1f 5666R$Qb1f 5666b..BRZZ\	
 b"2==?C288:qwwy111r   c                 V   d t         j                  t         j                  t         j                  t         j                  f}|D ]e  }t        d      D ]U  }t        j                  ||      }t        j                  |      d|z  k(  sJ t        j                  |      d|z  dz
  k(  rUJ  g y )Nr$   r	   r   )	r   GraphrD   rE   MultiDiGraphrangebinomial_treer?   r@   )r   graphsr=   r,   rI   s        r   test_binomial_treez'TestGeneratorClassic.test_binomial_tree   s    "**bmmR__M" 	;L1X ;$$Q5))!,1444))!,A:::;	;r   c                 $   dD ]T  }t        j                  |      }t        j                  |      |k(  sJ t        j                  |      ||dz
  z  dz  k(  rTJ  t        j                  t         j                        }t        |j                         j                               sJ t        j                  d      }t        |j                         g d      sJ |j                         dk(  sJ t        j                  d      }t        |j                         g d      sJ |j                         d	k(  sJ t        j                  dt         j                        }t        |j                         g d      sJ |j                         d
k(  sJ y )Nr   r   r
   r   r   r	   r<   abc)arI   cr
   abcbr$   r   )
r   complete_graphr?   r@   rE   r   rF   r   nodesr   )r   mgmgs       r   test_complete_graphz(TestGeneratorClassic.test_complete_graph   sF     	=A!!!$A%%a(A---%%a(AQK1,<<<<	=
 qr}}=288:qwwy111e$1779o666vvx1}} f%1779o666vvx1}}f2==A1779o666vvx1}}r   c                    dD ]a  }t        j                  |t         j                        }t        j                  |      |k(  sJ t        j                  |      ||dz
  z  k(  raJ  t        j                  dt         j                        }t        |      dk(  sJ |j                         dk(  sJ |j                         sJ y )NrT   r<   r   rU   r
   r   )r   rY   rD   r?   r@   r   r   is_directed)r   r[   r\   s      r   test_complete_digraphz*TestGeneratorClassic.test_complete_digraph   s      	8A!!!"**=A%%a(A---%%a(AQK777	8
 e"**=1v{{vvx1}}}}r   c                 R   t        j                  d      }t        j                  t         j                  t         j                  dt         j
                         t        j                  dt         j                        }t        |j                         |j                               sJ y )Nr   r<   )	r   circular_ladder_graphrA   rB   rC   rD   rE   r   rF   )r   GmGs      r   test_circular_ladder_graphz/TestGeneratorClassic.test_circular_ladder_graph   sk    $$Q'b66

	
 %%abmmD288:qwwy111r   c                    t        j                  ddg      }t        j                  d      }t        |j	                         |j	                               sJ t        j                  dg d      }t        j
                  d      }t        |j	                         |j	                               sJ t        j                  dddg      }t        j                  dd      }t        ||      sJ y )Nr   r      r   r	   r
   r
   )r   circulant_graphcycle_graphr   rF   rY   complete_bipartite_graphr   )r   Ci6_1C6Ci7K7Ci6_1_3K3_3s          r   test_circulant_graphz)TestGeneratorClassic.test_circulant_graph   s    ""1qc*^^A5;;="((*555   I.q!399;
333 $$QA/**1a0Wd+++r   c                    t        j                  d      }t        |j                         g d      sJ t        j                  dt         j                        }t        |j                         g d      sJ t        j                  dt         j
                        }|j                  dd      rJ |j                  dd      sJ |j                         sJ t        j                  d      }t        |      dk(  sJ |j                         dk(  sJ t        j                  d      }t        |      dk(  sJ |j                         dk(  sJ t        j                  dt         j
                        }t        |      dk(  sJ |j                         dk(  sJ |j                         sJ t        j                  dt         j
                        }t        |      dk(  sJ |j                         dk(  sJ y )	Nr$   )r   r   )r   r
   r   r	   )r	   r
   r<   r	   r   rU   r
   rX   )
r   rk   r   rF   rE   rD   has_edger`   r   r   )r   rd   re   r\   s       r   test_cycle_graphz%TestGeneratorClassic.test_cycle_graph   sv   NN11779&FGGG^^ABMM:288:'GHHHNN12::6::a###zz!Q}}NN5!1v{{vvx1}}NN6"1v{{vvx1}}NN5"**-1v{{vvx1}}}}NN62::.1v{{vvx1}}r   c                    t        j                  d      }t        |j                         dg      sJ t	        t        |      ddg      sJ t        j                  d      }t        |j                         g d      sJ t        j                  |      dk(  sJ t        j                  |      dk(  sJ t        t        j                  |      j                               g dk(  sJ t        j                  |      sJ t        j                  d      }t        j                  |      dk(  sJ t        j                  |      d	k(  sJ t        j                  |      d
k(  sJ t        j                  |      dk(  sJ t        j                  |      sJ t        j                  d      }t        j                  |      dk(  sJ t        j                  |      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ t        j                   t         j"                  d      5  t        j                  d       d d d        t        j                   t         j"                  d      5  t        j                  dt         j$                         d d d        t        j                   t         j"                  d      5  t        j                  dt         j&                         d d d        t        j                   t         j"                        5  t        j                  dt         j(                         d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   y xY w)Nr   ru   r   )ru   )r   r	   rv   g      ?)r   r   r   r	   r   r*   g      ?gffffff?r   iVs  i  i   zn must be greater thanmatchzdirected graph not supportedrh   r<   zmultigraph not supported)r    dorogovtsev_goltsev_mendes_graphr   rF   r   listaverage_clusteringaverage_shortest_path_lengthsorted	trianglesvalues	is_planarr?   r@   degreerA   rB   rC   rD   rE   rN   )r   rd   s     r   %test_dorogovtsev_goltsev_mendes_graphz:TestGeneratorClassic.test_dorogovtsev_goltsev_mendes_graph   s   //21779vh///47QF+++//21779&>???$$Q'3.....q1S888bll1o,,./9<<<||A//2!!!$)))!!!$)))$$Q'4///..q1S888||A//3!!!$---!!!$---xx{d"""xx{d"""xx{d"""]]2++3LM 	4//3	4]]2++3RS 	L//

K	L]]2++3NO 	O//N	O]]2++, 	Q//P	Q 	Q	4 	4	L 	L	O 	O	Q 	Qs0   M&M$&M0(&M<M!$M-0M9<Nc                    t        j                         }t        |t         j                        sJ t	        j
                  t        t         j                  d       t	        j
                  t        t         j                  d       t        j                  t         j                        }t        |t         j                        sJ t        j                  t         j                        }t        |t         j                        sJ t        j                  t         j                  t         j                        }t        |t         j                        sJ t        j                  d t         j                        }t        |t         j                        sJ t        j                  t         j                        }t        |t         j                        sJ t        j                  d      }t        j                  |      }|j                         rJ |j                         rJ t        |      dk(  sJ ||u sJ t        j                  t        j                               }|j                         sJ |j                         rJ ||usJ  G d d	t        j                        } G d
 d|t         j                        }t        j                  |      }y )Ng        r<   rM   )r=   default)r   r   r   c                       e Zd Zy)5TestGeneratorClassic.test_create_using.<locals>.MixinN__name__
__module____qualname__ r   r   Mixinr   *      r   r   c                       e Zd Zy)7TestGeneratorClassic.test_create_using.<locals>.MyGraphNr   r   r   r   MyGraphr   -  r   r   r   )r   r5   
isinstancerM   rA   rB   	TypeErrorrE   rD   r%   is_multigraphr`   r   typingProtocol)r   rd   Hr   r   s        r   test_create_usingz&TestGeneratorClassic.test_create_using  s   NN!RXX&&&icBigFNN6!R]]+++NN

3!RZZ(((NN

BMMJ!RZZ(((NNbmmD!R]]+++NN2==1!R]]+++MM!NN*??$$$==?""1v{{AvvNN8   ==?""zz	FOO 		eRZZ 	 NN0r   c                 H   t        j                         }t        j                  |      dk(  sJ t        j                  d      }t        j                  |      dk(  sJ t        j                  |      dk(  sJ t        j                  d      }t	        |      dk(  sJ |j                         dk(  sJ t        j                  dt        j                  d            }t        j                  |      dk(  sJ t        j                  |      dk(  sJ t        |t         j                        sJ t        j                  dt        j                  d            }t        j                  |      dk(  sJ t        j                  |      dk(  sJ t        |t         j                        sJ t        j                         }t        j                  d|      }t        j                  |      dk(  sJ t        j                  |      dk(  sJ t        |t         j                        sJ y )Nr   *   rU   r
   duh)namer<   )r   r5   r?   r@   r   r   rD   r   rE   petersen_graphrM   )r   rd   petes      r   test_empty_graphz%TestGeneratorClassic.test_empty_graph2  s   NN!!!$)))NN2!!!$***!!!$)))NN5!1v{{vvx1}} NN2BJJE,BC!!!$***!!!$)))!RZZ((( NN2BMMu,EF!!!$***!!!$)))!R]]+++   "NN2D1!!!$***!!!$)))!RXX&&&r   c                 \   dt        j                  d      fdt        j                  d      fdt        j                  d      fdt        j                  ddg      ffD ]&  \  }}t        t        j                  |      |      r&J  t        j                  t         j                  t         j                  dt         j                         t        j                  d      }t        j                  dt         j                        }t        |j                         |j                               sJ y )Nr   r   r	   r   r<   )r   r5   r%   hypercube_graph
grid_graphr   ladder_graphrA   rB   rC   rD   rE   r   rF   )r   ird   r\   r]   s        r   test_ladder_graphz&TestGeneratorClassic.test_ladder_graphP  s    q!"a !""1%&2w'(	
 	8DAq !!3Q777	8 	b&&TOOA__QR]];288:qwwy111r   )r[   r,   )r
   r   r$   r   r
   r8   c                     t        j                  ||      }t        j                  |      ||z   k(  sJ t        j                  |      ||dz
  z  dz  |z   k(  sJ y Nr   r	   )r   lollipop_graphr?   r@   r   r[   r,   rd   s       r   test_lollipop_graph_right_sizesz4TestGeneratorClassic.test_lollipop_graph_right_sizes_  s[    a#!!!$A---!!!$QUa!(;;;;r   ab rU   defgc                    t        j                  ||      }t        j                  |      t        |      t        |      z   k(  sJ t        j                  |      t        |      t        |      dz
  z  dz  t        |      z   k(  sJ y r   )r   r   r?   r   r@   r   s       r   &test_lollipop_graph_size_node_sequencez;TestGeneratorClassic.test_lollipop_graph_size_node_sequencee  sq    a#!!!$AQ777!!!$A#a&1*(=(ACF(JJJJr   c                    t        j                  t        j                  t        j                  dd       t        j                  t        j                  t        j                  dd       t        j                  t        j                  t        j                  dd       t        j                  t        j                  t        j                  dd       t        j                  t        j                  t        j                  dd       t        j                  t        j                        5  t        j                  ddt        j
                  	       d d d        t        j                  t        j                        5  t        j                  ddt        j                  	       d d d        y # 1 sw Y   \xY w# 1 sw Y   y xY w)
Nr|   r	   r   r8   r   rV   r   r;   r<   )rA   rB   r   rC   r   rD   rN   r   s    r   test_lollipop_graph_exceptionsz3TestGeneratorClassic.test_lollipop_graph_exceptionsk  s    b&&(9(92qAb&&(9(91bAb&&(9(92rBb&&(9(93C 	b&&(9(91bA ]]2++, 	>a"**=	>]]2++, 	Ca"//B	C 	C	> 	>	C 	Cs   ('F*:'F6*F36F?))r	   r   )r	   r   )r	   r   )r   r8   c                 x    t        j                  ||      }t        |t        j                  |dz               sJ y Nr	   )r   r   r   r%   r   s       r   -test_lollipop_graph_same_as_path_when_m1_is_2zBTestGeneratorClassic.test_lollipop_graph_same_as_path_when_m1_is_2{  s1    a#Qa!e 4555r   c                     t        j                  dd      }t        j                  ddt         j                        }t        |j	                         |j	                               sJ y Nr   r8   r<   )r   r   rE   r   rF   r   rd   MGs      r   "test_lollipop_graph_for_multigraphz7TestGeneratorClassic.test_lollipop_graph_for_multigraph  sH    a$q"2==A288:qwwy111r   )r$   rU   )abcdr
   )r   r	   r
   r$   rU   r   ri   c           	          t        j                  t        j                  d      t        j                  t	        dd                  }|j                  dd       t        t        j                  ||      |      sJ y Nr$   d   g   r   )r   composerY   r%   rO   add_edger   r   r   r[   r,   expecteds       r   &test_lollipop_graph_mixing_input_typesz;TestGeneratorClassic.test_lollipop_graph_mixing_input_types  s[    
 ::b//2BMM%S/4RS!S!R..q!4h???r   c           	      b   t        j                  d      }t        j                  |j	                  d      |j                  d            }t        j                  t        j                  d      t        j                  t        dd                  }|j                  dd       t        ||      sJ y Nnumpyr$   r
   r   r   r   )rA   importorskipr   r   int32int64r   rY   r%   rO   r   r   r   nprd   r   s       r   $test_lollipop_graph_non_builtin_intsz9TestGeneratorClassic.test_lollipop_graph_non_builtin_ints  s~      )bhhqk288A;7::b//2BMM%S/4RS!S!Q)))r   c                 \    t        j                  t        j                               dk(  sJ y Nr   )r   r?   
null_graphr   s    r   test_null_graphz$TestGeneratorClassic.test_null_graph  s!    !!"--/2a777r   c                    t        j                  d      }t        |t        j                               sJ t        j                  d      }t        |t        j                  d            sJ t        j                  d      }t        j
                  |      sJ t        d |j                         D              g dk(  sJ |j                         dz
  |j                         k(  sJ t        j                  dt         j                        }|j                  dd      sJ |j                  dd      rJ t        j                  dt         j                        }t        |j                         |j                               sJ t        j                  d      }t        |      dk(  sJ |j                         d	k(  sJ t        j                  d
      }t        |      dk(  sJ |j                         d	k(  sJ t        j                  dt         j                        }t        |      dk(  sJ |j                         d	k(  sJ |j!                         sJ t        j                  d
t         j                        }t        |      dk(  sJ |j                         dk(  sJ t        j                  d      }|j                  d	d      sJ y )Nr   r   r   c              3   &   K   | ]	  \  }}|  y wNr   .0r,   ds      r   	<genexpr>z7TestGeneratorClassic.test_path_graph.<locals>.<genexpr>       /DAqa/   )
r   r   r	   r	   r	   r	   r	   r	   r	   r	   r
   r<   rU   r	   rX   )r   r	   r
   r	   r$   r$   )r   r%   r   r   r5   r   r   r   r   r   rD   rw   rE   r   rF   r   r`   )r   pdpmprd   r\   s         r   test_path_graphz$TestGeneratorClassic.test_path_graph  s   MM!Q000MM!Qq 1222MM"q!!!/AHHJ//3QQQQwwy1}(((]]12::6{{1a   ;;q!$$$]]2BMM:288:qwwy111MM% 1v{{vvx1}}MM&!1v{{vvx1}}MM%,1v{{vvx1}}}}MM&"**-1v{{vvx1}}MM/*zz!Qr   c                    t        t        j                  d      t        j                  d            sJ t        t        j                  g       t        j                  d            sJ t        t        j                  d      t        j                  d            sJ t        t        j                  d      t        j                  d            sJ t        t        j                  d      t        j                  d            sJ t        t        j                  d      t        j
                  dd            sJ t        j                  d      }t        d |j                         D              g d	k(  sJ t        j                  t        j                  t        j                  dt        j                  
       t        j                  dt        j                  
      }t        |j                         |j                               sJ t        j                  d      }t        |      dk(  sJ |j!                         dk(  sJ t        j                  d      }t        |      dk(  sJ |j!                         dk(  sJ t        j                  dt        j                  
      }t        |      dk(  sJ |j!                         dk(  sJ t        j                  d      }t        |      dk(  sJ |j!                         dk(  sJ y )Nr   r   r   r	   r
   r   r   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r   r   z7TestGeneratorClassic.test_star_graph.<locals>.<genexpr>  r   r   )r   r   r   r   r   r   r   r   r   r   r   r<   rU   rX   abcdefgrh   r   )r   r   r    r5   r%   rl   r   r   rA   rB   rC   rD   rE   r   rF   r   r   )r   smsrd   s       r   test_star_graphz$TestGeneratorClassic.test_star_graph  s   R]]2.q0ABBBR]]2.q0ABBBR]]1-r~~a/@AAAR]]1-r}}Q/?@@@R]]1-r}}Q/?@@@R]]1-r/J/J1a/PQQQMM"/AHHJ//3UUUUb&&r

S]]2BMM:288:qwwy111MM% 1v{{vvx1}}MM&!1v{{vvx1}}MM&r}}=1v{{vvx1}}MM)$1v{{vvx1}}r   c                     t        j                  d      }t        j                  |j	                  d            }t        |      dk(  sJ |j                         dk(  sJ y )Nr   r
   r$   )rA   r   r   r    r   r   r   r   r   rd   s      r   $test_non_int_integers_for_star_graphz9TestGeneratorClassic.test_non_int_integers_for_star_graph  sJ      )MM"((1+&1v{{vvx1}}r   ))r
   r   r   r   r   c                     t        j                  ||      }t        j                  |      ||z   k(  sJ t        j                  |      ||z   |dk(  z
  k(  sJ y r   )r   tadpole_graphr?   r@   r   s       r   test_tadpole_graph_right_sizesz3TestGeneratorClassic.test_tadpole_graph_right_sizes  sW    Q"!!!$A---!!!$Aa(8888r   )r   )r   rW   r   c                 
   t        j                  ||      }t        j                  |      t        |      t        |      z   k(  sJ t        j                  |      t        |      t        |      z   t        |      dk(  z
  k(  sJ y r   )r   r   r?   r   r@   r   s       r   &test_tadpole_graph_size_node_sequencesz;TestGeneratorClassic.test_tadpole_graph_size_node_sequences  sk    Q"!!!$AQ777!!!$AQ3q6Q;(GGGGr   c                    t        j                  t        j                  t        j                  dd       t        j                  t        j                  t        j                  dd       t        j                  t        j                  t        j                  dd       t        j                  t        j                  t        j                  dd       t        j                  t        j                        5  t        j                  ddt        j
                  	       d d d        t        j                  t        j                        5  t        j                  ddt        j                  	       d d d        y # 1 sw Y   \xY w# 1 sw Y   y xY w)
Nr|   r
   r   r   r   r;   r	   r8   r<   )rA   rB   r   rC   r   rD   rN   r   s    r   test_tadpole_graph_exceptionsz2TestGeneratorClassic.test_tadpole_graph_exceptions  s   b&&(8(8"a@b&&(8(8!Q?b&&(8(8!Q? 	b&&(8(8!R@ ]]2++, 	=Q<	=]]2++, 	BQA	B 	B	= 	=	B 	Bs   4'E6'F6E?Fc                 x    t        j                  ||      }t        |t        j                  |dz               sJ y r   )r   r   r   r%   r   s       r   +test_tadpole_graph_same_as_path_when_m_is_2z@TestGeneratorClassic.test_tadpole_graph_same_as_path_when_m_is_2  s1    Q"Qa!e 4555r   r[   r$   rh   c                 r    t        j                  |d      }t        |t        j                  |            sJ y r   )r   r   r   rk   )r   r[   rd   s      r   -test_tadpole_graph_same_as_cycle_when_m2_is_0zBTestGeneratorClassic.test_tadpole_graph_same_as_cycle_when_m2_is_0  s-    Q"Qq 1222r   c                     t        j                  dd      }t        j                  ddt         j                        }t        |j	                         |j	                               sJ y r   )r   r   rE   r   rF   r   s      r   !test_tadpole_graph_for_multigraphz6TestGeneratorClassic.test_tadpole_graph_for_multigraph  sH    Q#a"--@288:qwwy111r   c           	          t        j                  t        j                  d      t        j                  t	        dd                  }|j                  dd       t        t        j                  ||      |      sJ y r   )r   r   rk   r%   rO   r   r   r   r   s       r   %test_tadpole_graph_mixing_input_typesz:TestGeneratorClassic.test_tadpole_graph_mixing_input_types  sY    
 ::bnnQ/uS#1OP!S!R--a3X>>>r   c           	      b   t        j                  d      }t        j                  |j	                  d      |j                  d            }t        j                  t        j                  d      t        j                  t        dd                  }|j                  dd       t        ||      sJ y r   )rA   r   r   r   r   r   r   rk   r%   rO   r   r   r   s       r   'test_tadpole_graph_non_builtin_integersz<TestGeneratorClassic.test_tadpole_graph_non_builtin_integers  s|      )RXXa["((1+6::bnnQ/uS#1OP!S!Q)))r   c                 \    t        j                  t        j                               dk(  sJ y )Nr   )r   r?   trivial_graphr   s    r   test_trivial_graphz'TestGeneratorClassic.test_trivial_graph  s$    !!""2"2"45:::r   c           	          t        j                  t        j                  dd            dk(  sJ t        t        j                  dd      t        j                  dddd            sJ y )N   r$   ?   r
   )r   r@   turan_graphr   complete_multipartite_graphr   s    r   test_turan_graphz%TestGeneratorClassic.test_turan_graph  sY    !!"..Q"78B>>>NN2q!2#A#A!Q1#M
 	
 
r   c           	         dt        j                         fdt        j                         fdt        j                  d      fdt        j                  d      fdt        j                  d      fdt        j                  d      ffD ](  \  }}t        j
                  |      }t        ||      r(J  t        j
                  d      }t        d |j                         D              g d	k(  sJ t        j                  t         j                  t         j
                  dt         j                  
       t        j
                  dt        j                         
      }t        |j                         |j                               sJ t        j
                  d      }t!        |      dk(  sJ |j#                         dk(  sJ t        j
                  d      }t!        |      dk(  sJ |j#                         dk(  sJ t        j
                  dt         j                        }t!        |      dk(  sJ |j#                         dk(  sJ y )Nr   r   r   r	   r
   r$   r   c              3   &   K   | ]	  \  }}|  y wr   r   r   s      r   r   z8TestGeneratorClassic.test_wheel_graph.<locals>.<genexpr>1  r   r   )
r
   r
   r
   r
   r
   r
   r
   r
   r
   r*   r<   rU   rX   r   )r   r   r5   r%   rY   wheel_graphr   r   r   rA   rB   rC   rD   rE   r   rF   r   r   )r   r,   rd   r\   r]   s        r   test_wheel_graphz%TestGeneratorClassic.test_wheel_graph$  s   ! q!"a !!!!$%!!!$%
 		'DAq q!A A&&&		' NN2/AHHJ//3QQQQb&&T^^BR]]_=288:qwwy111NN5!1v{{vvx1}}NN6"1v{{vvx1}}NN62==11v{{vvx1}}r   c                     t        j                  d      }t        j                  |j	                  d            }t        |      dk(  sJ |j                         dk(  sJ y )Nr   r
   )rA   r   r   r  r   r   r   r   s      r   %test_non_int_integers_for_wheel_graphz:TestGeneratorClassic.test_non_int_integers_for_wheel_graphC  sJ      )NN288A;'1v{{vvx1}}r   c                     t        j                         }t        j                         }t        ||      sJ t	        |j                         |j                               sJ y)z:Tests that the complete 0-partite graph is the null graph.N)r   r  r   r   r   rF   r   rd   r   s      r   test_complete_0_partite_graphz2TestGeneratorClassic.test_complete_0_partite_graphI  sG    **,MMO1a   1779aggi000r   c                     t        j                  d      }t        j                  d      }t        ||      sJ t	        |j                         |j                               sJ y)z;Tests that the complete 1-partite graph is the empty graph.r
   N)r   r  r5   r   r   rF   r  s      r   test_complete_1_partite_graphz2TestGeneratorClassic.test_complete_1_partite_graphP  sL    **1-NN11a   1779aggi000r   c                     t        j                  dd      }t        j                  dd      }t        ||      sJ t	        |j                         |j                               sJ y)zZTests that the complete 2-partite graph is the complete bipartite
        graph.

        r	   r
   N)r   r  rl   r   r   rF   r  s      r   test_complete_2_partite_graphz2TestGeneratorClassic.test_complete_2_partite_graphW  sT    
 **1a0''1-1a   1779aggi000r   c                 F   t        j                  ddd      }g d}|D ]J  }t        j                  |d      D ]/  \  }}|||   vsJ |j                  |   |j                  |   k(  r/J  L t        j
                  |d      D ]M  \  }}t        j                  ||      D ]/  \  }}|||   v sJ |j                  |   |j                  |   k7  r/J  O t        j                  t         j                  d      5  t        j                  ddd       ddd       y# 1 sw Y   yxY w)	z5Tests for generating the complete multipartite graph.r	   r
   r$   )ru   )r	   r
   r$   )r   r   rh      zNegative number of nodesrz   N)
r   r  	itertoolscombinations_with_replacementrZ   combinationsproductrA   rB   rC   )r   rd   blocksblockuvblock1block2s           r    test_complete_multipartite_graphz5TestGeneratorClassic.test_complete_multipartite_grapha  s&   **1a32 	0E!??qI 01!}$}wwqzQWWQZ///0	0
 (44VQ? 	0NFF!))&&9 01AaDy ywwqzQWWQZ///0	0 ]]2++3MN 	5**1b!4	5 	5 	5s   6DD c                    t        t        j                  dd      t        j                               sJ t	        dd      D ]7  }t        t        j                  |d      t        j
                  |            r7J  t	        dd      D ]:  }t        t        j                  ||dz
        t        j                  |            r:J  t        j                  t        j                  dd            dk(  sJ y )Nr   r	   r   rh   r
   r  i  )r   r   kneser_graphr   rO   rY   r5   r@   )r   r   js      r   test_kneser_graphz&TestGeneratorClassic.test_kneser_graphr  s    R__Q2B4E4E4GHHH q! 	NA A!68I8I!8LMMM	N q! 	OA AE!:BNN1<MNNN	O
 !!"//!Q"78C???r   N)5r   r   r   r   r"   r(   r-   r1   r3   r6   r9   rK   rR   r^   ra   rf   rs   rx   r   r   r   r   rA   markparametrizer   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      s]   $3# $
3342l;02, 0Q@%1N'<2 [[Z)CD< E<
 [[Z*o)FGK HK
C  [[Z)NO6 P62
 [[	[<"7&)9LM@	@
*8" H> [[Z)KL9 M9
 [[Z)STH UH
B [[Z)NO6 P6 [[S1a&)3 *32
 [[	[<"7&)9LM?	?
*;
>1115"@r   r   )__doc__r  r   rA   networkxr   (networkx.algorithms.isomorphism.isomorphr   networkx.utilsr   r   r   r   r   r   r   <module>r/     s1        N 3)k	@ k	@r   