
    fi^                     T    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	dS )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                            dg d          d             Zej                            dddg          d             Zd Zej                            dg d          d             Zd Zej                            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                            dg d*          d+             Z$ej                            dg d,          d-             Z%d. Z&ej                            dg d          d/             Z'ej                            d0d1d2g          d3             Z(d4 Z)ej                            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? Z4d@S )ATestGeneratorClassicc                    dD ]\  }}t          j        ||          }|                                }|||dz   z  dz
  |dz
  z  k    sJ t          j        |          s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    sJ d S )N))   r   )   r	   )   r      r   r   )nxbalanced_treeorderis_connectedsizedegree_histogramlen)selfrhtr   dhs         ~/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/generators/tests/test_classic.pytest_balanced_treez'TestGeneratorClassic.test_balanced_tree   s#   , 	$ 	$DAq A&&AGGIIEQ1q5\A-!a%88888?1%%%%%6688uqy(((($Q''Ba5A::::a5AqD====a5A::::a!e91q 00000r77a!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 d S )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)9:::::qA&&&%aq)9)9:::::rQ'''%ar):):;;;;;;;r   c                     t          j        dd          }t          j        d          }t          j        ||          sJ dS )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+   sD     Q""M!%a+++++++r   c                 f   d}d}t          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 d S )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##wwyyA~~~~q!!!!! ##!uzzzz!uzzzz!uzzzz!a%yI%%%%2ww!a%r   c                     t          j        dd          }t          j        dd          }t          j        ||          sJ d S )Nr      r	   )r   r*   r   r   )r   r   ths      r   test_full_rary_tree_balancedz1TestGeneratorClassic.test_full_rary_tree_balancedB   sE    a$$a##%a,,,,,,,r   c                     t          j        dd          }t          j        |t          j        d                    sJ d S )Nr   r   )r   r*   r   r$   r    s     r   test_full_rary_tree_pathz-TestGeneratorClassic.test_full_rary_tree_pathG   s=    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 d S )Nr   r   r	   )r   r*   r   empty_graphr    s     r   test_full_rary_tree_emptyz.TestGeneratorClassic.test_full_rary_tree_emptyK   sr    a$$%a););<<<<<a##%a):):;;;;;;;r   c                 d    t          j        dd          }|                                dk    sJ d S )Nr	      )r   r*   r   r    s     r   test_full_rary_tree_3_20z-TestGeneratorClassic.test_full_rary_tree_3_20Q   s-    a$$wwyyB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          |                                |                                          sJ d S )
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3!!$$b1f(:Q(>>>>>R$$!!$$B3333!!$$b1f(:Q(>>>>>R$$!!$$B3333!!$$b1f(:Q(>>>>> b&(8"bAAA b&(8"bAAA R$$%arAv)>)>?????R$$%arAv)>)>?????R$$%arAv)>)>?????b.BRZ\\	
 	
 	
 	
 b"2=??CCC288::qwwyy1111111r   c                 6   d t           j        t           j        t           j        t           j        f}|D ]f}t          d          D ]T}t          j        ||          }t          j        |          d|z  k    sJ t          j        |          d|z  dz
  k    sJ Ugd S )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    "*bmR_M" 	; 	;L1XX ; ;$Q55)!,,14444)!,,A:::::;	; 	;r   c                 n   dD ]S}t          j        |          }t          j        |          |k    sJ t          j        |          ||dz
  z  dz  k    sJ Tt          j        |t           j                  }t          |                                |                                          sJ t          j        d          }t          |                                g d          sJ |	                                dk    sJ t          j        d          }t          |                                g d          sJ |	                                d	k    sJ t          j        dt           j                  }t          |                                g d          sJ |	                                d
