
    sh^                     L    S r SSKrSSKrSSKrSSKrSSKJrJr   " S S5      r	g)z
====================
Generators - Classic
====================

Unit tests for various classic graph generators in generators/classic.py
    N)edges_equalnodes_equalc            	          \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS r\R0                  R3                  S/ SQ5      S 5       r\R0                  R3                  SSS/5      S 5       rS r\R0                  R3                  S/ SQ5      S 5       rS r\R0                  R3                  SSS / S!QS"4S#/ S$Q4/5      S% 5       rS& r S' r!S( r"S) r#S* r$\R0                  R3                  S/ S+Q5      S, 5       r%\R0                  R3                  S/ S-Q5      S. 5       r&S/ r'\R0                  R3                  S/ SQ5      S0 5       r(\R0                  R3                  S1S2S3/5      S4 5       r)S5 r*\R0                  R3                  SSS / S!QS"4S#/ S$Q4/5      S6 5       r+S7 r,S8 r-S9 r.S: r/S; r0S< r1S= r2S> r3S? r4S@ r5SAr6gB)CTestGeneratorClassic   c                    S H  u  p[         R                  " X5      nUR                  5       nXAUS-   -  S-
  US-
  -  :X  d   e[         R                  " U5      (       d   eUR	                  5       US-
  :X  d   e[         R
                  " U5      nUS   S:X  d   eUS   X-  :X  d   eXQ   S:X  d   eXQS-      XAU-  -
  S-
  :X  d   e[        U5      US-   :X  a  M   e   g )N))   r	   )   r
   )   r	      r   r	   )nxbalanced_treeorderis_connectedsizedegree_histogramlen)selfrhtr   dhs         z/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/networkx/generators/tests/test_classic.pytest_balanced_tree'TestGeneratorClassic.test_balanced_tree   s    ,DA  &AGGIE1q5\A-!a%8888??1%%%%668uqy((($$Q'Ba5A::a5AD= =5A::!e91q 0000r7a!e### -    c                    [         R                  " SSS9n[         R                  " U[         R                  " S5      5      (       d   e[         R                  " SSS9n[         R                  " U[         R                  " S5      5      (       d   e[         R                  " SSS9n[         R                  " U[         R                  " S5      5      (       d   eg )Nr	   r   )r   r      
   )r   r   could_be_isomorphic
