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

Unit tests for various classic graph generators in generators/classic.py
    N)graph_could_be_isomorphic)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         X/var/www/html/env/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                 l   [         R                  " SSS9n[        U[         R                  " S5      5      (       d   e[         R                  " SSS9n[        U[         R                  " S5      5      (       d   e[         R                  " SSS9n[        U[         R                  " S5      5      (       d   eg )Nr
   r   )r   r      
   )r   r   is_isomorphic
star_graphr   r   s     r   test_balanced_tree_star,TestGeneratorClassic.test_balanced_tree_star%   s    qA&Qa 01111qA&Qa 01111rQ'Qb 12222r   c                     [         R                  " SS5      n[         R                  " S5      n[        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.   s5     Q"MM!Q""""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_tree8   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[        X5      (       d   eg )Nr
      r   )r   r/   r   r!   )r   r   ths      r   test_full_rary_tree_balanced1TestGeneratorClassic.test_full_rary_tree_balancedE   s7    a$a#Q####r   c                     [         R                  " SS5      n[        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_pathJ   s0    a$Qb 12222r   c                     [         R                  " SS5      n[        U[         R                  " S5      5      (       d   e[         R                  " SS5      n[        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_emptyN   s^    a$Qr 23333a#Qq 12222r   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_20T   s&    a$wwyBr   c                    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[        U[         R                  " US-   5      5      (       d   eSnSn[         R                  " X5      n[        U[         R                  " US-   5      5      (       d   eSnSn[         R                  " X5      n[        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_graphX   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$Qb1f 56666R$Qb1f 56666R$Qb1f 56666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   GraphrM   rN   MultiDiGraphrangebinomial_treerH   rI   )r   graphsrF   r0   rR   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
   rE   abc)arR   cr   abcbr'   r   )
r   complete_graphrH   rI   rN   r   rO   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_   rE   r   r`   r   r   )r   rd   rM   rH   rI   r   r   is_directed)r   rf   rg   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   rE   )	r   circular_ladder_graphrJ   rK   rL   rM   rN   r   rO   )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[        XV5      (       d   eg )Nr   r      r   r
   r   r   )r   circulant_graphcycle_graphr   rO   rd   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W++++r   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   rE   r
   r   r`   r   rc   )
r   ry   r   rO   rN   rM   has_edgerl   r   r   )r   rq   rr   rg   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 supportedrv   rE   zmultigraph not supported)r    dorogovtsev_goltsev_mendes_graphr   rO   r   listaverage_clusteringaverage_shortest_path_lengthsorted	trianglesvalues	is_planarrH   rI   degreerJ   rK   rL   rM   rN   rX   )r   rq   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        rE   rW   )rF   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<   
isinstancerW   rJ   rK   	TypeErrorrN   rM   r(   is_multigraphrl   r   typingProtocol)r   rq   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)namerE   )r   r<   rH   rI   r   r   rM   r   rN   petersen_graphrW   )r   rq   petes      r   test_empty_graph%TestGeneratorClassic.test_empty_graph2  s   NN!!!$)))NN2!!!$***!!!$)))NN5!1v{{vvx1}} NN2BJJE,BC!!!$***!!!$)))!RZZ(((( NN2BMMu,EF!!!$***!!!$)))!R]]++++   "NN2D1!!!$***!!!$)))!RXX&&&&r   c                 v   S[         R                  " S5      4S[         R                  " S5      4S[         R                  " S5      4S[         R                  " SS/5      44 H,  u  p[        [         R                  " U5      U5      (       a  M,   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    rE   )r   r<   r(   hypercube_graph
grid_graphr!   ladder_graphrJ   rK   rL   rM   rN   r   rO   )r   irq   rg   rh   s        r   test_ladder_graph&TestGeneratorClassic.test_ladder_graphP  s    q!"a !""1%&2w'(	
DA !!3Q7777
 	b&&TOOA__QR]];288:qwwy1111r   )rf   r0   )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_graphrH   rI   r   rf   r0   rq   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   rH   r   rI   r   s       r   &test_lollipop_graph_size_node_sequence;TestGeneratorClassic.test_lollipop_graph_size_node_sequencee  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   ra   r   rD   rE   )rJ   rK   r   rL   r   rM   rX   r   s    r   test_lollipop_graph_exceptions3TestGeneratorClassic.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++,a"//B -, -,,,s   .%F-?%F>-
