
    Vh^                     L    d Z ddlZddlZddlZddlZddlmZmZ  G d d      Z	y)z
====================
Generators - Classic
====================

Unit tests for various classic graph generators in generators/classic.py
    N)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         V/home/dcms/DCMS/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        j                  dd      }t        j                  |t        j                  d            sJ t        j                  dd      }t        j                  |t        j                  d            sJ t        j                  dd      }t        j                  |t        j                  d            sJ y )Nr   r   )r   r      
   )r   r   could_be_isomorphic
star_graphr   r   s     r   test_balanced_tree_starz,TestGeneratorClassic.test_balanced_tree_star"   s    qA&%%aq)9:::qA&%%aq)9:::rQ'%%ar):;;;r   c                     t        j                  dd      }t        j                  d      }t        j                  ||      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+   s:     Q"MM!%%a+++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_tree5   s    a#wwyA~~q!!!  #!uzz!uzz!uzz!a%yI%%%2w!a%r   c                     t        j                  dd      }t        j                  dd      }t        j                  ||      sJ y )Nr      r	   )r   r*   r   r   )r   r   ths      r   test_full_rary_tree_balancedz1TestGeneratorClassic.test_full_rary_tree_balancedB   s<    a$a#%%a,,,r   c                     t        j                  dd      }t        j                  |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_pathG   s3    a$%%ar):;;;r   c                    t        j                  dd      }t        j                  |t        j                  d            sJ t        j                  dd      }t        j                  |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_emptyK   sd    a$%%a);<<<a#%%a):;;;r   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_20Q   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        j                  |t        j                  |dz               sJ d}d}t        j                  ||      }t        j                  |t        j                  |dz               sJ d}d}t        j                  ||      }t        j                  |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   r7   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_graphU   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$%%arAv)>???R$%%arAv)>???R$%%arAv)>???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   GraphrC   rD   MultiDiGraphrangebinomial_treer>   r?   )r   graphsr<   r+   rH   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)arH   cr	   abcbr#   r
   )
r   complete_graphr>   r?   rD   r   rE   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 )NrS   r;   r   rT   r	   r
   )r   rX   rC   r>   r?   r   r   is_directed)r   rZ   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_graphr@   rA   rB   rC   rD   r   rE   )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        j                  ||      sJ y )Nr
   r      r   r   r	   r	   )r   circulant_graphcycle_graphr   rE   rX   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%%gt444r   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   rT   r	   rW   )
r   rj   r   rE   rD   rC   has_edger_   r   r   )r   rc   rd   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   rt   r   )rt   )r   r   ru   g      ?)r   r   r   r   r
   r)   g      ?gffffff?r   iVs  i  i   zn must be greater thanmatchzdirected graph not supportedrg   r;   zmultigraph not supported)r    dorogovtsev_goltsev_mendes_graphr   rE   r   listaverage_clusteringaverage_shortest_path_lengthsorted	trianglesvalues	is_planarr>   r?   degreer@   rA   rB   rC   rD   rM   )r   rc   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;   rL   )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   r4   
isinstancerL   r@   rA   	TypeErrorrD   rC   r$   is_multigraphr_   r   typingProtocol)r   rc   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   *   rT   r	   duh)namer;   )r   r4   r>   r?   r   r   rC   r   rD   petersen_graphrL   )r   rc   petes      r   test_empty_graphz%TestGeneratorClassic.test_empty_graph/  s   NN!!!$)))NN2!!!$***!!!$)))NN5!1v{{vvx1}} NN2BJJE,BC!!!$***!!!$)))!RZZ((( NN2BMMu,EF!!!$***!!!$)))!R]]+++   "NN2D1!!!$***!!!$)))!RXX&&&r   c                 p   dt        j                  d      fdt        j                  d      fdt        j                  d      fdt        j                  ddg      ffD ]0  \  }}t        j
                  t        j                  |      |      r0J  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   r4   r$   hypercube_graph