star_graphr   r   s     r   test_balanced_tree_star,TestGeneratorClassic.test_balanced_tree_star"   s    qA&%%aq)9::::qA&%%aq)9::::rQ'%%ar):;;;;r   c                     [         R                  " SS5      n[         R                  " S5      n[         R                  " X5      (       d   eg)zKTests 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_path,TestGeneratorClassic.test_balanced_tree_path+   s;     Q"MM!%%a++++r   c                 L   SnSn[         R                  " X5      nUR                  5       U:X  d   e[         R                  " U5      (       d   e[         R                  " U5      nUS   S:X  d   eUS   S:X  d   eXA   S:X  d   eXAS-      S:X  d   e[        U5      US-   :X  d   eg )Nr	   	   r   r   r   r
   )r   full_rary_treer   r   r   r   )r   r   nr   r   s        r   test_full_rary_tree(TestGeneratorClassic.test_full_rary_tree5   s    a#wwyA~~q!!!!  #!uzz!uzzuzza%yI%%%2w!a%r   c                     [         R                  " SS5      n[         R                  " SS5      n[         R                  " X5      (       d   eg )Nr	      r
   )r   r.   r   r    )r   r   ths      r   test_full_rary_tree_balanced1TestGeneratorClassic.test_full_rary_tree_balancedB   s=    a$a#%%a,,,,r   c                     [         R                  " SS5      n[         R                  " U[         R                  " S5      5      (       d   eg )Nr   r   )r   r.   r    r'   r"   s     r   test_full_rary_tree_path-TestGeneratorClassic.test_full_rary_tree_pathG   s6    a$%%ar):;;;;r   c                 (   [         R                  " SS5      n[         R                  " U[         R                  " S5      5      (       d   e[         R                  " SS5      n[         R                  " U[         R                  " S5      5      (       d   eg )Nr   r   r
   )r   r.   r    empty_graphr"   s     r   test_full_rary_tree_empty.TestGeneratorClassic.test_full_rary_tree_emptyK   sj    a$%%a);<<<<a#%%a):;;;;r   c                 ^    [         R                  " SS5      nUR                  5       S:X  d   eg )Nr
      )r   r.   r   r"   s     r   test_full_rary_tree_3_20-TestGeneratorClassic.test_full_rary_tree_3_20Q   s&    a$wwyBr   c                 J   SnSn[         R                  " X5      n[         R                  " U5      SU-  U-   :X  d   e[         R                  " U5      XS-
  -  U-   S-   :X  d   eSnSn[         R                  " X5      n[         R                  " U5      SU-  U-   :X  d   e[         R                  " U5      XS-
  -  U-   S-   :X  d   eSnSn[         R                  " X5      n[         R                  " U5      SU-  U-   :X  d   e[         R                  " U5      XS-
  -  U-   S-   :X  d   eSnSn[        R
                  " [         R                  [         R                  X5        SnSn[        R
                  " [         R                  [         R                  X5        SnSn[         R                  " X5      n[         R                  " U[         R                  " US-   5      5      (       d   eSnSn[         R                  " X5      n[         R                  " U[         R                  " US-   5      5      (       d   eSnSn[         R                  " X5      n[         R                  " U[         R                  " US-   5      5      (       d   e[        R
                  " [         R                  [         R                  X[         R                  " 5       S	9  [         R                  " X[         R                  " 5       S	9n[        UR                  5       UR                  5       5      (       d   eg )
Nr
   r   r	   r   r&   r   r?   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_graph'TestGeneratorClassic.test_barbell_graphU   s    R$!!!$B333!!!$1f(:Q(>>>>R$!!!$B333!!!$1f(:Q(>>>>R$!!!$B333!!!$1f(:Q(>>>> b&&(8(8"A b&&(8(8"A R$%%arAv)>????R$%%arAv)>????R$%%arAv)>????b..RZZ\	
 b2==?C288:qwwy1111r   c                 f   S [         R                  [         R                  [         R                  [         R                  4nU Hl  n[        S5       HZ  n[         R                  " X25      n[         R                  " U5      SU-  :X  d   e[         R                  " U5      SU-  S-
  :X  a  MZ   e   Mn     g )Nr&   r	   r   )	r   GraphrL   rM   MultiDiGraphrangebinomial_treerG   rH   )r   graphsrE   r/   rQ   s        r   test_binomial_tree'TestGeneratorClassic.test_binomial_tree   s    "**bmmR__M"L1X$$Q5))!,1444))!,A:::  #r   c                 Z   S HY  n[         R                  " U5      n[         R                  " U5      U:X  d   e[         R                  " U5      XS-
  -  S-  :X  a  MY   e   [         R                  " W[         R                  S9n[        UR                  5       WR                  5       5      (       d   e[         R                  " S5      n[        UR                  5       / SQ5      (       d   eUR                  5       S:X  d   e[         R                  " S5      n[        UR                  5       / SQ5      (       d   eUR                  5       S	:X  d   e[         R                  " S[         R                  S9n[        UR                  5       / SQ5      (       d   eUR                  5       S
:X  d   eg )Nr   r   r
   r   r   r	   rD   abc)arQ   cr
   abcbr&   r   )
r   complete_graphrG   rH   rM   r   rN   r   nodesr   )r   mgmgs       r   test_complete_graph(TestGeneratorClassic.test_complete_graph   sK    A!!!$A%%a(A---%%a(AQK1,<<<< 
 qr}}=288:qwwy1111e$1779o6666vvx1}} f%1779o6666vvx1}}f2==A1779o6666vvx1}}r   c                    S Hc  n[         R                  " U[         R                  S9n[         R                  " U5      U:X  d   e[         R                  " U5      XS-
  -  :X  a  Mc   e   [         R                  " S[         R                  S9n[        U5      S:X  d   eUR                  5       S:X  d   eUR                  5       (       d   eg )Nr^   rD   r   r_   r
   r   )r   rc   rL   rG   rH   r   r   is_directed)r   re   rf   s      r   test_complete_digraph*TestGeneratorClassic.test_complete_digraph   s     A!!!"**=A%%a(A---%%a(AQK777 
 e"**=1v{{vvx1}}}}r   c                 V   [         R                  " S5      n[        R                  " [         R                  [         R                  S[         R
                  S9  [         R                  " S[         R                  S9n[        UR                  5       UR                  5       5      (       d   eg )Nr   rD   )	r   circular_ladder_graphrI   rJ   rK   rL   rM   r   rN   )r   GmGs      r   test_circular_ladder_graph/TestGeneratorClassic.test_circular_ladder_graph   sn    $$Q'b66

	
 %%abmmD288:qwwy1111r   c                    [         R                  " SS/5      n[         R                  " S5      n[        UR	                  5       UR	                  5       5      (       d   e[         R                  " S/ SQ5      n[         R
                  " S5      n[        UR	                  5       UR	                  5       5      (       d   e[         R                  " SSS/5      n[         R                  " SS5      n[         R                  " XV5      (       d   eg )Nr   r      r   r	   r
   r
   )r   circulant_graphcycle_graphr   rN   rc   complete_bipartite_graphr    )r   Ci6_1C6Ci7K7Ci6_1_3K3_3s          r   test_circulant_graph)TestGeneratorClassic.test_circulant_graph   s    ""1qc*^^A5;;="((*5555   I.q!399;
3333 $$QA/**1a0%%g4444r   c                 ,   [         R                  " S5      n[        UR                  5       / SQ5      (       d   e[         R                  " S[         R                  S9n[        UR                  5       / SQ5      (       d   e[         R                  " S[         R
                  S9nUR                  SS5      (       a   eUR                  SS5      (       d   eUR                  5       (       d   e[         R                  " S5      n[        U5      S:X  d   eUR                  5       S:X  d   e[         R                  " S5      n[        U5      S:X  d   eUR                  5       S:X  d   e[         R                  " S[         R
                  5      n[        U5      S:X  d   eUR                  5       S:X  d   eUR                  5       (       d   e[         R                  " S[         R
                  5      n[        U5      S:X  d   eUR                  5       S:X  d   eg )	Nr&   )r   r   )r   r
   r   r	   )r	   r
   rD   r	   r   r_   r
   rb   )
r   rx   r   rN   rM   rL   has_edgerk   r   r   )r   rp   rq   rf   s       r   test_cycle_graph%TestGeneratorClassic.test_cycle_graph   s   NN11779&FGGGG^^ABMM:288:'GHHHHNN12::6::a####zz!Q}}NN5!1v{{vvx1}}NN6"1v{{vvx1}}NN5"**-1v{{vvx1}}}}NN62::.1v{{vvx1}}r   c                    [         R                  " S5      n[        UR                  5       S/5      (       d   e[	        [        U5      SS/5      (       d   e[         R                  " S5      n[        UR                  5       / SQ5      (       d   e[         R                  " U5      S:X  d   e[         R                  " U5      S:X  d   e[        [         R                  " U5      R                  5       5      / SQ:X  d   e[         R                  " U5      (       d   e[         R                  " S5      n[         R                  " U5      S:X  d   e[         R                  " U5      S	:X  d   e[         R                  " U5      S
:X  d   e[         R                  " U5      S:X  d   e[         R                  " U5      (       d   e[         R                  " S5      n[         R                  " U5      S:X  d   e[         R                  " U5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   eUR                  S5      S:X  d   e[        R                   " [         R"                  SS9   [         R                  " S5        S S S 5        [        R                   " [         R"                  SS9   [         R                  " S[         R$                  S9  S S S 5        [        R                   " [         R"                  SS9   [         R                  " S[         R&                  S9  S S S 5        [        R                   " [         R"                  5         [         R                  " S[         R(                  S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r   r   )r   )r   r	   r   g      ?)r   r   r   r	   r   r-   g      ?gffffff?r   iVs  i  i   zn must be greater thanmatchzdirected graph not supportedru   rD   zmultigraph not supported)r    dorogovtsev_goltsev_mendes_graphr   rN   r   listaverage_clusteringaverage_shortest_path_lengthsorted	trianglesvalues	is_planarrG   rH   degreerI   rJ   rK   rL   rM   rW   )r   rp   s     r   %test_dorogovtsev_goltsev_mendes_graph: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//3 N]]2++3RS//

K T]]2++3NO//N P]]2++,//P -, NMSSOO,,s0   3N5$N$N#$N4
N
N #
N14
Oc                    [         R                  " 5       n[        U[         R                  5      (       d   e[        R
                  " [        [         R                  SS9  [        R
                  " [        [         R                  SS9  [         R                  " [         R                  S9n[        U[         R                  5      (       d   e[         R                  " [         R                  S9n[        U[         R                  5      (       d   e[         R                  " [         R                  [         R                  S9n[        U[         R                  5      (       d   e[         R                  " S [         R                  S9n[        U[         R                  5      (       d   e[         R                  " [         R                  S9n[        U[         R                  5      (       d   e[         R                  " S5      n[         R                  " US9nUR                  5       (       a   eUR                  5       (       a   e[        U5      S:X  d   eXL d   e[         R                  " [         R                  " 5       S9nUR                  5       (       d   eUR                  5       (       a   eXLd   e " S S	[        R                  5      n " S
 SU[         R                  5      n[         R                  " US9ng )Ng        rD   rV   )rE   default)r   r   r   c                       \ rS rSrSrg)5TestGeneratorClassic.test_create_using.<locals>.Mixini'   N__name__
__module____qualname____firstlineno____static_attributes__r   r   r   Mixinr   '      r   r   c                       \ rS rSrSrg)7TestGeneratorClassic.test_create_using.<locals>.MyGraphi*  r   Nr   r   r   r   MyGraphr   *  r   r   r   )r   r;   
isinstancerV   rI   rJ   	TypeErrorrM   rL   r'   is_multigraphrk   r   typingProtocol)r   rp   Hr   r   s        r   test_create_using&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{{vvNN8    ==??""zz	FOO 		eRZZ 	 NN0r   c                    [         R                  " 5       n[         R                  " U5      S:X  d   e[         R                  " S5      n[         R                  " U5      S:X  d   e[         R                  " U5      S:X  d   e[         R                  " S5      n[	        U5      S:X  d   eUR                  5       S:X  d   e[         R                  " S[         R                  " SS9S9n[         R                  " U5      S:X  d   e[         R                  " U5      S:X  d   e[        U[         R                  5      (       d   e[         R                  " S[         R                  " SS9S9n[         R                  " U5      S:X  d   e[         R                  " U5      S:X  d   e[        U[         R                  5      (       d   e[         R                  " 5       n[         R                  " SUS9n[         R                  " U5      S:X  d   e[         R                  " U5      S:X  d   e[        U[         R                  5      (       d   eg )Nr   *   r_   r
   duh)namerD   )r   r;   rG   rH   r   r   rL   r   rM   petersen_graphrV   )r   rp   petes      r   test_empty_graph%TestGeneratorClassic.test_empty_graph/  s   NN!!!$)))NN2!!!$***!!!$)))NN5!1v{{vvx1}} NN2BJJE,BC!!!$***!!!$)))!RZZ(((( NN2BMMu,EF!!!$***!!!$)))!R]]++++   "NN2D1!!!$***!!!$)))!RXX&&&&r   c                    S[         R                  " S5      4S[         R                  " S5      4S[         R                  " S5      4S[         R                  " SS/5      44 H7  u  p[         R
                  " [         R                  " U5      U5      (       a  M7   e   [        R                  " [         R                  [         R                  S[         R                  S9  [         R                  " S5      n[         R                  " S[         R                  S9n[        UR                  5       UR                  5       5      (       d   eg )Nr   r   r	   r   rD   )r   r;   r'   hypercube_graph
grid_graphr    ladder_graphrI   rJ   rK   rL   rM   r   rN   )r   irp   rf   rg   s        r   test_ladder_graph&TestGeneratorClassic.test_ladder_graphM  s    q!"a !""1%&2w'(	
DA ))"//!*<a@@@@
 	b&&TOOA__QR]];288:qwwy1111r   )re   r/   )r
   r   r&   r   r
   r?   c                     [         R                  " X5      n[         R                  " U5      X-   :X  d   e[         R                  " U5      XS-
  -  S-  U-   :X  d   eg Nr   r	   )r   lollipop_graphrG   rH   r   re   r/   rp   s       r   test_lollipop_graph_right_sizes4TestGeneratorClassic.test_lollipop_graph_right_sizes\  sU    a#!!!$---!!!$Ua!(;;;;r   ab r_   defgc                    [         R                  " X5      n[         R                  " U5      [        U5      [        U5      -   :X  d   e[         R                  " U5      [        U5      [        U5      S-
  -  S-  [        U5      -   :X  d   eg r   )r   r   rG   r   rH   r   s       r   &test_lollipop_graph_size_node_sequence;TestGeneratorClassic.test_lollipop_graph_size_node_sequenceb  so    a#!!!$AQ777!!!$A#a&1*(=(ACF(JJJJr   c                    [         R                  " [        R                  [        R                  SS5        [         R                  " [        R                  [        R                  SS5        [         R                  " [        R                  [        R                  SS5        [         R                  " [        R                  [        R                  SS5        [         R                  " [        R                  [        R                  SS5        [         R                  " [        R                  5         [        R                  " SS[        R
                  S	9  S S S 5        [         R                  " [        R                  5         [        R                  " SS[        R                  S	9  S S S 5        g ! , (       d  f       N`= f! , (       d  f       g = f)
Nr   r	   r   r?   r   r`   r   rC   rD   )rI   rJ   r   rK   r   rL   rW   r   s    r   test_lollipop_graph_exceptions3TestGeneratorClassic.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++,a"//B -, -,,,s   .%F-?%F>-
F;>
G))r	   r   )r	   r   )r	   r   )r   r?   c                     [         R                  " X5      n[         R                  " U[         R                  " US-   5      5      (       d   eg Nr	   )r   r   r    r'   r   s       r   -test_lollipop_graph_same_as_path_when_m1_is_2BTestGeneratorClassic.test_lollipop_graph_same_as_path_when_m1_is_2x  s8    a#%%aq1u)=>>>>r   c                     [         R                  " SS5      n[         R                  " SS[         R                  S9n[        UR	                  5       UR	                  5       5      (       d   eg Nr   r?   rD   )r   r   rM   r   rN   r   rp   MGs      r   "test_lollipop_graph_for_multigraph7TestGeneratorClassic.test_lollipop_graph_for_multigraph}  sK    a$q"2==A288:qwwy1111r   )r&   r_   )abcdr
   )r   r	   r
   r&   r_   r   rv   c           	         [         R                  " [         R                  " S5      [         R                  " [	        SS5      5      5      nUR                  SS5        [         R                  " [         R                  " X5      U5      (       d   eg Nr&   d   g   r   )r   composerc   r'   rX   add_edger    r   r   re   r/   expecteds       r   &test_lollipop_graph_mixing_input_types;TestGeneratorClassic.test_lollipop_graph_mixing_input_types  sb    
 ::b//2BMM%S/4RS!S!%%b&7&7&=xHHHHr   c           	         [         R                  " S5      n[        R                  " UR	                  S5      UR                  S5      5      n[        R                  " [        R                  " S5      [        R                  " [        SS5      5      5      nUR                  SS5        [        R                  " X#5      (       d   eg Nnumpyr&   r
   r   r   r   )rI   importorskipr   r   int32int64r   rc   r'   rX   r   r    r   nprp   r   s       r   $test_lollipop_graph_non_builtin_ints9TestGeneratorClassic.test_lollipop_graph_non_builtin_ints  s      )bhhqk288A;7::b//2BMM%S/4RS!S!%%a2222r   c                 b    [         R                  " [         R                  " 5       5      S:X  d   eg Nr   )r   rG   
null_graphr   s    r   test_null_graph$TestGeneratorClassic.test_null_graph  s!    !!"--/2a777r   c                 $   [         R                  " S5      n[         R                  " U[         R                  " 5       5      (       d   e[         R                  " S5      n[         R                  " U[         R                  " S5      5      (       d   e[         R                  " S5      n[         R
                  " U5      (       d   e[        S UR                  5        5       5      / SQ:X  d   eUR                  5       S-
  UR                  5       :X  d   e[         R                  " S[         R                  S9nUR                  SS5      (       d   eUR                  SS5      (       a   e[         R                  " S[         R                  S9n[        UR                  5       UR                  5       5      (       d   e[         R                  " S5      n[        U5      S:X  d   eUR                  5       S	:X  d   e[         R                  " S
5      n[        U5      S:X  d   eUR                  5       S	:X  d   e[         R                  " S[         R                  5      n[        U5      S:X  d   eUR                  5       S	:X  d   eUR!                  5       (       d   e[         R                  " S
[         R                  5      n[        U5      S:X  d   eUR                  5       S:X  d   e[         R                  " S5      nUR                  S	S5      (       d   eg )Nr   r   r   c              3   *   #    U  H	  u  pUv   M     g 7fNr   .0r/   ds      r   	<genexpr>7TestGeneratorClassic.test_path_graph.<locals>.<genexpr>       /JDAaJ   )
r   r   r	   r	   r	   r	   r	   r	   r	   r	   r
   rD   r_   r	   rb   )r   r	   r
   r	   r&   r&   )r   r'   r    r   r;   r   r   r   r   r   rL   r   rM   r   rN   r   rk   )r   pdpmprp   rf   s         r   test_path_graph$TestGeneratorClassic.test_path_graph  s6   MM!%%a9999MM!%%a):;;;;MM"q!!!!/AHHJ//3QQQQwwy1}(((]]12::6{{1a    ;;q!$$$$]]2BMM:288:qwwy1111MM% 1v{{vvx1}}MM&!1v{{vvx1}}MM%,1v{{vvx1}}}}MM&"**-1v{{vvx1}}MM/*zz!Qr   c                    [         R                  " [         R                  " S5      [         R                  " S5      5      (       d   e[         R                  " [         R                  " / 5      [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      [         R                  " S5      5      (       d   e[         R                  " [         R                  " S5      [         R
                  " SS5      5      (       d   e[         R                  " S5      n[        S UR                  5        5       5      / S	Q:X  d   e[        R                  " [         R                  [         R                  S[         R                  S
9  [         R                  " S[         R                  S
9n[        UR                  5       UR                  5       5      (       d   e[         R                  " S5      n[        U5      S:X  d   eUR!                  5       S:X  d   e[         R                  " S5      n[        U5      S:X  d   eUR!                  5       S:X  d   e[         R                  " S[         R                  S
9n[        U5      S:X  d   eUR!                  5       S:X  d   e[         R                  " S5      n[        U5      S:X  d   eUR!                  5       S:X  d   eg )Nr   r   r   r	   r
   r   r   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r   s      r   r   7TestGeneratorClassic.test_star_graph.<locals>.<genexpr>  r   r   )r   r   r   r   r   r   r   r   r   r   r   rD   r_   rb   abcdefgru   r   )r   r    r!   r;   r'   ry   r   r   rI   rJ   rK   rL   rM   r   rN   r   r   )r   smsrp   s       r   test_star_graph$TestGeneratorClassic.test_star_graph  sZ   %%bmmB&79JKKKK%%bmmB&79JKKKK%%bmmA&6q8IJJJJ%%bmmA&6a8HIIII%%bmmA&6a8HIIII%%MM!b99!Q?
 
 	
 
 MM"/AHHJ//3UUUUb&&r

S]]2BMM:288:qwwy1111MM% 1v{{vvx1}}MM&!1v{{vvx1}}MM&r}}=1v{{vvx1}}MM)$1v{{vvx1}}r   c                     [         R                  " S5      n[        R                  " UR	                  S5      5      n[        U5      S:X  d   eUR                  5       S:X  d   eg )Nr   r
   r&   )rI   r   r   r!   r   r   r   r   r   rp   s      r   $test_non_int_integers_for_star_graph9TestGeneratorClassic.test_non_int_integers_for_star_graph  sJ      )MM"((1+&1v{{vvx1}}r   ))r
   r   r   r   r   c                     [         R                  " X5      n[         R                  " U5      X-   :X  d   e[         R                  " U5      X-   US:H  -
  :X  d   eg r   )r   tadpole_graphrG   rH   r   s       r   test_tadpole_graph_right_sizes3TestGeneratorClassic.test_tadpole_graph_right_sizes  sQ    Q"!!!$---!!!$a(8888r   )r   )r   ra   r   c                    [         R                  " X5      n[         R                  " U5      [        U5      [        U5      -   :X  d   e[         R                  " U5      [        U5      [        U5      -   [        U5      S:H  -
  :X  d   eg r   )r   r  rG   r   rH   r   s       r   &test_tadpole_graph_size_node_sequences;TestGeneratorClassic.test_tadpole_graph_size_node_sequences  si    Q"!!!$AQ777!!!$AQ3q6Q;(GGGGr   c                 4   [         R                  " [        R                  [        R                  SS5        [         R                  " [        R                  [        R                  SS5        [         R                  " [        R                  [        R                  SS5        [         R                  " [        R                  [        R                  SS5        [         R                  " [        R                  5         [        R                  " SS[        R
                  S	9  S S S 5        [         R                  " [        R                  5         [        R                  " SS[        R                  S	9  S S S 5        g ! , (       d  f       N`= f! , (       d  f       g = f)
Nr   r
   r   r   r   rC   r	   r?   rD   )rI   rJ   r   rK   r  rL   rW   r   s    r   test_tadpole_graph_exceptions2TestGeneratorClassic.test_tadpole_graph_exceptions  s    b&&(8(8"a@b&&(8(8!Q?b&&(8(8!Q? 	b&&(8(8!R@ ]]2++,Q< -]]2++,QA -, -,,,s   9%E8
%F	8
F	
Fc                     [         R                  " X5      n[         R                  " U[         R                  " US-   5      5      (       d   eg r   )r   r  r    r'   r   s       r   +test_tadpole_graph_same_as_path_when_m_is_2@TestGeneratorClassic.test_tadpole_graph_same_as_path_when_m_is_2  s8    Q"%%aq1u)=>>>>r   re   r&   ru   c                     [         R                  " US5      n[         R                  " U[         R                  " U5      5      (       d   eg r   )r   r  r    rx   )r   re   rp   s      r   -test_tadpole_graph_same_as_cycle_when_m2_is_0BTestGeneratorClassic.test_tadpole_graph_same_as_cycle_when_m2_is_0   s6    Q"%%a):;;;;r   c                     [         R                  " SS5      n[         R                  " SS[         R                  S9n[        UR	                  5       UR	                  5       5      (       d   eg r   )r   r  rM   r   rN   r   s      r   !test_tadpole_graph_for_multigraph6TestGeneratorClassic.test_tadpole_graph_for_multigraph  sK    Q#a"--@288:qwwy1111r   c           	         [         R                  " [         R                  " S5      [         R                  " [	        SS5      5      5      nUR                  SS5        [         R                  " [         R                  " X5      U5      (       d   eg r   )r   r   rx   r'   rX   r   r    r  r   s       r   %test_tadpole_graph_mixing_input_types:TestGeneratorClassic.test_tadpole_graph_mixing_input_types
  s`    
 ::bnnQ/uS#1OP!S!%%b&6&6q&<hGGGGr   c           	         [         R                  " S5      n[        R                  " UR	                  S5      UR                  S5      5      n[        R                  " [        R                  " S5      [        R                  " [        SS5      5      5      nUR                  SS5        [        R                  " X#5      (       d   eg r   )rI   r   r   r  r   r   r   rx   r'   rX   r   r    r   s       r   'test_tadpole_graph_non_builtin_integers<TestGeneratorClassic.test_tadpole_graph_non_builtin_integers  s      )RXXa["((1+6::bnnQ/uS#1OP!S!%%a2222r   c                 b    [         R                  " [         R                  " 5       5      S:X  d   eg )Nr   )r   rG   trivial_graphr   s    r   test_trivial_graph'TestGeneratorClassic.test_trivial_graph  s$    !!""2"2"45:::r   c           	          [         R                  " [         R                  " SS5      5      S:X  d   e[         R                  " [         R                  " SS5      [         R                  " SSSS5      5      (       d   eg )N   r&   ?   r
   )r   rH   turan_graphr    complete_multipartite_graphr   s    r   test_turan_graph%TestGeneratorClassic.test_turan_graph  sd    !!"..Q"78B>>>%%NN2q!2#A#A!Q1#M
 
 	
 
r   c           	         S[         R                  " 5       4S[         R                  " 5       4S[         R                  " S5      4S[         R                  " S5      4S[         R                  " S5      4S[         R                  " S5      44 H8  u  p[         R
                  " U5      n[         R                  " X25      (       a  M8   e   [         R
                  " S5      n[        S UR                  5        5       5      / S	Q:X  d   e[        R                  " [         R                  [         R
                  S[         R                  S
9  [         R
                  " S[         R                  " 5       S
9n[        UR                  5       UR                  5       5      (       d   e[         R
                  " S5      n[!        U5      S:X  d   eUR#                  5       S:X  d   e[         R
                  " S5      n[!        U5      S:X  d   eUR#                  5       S:X  d   e[         R
                  " S[         R                  5      n[!        U5      S:X  d   eUR#                  5       S:X  d   eg )Nr   r   r   r	   r
   r&   r   c              3   *   #    U  H	  u  pUv   M     g 7fr   r   r   s      r   r   8TestGeneratorClassic.test_wheel_graph.<locals>.<genexpr>0  r   r   )
r
   r
   r
   r
   r
   r
   r
   r
   r
   r-   rD   r_   rb   r   )r   r   r;   r'   rc   wheel_graphr    r   r   rI   rJ   rK   rL   rM   r   rN   r   r   )r   r/   rp   rf   rg   s        r   test_wheel_graph%TestGeneratorClassic.test_wheel_graph#  s   ! q!"a !!!!$%!!!$%
DA q!A))!////
 NN2/AHHJ//3QQQQb&&T^^BR]]_=288:qwwy1111NN5!1v{{vvx1}}NN6"1v{{vvx1}}NN62==11v{{vvx1}}r   c                     [         R                  " S5      n[        R                  " UR	                  S5      5      n[        U5      S:X  d   eUR                  5       S:X  d   eg )Nr   r
   )rI   r   r   r9  r   r   r   r  s      r   %test_non_int_integers_for_wheel_graph:TestGeneratorClassic.test_non_int_integers_for_wheel_graphB  sJ      )NN288A;'1v{{vvx1}}r   c                     [         R                  " 5       n[         R                  " 5       n[        X5      (       d   e[	        UR                  5       UR                  5       5      (       d   eg)z:Tests that the complete 0-partite graph is the null graph.N)r   r3  r   r   r   rN   r   rp   r   s      r   test_complete_0_partite_graph2TestGeneratorClassic.test_complete_0_partite_graphH  sK    **,MMO1    1779aggi0000r   c                     [         R                  " S5      n[         R                  " S5      n[        X5      (       d   e[	        UR                  5       UR                  5       5      (       d   eg)z;Tests that the complete 1-partite graph is the empty graph.r
   N)r   r3  r;   r   r   rN   r@  s      r   test_complete_1_partite_graph2TestGeneratorClassic.test_complete_1_partite_graphO  sP    **1-NN11    1779aggi0000r   c                     [         R                  " SS5      n[         R                  " SS5      n[        X5      (       d   e[	        UR                  5       UR                  5       5      (       d   eg)zJTests that the complete 2-partite graph is the complete bipartite
graph.

r	   r
   N)r   r3  ry   r   r   rN   r@  s      r   test_complete_2_partite_graph2TestGeneratorClassic.test_complete_2_partite_graphV  sX    
 **1a0''1-1    1779aggi0000r   c                 f   [         R                  " SSS5      n/ SQnU HO  n[        R                  " US5       H1  u  pEXQU   ;  d   eUR                  U   UR                  U   :X  a  M1   e   MQ     [        R
                  " US5       HP  u  pg[        R                  " Xg5       H1  u  pEXQU   ;   d   eUR                  U   UR                  U   :w  a  M1   e   MR     [        R                  " [         R                  SS9   [         R                  " SSS5        SSS5        g! , (       d  f       g= f)	z5Tests for generating the complete multipartite graph.r	   r
   r&   )r   )r	   r
   r&   )r   r   ru      zNegative number of nodesr   N)
r   r3  	itertoolscombinations_with_replacementrd   combinationsproductrI   rJ   rK   )r   rp   blocksblockuvblock1block2s           r    test_complete_multipartite_graph5TestGeneratorClassic.test_complete_multipartite_graph`  s    **1a32E!??qI!}$}wwqzQWWQZ/// J 
 (44VQ?NF!))&9aDy ywwqzQWWQZ/// : @ ]]2++3MN**1b!4 ONNs    D""
D0c                 ^   [         R                  " [         R                  " SS5      [         R                  " 5       5      (       d   e[	        SS5       HJ  n[         R                  " [         R                  " US5      [         R
                  " U5      5      (       a  MJ   e   [	        SS5       HL  n[         R                  " [         R                  " X"S-
  5      [         R                  " U5      5      (       a  ML   e   [         R                  " [         R                  " SS5      5      S:X  d   eg )Nr   r	   r   ru   r
   rJ  i  )r   r    kneser_graphr   rX   rc   r;   rH   )r   r   js      r   test_kneser_graph&TestGeneratorClassic.test_kneser_graphq  s    %%booa&;R=N=N=PQQQQ q!A))"//!Q*?ARARSTAUVVVV  q!A))"//!U*CR^^TUEVWWWW 
 !!"//!Q"78C???r   r   N)7r   r   r   r   r   r#   r*   r0   r5   r8   r<   r@   rS   r[   rh   rl   rr   r   r   r   r   r   r   rI   markparametrizer   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r#  r&  r)  r-  r4  r:  r=  rA  rD  rG  rV  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__rL  r   rI   networkxr   networkx.utilsr   r   r   r   r   r   <module>rb     s)        3m	@ m	@r   