k    sJ d S )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   s     	= 	=A!!$$A%a((A----%a((AQK1,<<<<<<qr}===288::qwwyy11111e$$17799ooo66666vvxx1}}}} f%%17799ooo66666vvxx1}}}}f2=AAA17799ooo66666vvxx1}}}}}}r   c                    dD ]\}t          j        |t           j                  }t          j        |          |k    sJ t          j        |          ||dz
  z  k    sJ ]t          j        dt           j                  }t          |          dk    sJ |                                dk    sJ |                                sJ d S )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      	8 	8A!!"*===A%a((A----%a((AQK77777e"*===1vv{{{{vvxx1}}}}}}r   c                 F   t          j        d          }t          j        t           j        t           j        dt           j                   t          j        dt           j                  }t          |                                |                                          sJ d S )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   s    $Q''b6
	
 	
 	
 	
 %abmDDD288::qwwyy1111111r   c                    t          j        ddg          }t          j        d          }t          |                                |                                          sJ t          j        dg d          }t          j        d          }t          |                                |                                          sJ t          j        dddg          }t          j        dd          }t          j        ||          sJ d S )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55  III..q!!399;;

33333 $QA//*1a00%gt4444444r   c                 B   t          j        d          }t          |                                g d          sJ t          j        dt           j                  }t          |                                g d          sJ t          j        dt           j                  }|                    dd          rJ |                    dd          sJ |                                sJ t          j        d          }t          |          dk    sJ |	                                dk    sJ t          j        d          }t          |          dk    sJ |	                                dk    sJ t          j        dt           j                  }t          |          dk    sJ |	                                dk    sJ |                                sJ t          j        dt           j                  }t          |          dk    sJ |	                                dk    sJ d S )	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   s   N117799&F&F&FGGGGG^ABM:::288::'G'G'GHHHHHN12:666::a#####zz!Q}}N5!!1vv{{{{vvxx1}}}}N6""1vv{{{{vvxx1}}}}N5"*--1vv{{{{vvxx1}}}}}}N62:..1vv{{{{vvxx1}}}}}}r   c                 4   t          j        d          }t          |                                dg          sJ t	          t          |          ddg          sJ t          j        d          }t          |                                g d          sJ t          j        |          dk    sJ t          j        |          dk    sJ t          t          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 |                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ t          j        t           j        d          5  t          j        d           d d d            n# 1 swxY w Y   t          j        t           j        d          5  t          j        dt           j                   d d d            n# 1 swxY w Y   t          j        t           j        d          5  t          j        dt           j                   d d d            n# 1 swxY w Y   t          j        t           j                  5  t          j        dt           j                   d d d            d S # 1 swxY w Y   d S )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217799vh/////477QF+++++/2217799&>&>&>?????$Q''3.....q11S8888bl1oo,,..//999<<<<|A/22!!$$))))!!$$))))$Q''4////.q11S8888|A/33!!$$----!!$$----xx{{d""""xx{{d""""xx{{d""""]2+3LMMM 	4 	4/333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4]2+3RSSS 	L 	L/
KKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L]2+3NOOO 	O 	O/NNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O]2+,, 	Q 	Q/PPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	QsH   %JJ
J
1!KK"%K"	!L66L:=L:!NN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        |          }|
                                rJ |                                rJ t          |          dk    sJ ||u sJ t          j        t          j                              }|
                                sJ |                                rJ ||usJ  G d d	t          j                  } G d
 d|t           j                  }t          j        |          }d S )Ng        r;   rL   )r<   default)r   r   r   c                       e Zd ZdS )5TestGeneratorClassic.test_create_using.<locals>.MixinN__name__