grid_graphr   ladder_graphr@   rA   rB   rC   rD   r   rE   )r   irc   r[   r\   s        r   test_ladder_graphz&TestGeneratorClassic.test_ladder_graphM  s    q!"a !""1%&2w'(	
 	ADAq ))"//!*<a@@@	A 	b&&TOOA__QR]];288:qwwy111r   )rZ   r+   )r	   r   r#   r   r	   r7   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   rZ   r+   rc   s       r   test_lollipop_graph_right_sizesz4TestGeneratorClassic.test_lollipop_graph_right_sizes\  s[    a#!!!$A---!!!$QUa!(;;;;r   ab rT   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_sequenceb  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   r7   r   rU   r   r:   r;   )r@   rA   r   rB   r   rC   rM   r   s    r   test_lollipop_graph_exceptionsz3TestGeneratorClassic.test_lollipop_graph_exceptionsh  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   r7   c                     t        j                  ||      }t        j                  |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_2x  s7    a#%%aq1u)=>>>r   c                     t        j                  dd      }t        j                  ddt         j                        }t        |j	                         |j	                               sJ y Nr   r7   r;   )r   r   rD   r   rE   r   rc   MGs      r   "test_lollipop_graph_for_multigraphz7TestGeneratorClassic.test_lollipop_graph_for_multigraph}  sH    a$q"2==A288:qwwy111r   )r#   rT   )abcdr	   )r   r   r	   r#   rT   r   rh   c           	         t        j                  t        j                  d      t        j                  t	        dd                  }|j                  dd       t        j                  t        j                  ||      |      sJ y Nr#   d   g   r   )r   composerX   r$   rN   add_edger   r   r   rZ   r+   expecteds       r   &test_lollipop_graph_mixing_input_typesz;TestGeneratorClassic.test_lollipop_graph_mixing_input_types  sa    
 ::b//2BMM%S/4RS!S!%%b&7&71&=xHHHr   c           	      v   t        j                  d      }t        j                  |j	                  d      |j                  d            }t        j                  t        j                  d      t        j                  t        dd                  }|j                  dd       t        j                  ||      sJ y Nnumpyr#   r	   r   r   r   )r@   importorskipr   r   int32int64r   rX   r$   rN   r   r   r   nprc   r   s       r   $test_lollipop_graph_non_builtin_intsz9TestGeneratorClassic.test_lollipop_graph_non_builtin_ints  s      )bhhqk288A;7::b//2BMM%S/4RS!S!%%a222r   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        j                  |t        j                               sJ t        j                  d      }t        j                  |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;   rT   r   rW   )r   r   r	   r   r#   r#   )r   r$   r   r   r4   r   r   r   r   r   rC   rv   rD   r   rE   r   r_   )r   pdpmprc   r[   s         r   test_path_graphz$TestGeneratorClassic.test_path_graph  s   MM!%%a999MM!%%a):;;;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                 z   t        j                  t        j                  d      t        j                  d            sJ t        j                  t        j                  g       t        j                  d            sJ t        j                  t        j                  d      t        j                  d            sJ t        j                  t        j                  d      t        j                  d            sJ t        j                  t        j                  d      t        j                  d            sJ t        j                  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;   rT   rW   abcdefgrg   r
   )r   r   r   r4   r$   rk   r   r   r@   rA   rB   rC   rD   r   rE   r   r   )r   smsrc   s       r   test_star_graphz$TestGeneratorClassic.test_star_graph  sC   %%bmmB&79JKKK%%bmmB&79JKKK%%bmmA&6q8IJJJ%%bmmA&6a8HIII%%bmmA&6a8HIII%%MM!b99!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#   )r@   r   r   r   r   r   r   r   r   rc   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   rV   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   r7   r;   )r@   rA   r   rB   r   rC   rM   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                     t        j                  ||      }t        j                  |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  s7    Q"%%aq1u)=>>>r   rZ   r#   rg   c                     t        j                  |d      }t        j                  |t        j                  |            sJ y r   )r   r   r   rj   )r   rZ   rc   s      r   -test_tadpole_graph_same_as_cycle_when_m2_is_0zBTestGeneratorClassic.test_tadpole_graph_same_as_cycle_when_m2_is_0   s3    Q"%%a):;;;r   c                     t        j                  dd      }t        j                  ddt         j                        }t        |j	                         |j	                               sJ y r   )r   r   rD   r   rE   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        j                  t        j                  ||      |      sJ y r   )r   r   rj   r$   rN   r   r   r   r   s       r   %test_tadpole_graph_mixing_input_typesz:TestGeneratorClassic.test_tadpole_graph_mixing_input_types
  s_    
 ::bnnQ/uS#1OP!S!%%b&6&6q!&<hGGGr   c           	      v   t        j                  d      }t        j                  |j	                  d      |j                  d            }t        j                  t        j                  d      t        j                  t        dd                  }|j                  dd       t        j                  ||      sJ y r   )r@   r   r   r   r   r   r   rj   r$   rN   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!%%a222r   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        j                  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  s_    !!"..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 ]2  \  }}t        j
                  |      }t        j                  ||      r2J  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>0  r   r   )