F;>
G))r
   r   )r
   r   )r
   r    )r   r@   c                     [         R                  " X5      n[        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_2{  s2    a#Qa!e 45555r   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@   rE   )r   r   rN   r   rO   r   rq   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   rw   c           	         [         R                  " [         R                  " S5      [         R                  " [	        SS5      5      5      nUR                  SS5        [        [         R                  " X5      U5      (       d   eg Nr'   d   g   r   )r   composerd   r(   rY   add_edger!   r   r   rf   r0   expecteds       r   &test_lollipop_graph_mixing_input_types;TestGeneratorClassic.test_lollipop_graph_mixing_input_types  s\    
 ::b//2BMM%S/4RS!S!R..q4h????r   c           	      t   [         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        [        X#5      (       d   eg Nnumpyr'   r   r   r   r   )rJ   importorskipr   r   int32int64r   rd   r(   rY   r   r!   r   nprq   r   s       r   $test_lollipop_graph_non_builtin_ints9TestGeneratorClassic.test_lollipop_graph_non_builtin_ints  s      )bhhqk288A;7::b//2BMM%S/4RS!S!Q))))r   c                 b    [         R                  " [         R                  " 5       5      S:X  d   eg Nr   )r   rH   
null_graphr   s    r   test_null_graph$TestGeneratorClassic.test_null_graph  s!    !!"--/2a777r   c                    [         R                  " S5      n[        U[         R                  " 5       5      (       d   e[         R                  " S5      n[        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   .0r0   ds      r   	<genexpr>7TestGeneratorClassic.test_path_graph.<locals>.<genexpr>       /JDAaJ   )
r   r   r
   r
   r
   r
   r
   r
   r
   r
   r   rE   r`   r
   rc   )r   r
   r   r
   r'   r'   )r   r(   r!   r   r<   r   r   r   r   r   rM   r   rN   r   rO   r   rl   )r   pdpmprq   rg   s         r   test_path_graph$TestGeneratorClassic.test_path_graph  s*   MM!Q0000MM!Qq 12222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                 n   [        [        R                  " S5      [        R                  " S5      5      (       d   e[        [        R                  " / 5      [        R                  " S5      5      (       d   e[        [        R                  " S5      [        R                  " S5      5      (       d   e[        [        R                  " S5      [        R                  " S5      5      (       d   e[        [        R                  " S5      [        R                  " S5      5      (       d   e[        [        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    rE   r`   rc   abcdefgrv   r   )r!   r   r"   r<   r(   rz   r   r   rJ   rK   rL   rM   rN   r   rO   r   r   )r   smsrq   s       r   test_star_graph$TestGeneratorClassic.test_star_graph  s+   R]]2.q0ABBBBR]]2.q0ABBBBR]]1-r~~a/@AAAAR]]1-r}}Q/?@@@@R]]1-r}}Q/?@@@@R]]1-r/J/J1a/PQQQ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'   )rJ   r   r   r"   r   r   r   r   r   rq   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_graphrH   rI   r   s       r   test_tadpole_graph_right_sizes3TestGeneratorClassic.test_tadpole_graph_right_sizes  sQ    Q"!!!$---!!!$a(8888r   )r   )r   rb   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  rH   r   rI   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   rD   r
   r@   rE   )rJ   rK   r   rL   r  rM   rX   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[        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  s2    Q"Qa!e 45555r   rf   r'   rv   c                     [         R                  " US5      n[        U[         R                  " U5      5      (       d   eg r   )r   r  r!   ry   )r   rf   rq   s      r   -test_tadpole_graph_same_as_cycle_when_m2_is_0BTestGeneratorClassic.test_tadpole_graph_same_as_cycle_when_m2_is_0  s0    Q"Qq 12222r   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  rN   r   rO   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                  " X5      U5      (       d   eg r   )r   r   ry   r(   rY   r   r!   r  r   s       r   %test_tadpole_graph_mixing_input_types:TestGeneratorClassic.test_tadpole_graph_mixing_input_types  sZ    
 ::bnnQ/uS#1OP!S!R--a3X>>>>r   c           	      t   [         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        [        X#5      (       d   eg r   )rJ   r   r   r  r   r   r   ry   r(   rY   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!Q))))r   c                 b    [         R                  " [         R                  " 5       5      S:X  d   eg )Nr   )r   rH   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                  " SS5      [         R                  " SSSS5      5      (       d   eg )N   r'   ?   r   )r   rI   turan_graphr!   complete_multipartite_graphr   s    r   test_turan_graph%TestGeneratorClassic.test_turan_graph  s^    !!"..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 H-  u  p[         R
                  " U5      n[        X25      (       a  M-   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>1  r   r  )
r   r   r   r   r   r   r   r   r   r.   rE   r`   rc   r   )r   r   r<   r(   rd   wheel_graphr!   r   r   rJ   rK   rL   rM   rN   r   rO   r   r   )r   r0   rq   rg   rh   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   )rJ   r   r   r:  r   r   r   r  s      r   %test_non_int_integers_for_wheel_graph:TestGeneratorClassic.test_non_int_integers_for_wheel_graphC  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   r4  r   r   r   rO   r   rq   r   s      r   test_complete_0_partite_graph2TestGeneratorClassic.test_complete_0_partite_graphI  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   r4  r<   r   r   rO   rA  s      r   test_complete_1_partite_graph2TestGeneratorClassic.test_complete_1_partite_graphP  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   r4  rz   r   r   rO   rA  s      r   test_complete_2_partite_graph2TestGeneratorClassic.test_complete_2_partite_graphW  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   rv      zNegative number of nodesr   N)
r   r4  	itertoolscombinations_with_replacementre   combinationsproductrJ   rK   rL   )r   rq   blocksblockuvblock1block2s           r    test_complete_multipartite_graph5TestGeneratorClassic.test_complete_multipartite_grapha  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                  " SS5      [        R                  " 5       5      (       d   e[	        SS5       H?  n[        [        R                  " US5      [        R
                  " U5      5      (       a  M?   e   [	        SS5       HA  n[        [        R                  " X"S-
  5      [        R                  " U5      5      (       a  MA   e   [        R                  " [        R                  " SS5      5      S:X  d   eg )Nr   r
   r   rv   r   rK  i  )r!   r   kneser_graphr   rY   rd   r<   rI   )r   r   js      r   test_kneser_graph&TestGeneratorClassic.test_kneser_graphr  s    R__Q2B4E4E4GHHHH q!A A!68I8I!8LMMMM  q!A E!:BNN1<MNNNN 
 !!"//!Q"78C???r   r   N)7r   r   r   r   r   r$   r+   r1   r6   r9   r=   rA   rT   r\   ri   rm   rs   r   r   r   r   r   r   rJ   markparametrizer   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r!  r$  r'  r*  r.  r5  r;  r>  rB  rE  rH  rW  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__rM  r   rJ   networkxr   (networkx.algorithms.isomorphism.isomorphr   networkx.utilsr   r   r!   r   r   r   r   <module>rd     s1        N 3)k	@ k	@r   