__module____qualname__ r   r   Mixinr   '          Dr   r   c                       e Zd ZdS )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  sg   N!RX&&&&&icBBBBigFFFFN666!R]+++++N
333!RZ(((((N
BMJJJ!RZ(((((NbmDDD!R]+++++N2=111!R]+++++M!N***??$$$$$==??"""1vv{{{{AvvvvN888     ==??"""zzzz	 	 	 	 	FO 	 	 		 	 	 	 	eRZ 	 	 	 N000r   c                 L   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 |                                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 d S )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	   N!!$$))))N2!!$$****!!$$))))N5!!1vv{{{{vvxx1}}}} N2BJE,B,B,BCCC!!$$****!!$$))))!RZ((((( N2BMu,E,E,EFFF!!$$****!!$$))))!R]+++++  ""N2D111!!$$****!!$$))))!RX&&&&&&&r   c                 T   dt          j        d          fdt          j        d          fdt          j        d          fdt          j        ddg          ffD ].\  }}t          j        t          j        |          |          sJ /t          j        t           j	        t           j        dt           j
                   t          j        d          }t          j        dt           j                  }t          |                                |                                          sJ d S )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 	ADAq )"/!*<*<a@@@@@@b&TTTTOA_QR];;;288::qwwyy1111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 d S Nr   r   )r   lollipop_graphr>   r?   r   rZ   r+   rc   s       r   test_lollipop_graph_right_sizesz4TestGeneratorClassic.test_lollipop_graph_right_sizes\  sg    a##!!$$A----!!$$QUa!(;;;;;;;r   ab rT   defgc                 8   t          j        ||          }t          j        |          t          |          t          |          z   k    sJ t          j        |          t          |          t          |          dz
  z  dz  t          |          z   k    sJ d S r   )r   r   r>   r   r?   r   s       r   &test_lollipop_graph_size_node_sequencez;TestGeneratorClassic.test_lollipop_graph_size_node_sequenceb  s    a##!!$$AQ7777!!$$A#a&&1*(=(ACFF(JJJ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            n# 1 swxY w Y   t          j        t          j                  5  t          j        ddt          j        	           d d d            d S # 1 swxY w Y   d S )
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&(92qAAAb&(91bAAAb&(92rBBBb&(93CCC 	b&(91bAAA ]2+,, 	> 	>a"*====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>]2+,, 	C 	Ca"/BBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs$   6"D$$D(+D("E<<F F ))r   r   )r   r   )r   r   )r   r7   c                     t          j        ||          }t          j        |t          j        |dz                       sJ d S 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  sA    a##%aq1u)=)=>>>>>>>r   c                     t          j        dd          }t          j        ddt           j                  }t          |                                |                                          sJ d S Nr   r7   r;   )r   r   rD   r   rE   r   rc   MGs      r   "test_lollipop_graph_for_multigraphz7TestGeneratorClassic.test_lollipop_graph_for_multigraph}  sY    a$$q"2=AAA288::qwwyy1111111r   )r#   rT   )abcdr	   )r   r   r	   r#   rT   r   rh   c           	         t          j        t          j        d          t          j        t	          dd                              }|                    dd           t          j        t          j        ||          |          sJ d S 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  st    
 :b/22BM%S//4R4RSS!S!!!%b&71&=&=xHHHHHHHr   c           	         t          j        d          }t          j        |                    d          |                    d                    }t          j        t          j        d          t          j        t          dd                              }|
                    dd           t          j        ||          sJ d S 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     ))bhhqkk288A;;77:b/22BM%S//4R4RSS!S!!!%a2222222r   c                 \    t          j        t          j                              dk    sJ d S Nr   )r   r>   
null_graphr   s    r   test_null_graphz$TestGeneratorClassic.test_null_graph  s*    !"-//22a777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 |                                D                       g dk    sJ |                                dz
  |	                                k    sJ t          j        dt           j
                  }|                    dd          sJ |                    dd          rJ t          j        dt           j                  }t          |                                |                                          sJ t          j        d          }t          |          dk    sJ |	                                d	k    sJ t          j        d
          }t          |          dk    sJ |	                                d	k    sJ t          j        dt           j
                  }t          |          dk    sJ |	                                d	k    sJ |                                sJ t          j        d
t           j
                  }t          |          dk    sJ |	                                dk    sJ t          j        d          }|                    d	d          sJ d S )Nr   r   r   c              3       K   | ]	\  }}|V  