r	   r	   r	   r	   r	   r	   r	   r	   r	   r)   r;   rT   rW   r
   )r   r   r4   r$   rX   wheel_graphr   r   r   r@   rA   rB   rC   rD   r   rE   r   r   )r   r+   rc   r[   r\   s        r   test_wheel_graphz%TestGeneratorClassic.test_wheel_graph#  s   ! q!"a !!!!$%!!!$%
 		0DAq q!A))!Q///		0 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	   )r@   r   r   r  r   r   r   r   s      r   %test_non_int_integers_for_wheel_graphz:TestGeneratorClassic.test_non_int_integers_for_wheel_graphB  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   rE   r   rc   r   s      r   test_complete_0_partite_graphz2TestGeneratorClassic.test_complete_0_partite_graphH  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  r4   r   r   rE   r  s      r   test_complete_1_partite_graphz2TestGeneratorClassic.test_complete_1_partite_graphO  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  rk   r   r   rE   r  s      r   test_complete_2_partite_graphz2TestGeneratorClassic.test_complete_2_partite_graphV  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#   )rt   )r   r	   r#   )r   r
   rg      zNegative number of nodesry   N)
r   r  	itertoolscombinations_with_replacementrY   combinationsproductr@   rA   rB   )r   rc   blocksblockuvblock1block2s           r    test_complete_multipartite_graphz5TestGeneratorClassic.test_complete_multipartite_graph`  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        j                  t        j                  dd      t        j                               sJ t	        dd      D ]A  }t        j                  t        j                  |d      t        j
                  |            rAJ  t	        dd      D ]D  }t        j                  t        j                  ||dz
        t        j                  |            rDJ  t        j                  t        j                  dd            dk(  sJ y )Nr   r   r   rg   r	   r  i  )r   r   kneser_graphr   rN   rX   r4   r?   )r   r   js      r   test_kneser_graphz&TestGeneratorClassic.test_kneser_graphq  s    %%booa&;R=N=N=PQQQ q! 	WA))"//!Q*?ARARSTAUVVV	W q! 	XA))"//!QU*CR^^TUEVWWW	X
 !!"//!Q"78C???r   N)5r   r   r   r   r!   r'   r,   r0   r2   r5   r8   rJ   rQ   r]   r`   re   rr   rw   r   r   r   r   r@   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`   $<, -
<<42l;025 0Q@%1N'<2 [[Z)CD< E<
 [[Z*o)FGK HK
C  [[Z)NO? P?2
 [[	[<"7&)9LMI	I
38" HB [[Z)KL9 M9
 [[Z)STH UH
B [[Z)NO? P? [[S1a&)< *<2
 [[	[<"7&)9LMH	H
3;
>1115"@r   r   )
__doc__r  r   r@   networkxr   networkx.utilsr   r   r   r   r   r   <module>r-     s)        3m	@ m	@r   