d S Nr   .0r+   ds      r   	<genexpr>z7TestGeneratorClassic.test_path_graph.<locals>.<genexpr>  &      //DAqa//////r   )
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   M!%a99999M!%a):):;;;;;M"q!!!!!//AHHJJ/////3Q3Q3QQQQQwwyy1}((((]12:666{{1a     ;;q!$$$$$]2BM:::288::qwwyy11111M%  1vv{{{{vvxx1}}}}M&!!1vv{{{{vvxx1}}}}M%,,1vv{{{{vvxx1}}}}}}M&"*--1vv{{{{vvxx1}}}}M/**zz!Qr   c                    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 |                                D                       g d	k    sJ t          j	        t           j
        t           j        dt           j        
           t          j        dt           j        
          }t          |                                |                                          sJ t          j        d          }t          |          dk    sJ |                                dk    sJ t          j        d          }t          |          dk    sJ |                                dk    sJ t          j        dt           j        
          }t          |          dk    sJ |                                dk    sJ t          j        d          }t          |          dk    sJ |                                dk    sJ d S )Nr   r   r   r   r	   r   r   c              3       K   | ]	\  }}|V  
d S 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  s   %bmB&7&79J9JKKKKK%bmB&7&79J9JKKKKK%bmA&6&6q8I8IJJJJJ%bmA&6&6a8H8HIIIII%bmA&6&6a8H8HIIIII%M!b9!Q??
 
 	
 	
 	
 M"//AHHJJ/////3U3U3UUUUUb&r
SSSS]2BM:::288::qwwyy11111M%  1vv{{{{vvxx1}}}}M&!!1vv{{{{vvxx1}}}}M&r}===1vv{{{{vvxx1}}}}M)$$1vv{{{{vvxx1}}}}}}r   c                     t          j        d          }t          j        |                    d                    }t          |          dk    sJ |                                dk    sJ d S )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  sW     ))M"((1++&&1vv{{{{vvxx1}}}}}}r   ))r	   r   r   r   r   c                     t          j        ||          }t          j        |          ||z   k    sJ t          j        |          ||z   |dk    z
  k    sJ d S r   )r   tadpole_graphr>   r?   r   s       r   test_tadpole_graph_right_sizesz3TestGeneratorClassic.test_tadpole_graph_right_sizes  sc    Q""!!$$A----!!$$Aa(8888888r   )r   )r   rV   r   c                 4   t          j        ||          }t          j        |          t          |          t          |          z   k    sJ t          j        |          t          |          t          |          z   t          |          dk    z
  k    sJ d S r   )r   r   r>   r   r?   r   s       r   &test_tadpole_graph_size_node_sequencesz;TestGeneratorClassic.test_tadpole_graph_size_node_sequences  s    Q""!!$$AQ7777!!$$AQ3q66Q;(GGG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            n# 1 swxY w Y   t          j        t          j                  5  t          j        ddt          j        	           d d d            d S # 1 swxY w Y   d S )
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"a@@@b&(8!Q???b&(8!Q??? 	b&(8!R@@@ ]2+,, 	= 	=Q<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=]2+,, 	B 	BQAAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs$   "C99C= C=""EEEc                     t          j        ||          }t          j        |t          j        |dz                       sJ d S 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  sA    Q""%aq1u)=)=>>>>>>>r   rZ   r#   rg   c                     t          j        |d          }t          j        |t          j        |                    sJ d S 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   s=    Q""%a):):;;;;;;;r   c                     t          j        dd          }t          j        ddt           j                  }t          |                                |                                          sJ d S r   )r   r   rD   r   rE   r   s      r   !test_tadpole_graph_for_multigraphz6TestGeneratorClassic.test_tadpole_graph_for_multigraph  sY    Q##a"-@@@288::qwwyy1111111r   c           	         t          j        t          j        d          t          j        t	          dd                              }|                    dd           t          j        t          j        ||          |          sJ d S 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
  ss    
 :bnQ//uS#1O1OPP!S!!!%b&6q!&<&<hGGGGGGGr   c           	         t          j        d          }t          j        |                    d          |                    d                    }t          j        t          j        d          t          j        t          dd                              }|
                    dd           t          j        ||          sJ d S 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6:bnQ//uS#1O1OPP!S!!!%a2222222r   c                 \    t          j        t          j                              dk    sJ d S )Nr   )r   r>   trivial_graphr   s    r   test_trivial_graphz'TestGeneratorClassic.test_trivial_graph  s-    !""2"4"45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 d S )N   r#   ?   r	   )r   r?   turan_graphr   complete_multipartite_graphr   s    r   test_turan_graphz%TestGeneratorClassic.test_turan_graph  su    !".Q"7"788B>>>>%N2q!!2#A!Q1#M#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 ]0\  }}t          j        |          }t          j        ||          sJ 1t          j        d          }t          d |                                D                       g d	k    sJ t          j
        t           j        t           j        dt           j        
           t          j        dt          j                    
          }t          |                                |                                          sJ t          j        d          }t!          |          dk    sJ |                                dk    sJ t          j        d          }t!          |          dk    sJ |                                dk    sJ t          j        dt           j                  }t!          |          dk    sJ |                                dk    sJ d S )Nr   r   r   r   r	   r#   r   c              3       K   | ]	\  }}|V  
d S 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  !!!$$%!!$$%
 		0 		0DAq q!!A)!Q//////N2//AHHJJ/////3Q3Q3QQQQQb&TTTT^BR]__===288::qwwyy11111N5!!1vv{{{{vvxx1}}}}N6""1vv{{{{vvxx1}}}}N62=111vv{{{{vvxx1}}}}}}r   c                     t          j        d          }t          j        |                    d                    }t          |          dk    sJ |                                dk    sJ d S )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  sW     ))N288A;;''1vv{{{{vvxx1}}}}}}r   c                     t          j                    }t          j                    }t          ||          sJ t	          |                                |                                          sJ dS )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  s]    *,,MOO1a     17799aggii0000000r   c                     t          j        d          }t          j        d          }t          ||          sJ t	          |                                |                                          sJ dS )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  sc    *1--N11a     17799aggii0000000r   c                     t          j        dd          }t          j        dd          }t          ||          sJ t	          |                                |                                          sJ dS )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  sj    
 *1a00'1--1a     17799aggii0000000r   c                 ,   t          j        ddd          }g d}|D ]G}t          j        |d          D ]/\  }}|||         vsJ |j        |         |j        |         k    sJ 0Ht          j        |d          D ]J\  }}t          j        ||          D ]/\  }}|||         v sJ |j        |         |j        |         k    sJ 0Kt          j        t           j	        d          5  t          j        ddd           ddd           dS # 1 swxY w Y   dS )	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3222 	0 	0E!?qII 0 01!}}}}wqzQWQZ/////0 (4VQ?? 	0 	0NFF!)&&99 0 01AaDyyyywqzQWQZ/////0 ]2+3MNNN 	5 	5*1b!444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   %D		DDc                    t          j        t          j        dd          t          j                              sJ t	          dd          D ]>}t          j        t          j        |d          t          j        |                    sJ ?t	          dd          D ]A}t          j        t          j        ||dz
            t          j        |                    sJ Bt          j        t          j        dd                    dk    sJ d S )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   %boa&;&;R=N=P=PQQQQQ q! 	W 	WA)"/!Q*?*?ARSTAUAUVVVVVV q! 	X 	XA)"/!QU*C*CR^TUEVEVWWWWWW !"/!Q"7"78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2 42 42l; ; ;  0  2 2 25 5 5   0Q Q Q@%1 %1 %1N' ' '<2 2 2 [Z)C)C)CDD< < ED<
 [Z*o)FGGK K HGK
C C C  [Z)N)N)NOO? ? PO?2 2 2
 [	[<<<"7&)))9LM I I	 I
3 3 38 8 8"  "  " H  B   [Z)K)K)KLL9 9 ML9
 [Z)S)S)STTH H UTH
B B B [Z)N)N)NOO? ? PO? [S1a&))< < *)<2 2 2
 [	[<<<"7&)))9LM H H	 H
3 3 3; ; ;
 
 
  >  1 1 11 1 11 1 15 5 5"@ @ @ @ @r   r   )
__doc__r  r   r@   networkxr   networkx.utilsr   r   r   r   r   r   <module>r,     s               3 3 3 3 3 3 3 3m	@ m	@ m	@ m	@ m	@ m	@ m	@ m	@ m	@ m	@r   