o
    3ήc1                     @   sT   d dl Z d dlZd dlZddlmZmZmZmZm	Z	m
Z
mZmZ 	 G dd dZdS )    N   )alternating_havel_hakimi_graphcomplete_bipartite_graphconfiguration_modelgnmk_random_graphhavel_hakimi_graphpreferential_attachment_graphrandom_graphreverse_havel_hakimi_graphc                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestGeneratorsBipartitec                    s$  t dd}t|t sJ dD ]"}t |d}t|t|s#J t d|}t|t|s3J qt dd}t|tdsDJ t dd}t|tdsTJ t dd}t|tdsdJ dD ]\}}t ||}t||| kszJ t||| ksJ qft	
tj t dd	tjd
 W d    n1 sw   Y  t	
tj t dd	tjd
 W d    n1 sw   Y  t dd	tjd
}| sJ t| t| ksJ t dd	tjd
}| sJ t| t| ksJ t dd	}t| t| ksJ | rJ | rJ ddgdfdddfD ]M\} t | }t|tjrIt tjrDt||   t|}nt tjrTt   fdd|D }|t|jksgJ | t|ksrJ q&ddgd	fd	ddgfdfD ]\} t	
tjt |  qd S )Nr   )      r      r   r   ))r      )      r   r   create_usingab)r   r   )r   r   )r   r   c                    s   h | ]} D ]}||fqqS  r   ).0uvn2r   Z/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/bipartite/tests/test_generators.py	<setcomp>N   s    zHTestGeneratorsBipartite.test_complete_bipartite_graph.<locals>.<setcomp>)abcbcd)r   nxis_isomorphic
null_graphempty_graphcycle_graph
star_graphnumber_of_nodesnumber_of_edgespytestraisesNetworkXErrorDiGraphMultiDiGraph
MultiGraphis_multigraphsortededgesis_directed
isinstancenumbersIntegralrangesetsizelen)selfGim1m2mGn1r/   r   r   r   test_complete_bipartite_graph   s^   









"z5TestGeneratorsBipartite.test_complete_bipartite_graphc                 C   s"  g }g }t ||}t|dksJ ddg}ddg}t ||}t|dks&J | dks.J g d}g d}ttjt || g d}g d}t ||}tdd | D g dks]J g d}g d}t ||}td	d | D g dks{J g d
}g d}t ||}|	 sJ |
 rJ tdd | D g dksJ tt|tt|}| dksJ tt|tt|t|t| }| dksJ t||tjd}|	 rJ |
 rJ tjtjt ||t d tjtjt ||tjd tjtjt ||tjd d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                 s       | ]\}}|V  qd S Nr   r   ndr   r   r   	<genexpr>i       zCTestGeneratorsBipartite.test_configuration_model.<locals>.<genexpr>
r   r   r   r   r   r   r   r   r   r   c                 s   rC   rD   r   rE   r   r   r   rH   n   rI   r   r   r   r   r   r   r   r   r   c                 s   rC   rD   r   rE   r   r   r   rH   u   rI   	r   r   r   r   r   r   r   r   r      r   r   )r   r7   r&   r'   r(   r   r)   r.   degreer-   r0   projected_graphGraphr4   r%   r
   r*   r+   r8   aseqbseqr9   GUGDr   r   r   test_configuration_modelV   s\   


"
"
"(
z0TestGeneratorsBipartite.test_configuration_modelc                 C   s  g }g }t ||}t|dksJ ddg}ddg}t ||}t|dks&J | dks.J g d}g d}ttjt || g d}t ||}tdd | D g dksYJ g d}g d}t ||}|	 slJ |
 rrJ td	d | D g dksJ tt|tt|}| d
ksJ tt|tt|t|t| }| dksJ t||tjd}|	 rJ |
 rJ tjtjt ||tjd tjtjt ||tjd tjtjt ||tjd d S )Nr   r   r@   rA   rB   c                 s   rC   rD   r   rE   r   r   r   rH      rI   zBTestGeneratorsBipartite.test_havel_hakimi_graph.<locals>.<genexpr>rJ   c                 s   rC   rD   r   rE   r   r   r   rH      rI   rN   r   )r   r7   r&   r'   r(   r   r)   r.   rO   r-   r0   rP   rQ   r4   r%   r
   r*   r+   rR   r   r   r   test_havel_hakimi_graph   sR   


"
"(
z/TestGeneratorsBipartite.test_havel_hakimi_graphc                 C   s  g }g }t ||}t|dksJ ddg}ddg}t ||}t|dks&J | dks.J g d}g d}ttjt || g d}t ||}tdd | D g dksYJ g d}g d}t ||}td	d | D g dkswJ g d
}g d}t ||}|	 sJ |
 rJ tdd | D g dksJ tt|tt|}| dksJ tt|tt|t|t| }| dksJ t ||tjd}|	 rJ |
 rJ tjtjt ||tjd tjtjt ||tjd tjtjt ||tjd d S )Nr   r   r@   rA   rB   c                 s   rC   rD   r   rE   r   r   r   rH      rI   zJTestGeneratorsBipartite.test_reverse_havel_hakimi_graph.<locals>.<genexpr>rJ   c                 s   rC   rD   r   rE   r   r   r   rH      rI   rK   rL   c                 s   rC   rD   r   rE   r   r   r   rH      rI   rM   rN   r   r   )r
   r7   r&   r'   r(   r   r)   r.   rO   r-   r0   rP   rQ   r4   r%   r*   r+   rR   r   r   r   test_reverse_havel_hakimi_graph   j   


"
"
"(
z7TestGeneratorsBipartite.test_reverse_havel_hakimi_graphc                 C   s  g }g }t ||}t|dksJ ddg}ddg}t ||}t|dks&J | dks.J g d}g d}ttjt || g d}t ||}tdd | D g dksYJ g d}g d}t ||}td	d | D g dkswJ g d
}g d}t ||}|	 sJ |
 rJ tdd | D g dksJ tt|tt|}| dksJ tt|tt|t|t| }| dksJ t||tjd}|	 rJ |
 rJ tjtjt ||tjd tjtjt ||tjd tjtjt ||tjd d S )Nr   r   r@   rA   rB   c                 s   rC   rD   r   rE   r   r   r   rH     rI   zNTestGeneratorsBipartite.test_alternating_havel_hakimi_graph.<locals>.<genexpr>rJ   c                 s   rC   rD   r   rE   r   r   r   rH     rI   rK   rL   c                 s   rC   rD   r   rE   r   r   r   rH      rI   rM   rN   r   r   )r   r7   r&   r'   r(   r   r)   r.   rO   r-   r0   rP   rQ   r4   r%   r
   r*   r+   rR   r   r   r   #test_alternating_havel_hakimi_graph  rZ   z;TestGeneratorsBipartite.test_alternating_havel_hakimi_graphc                 C   s   g d}t |d}| sJ | rJ t |dtjd}| r#J | r)J tjtjt |dt d tjtjt |dt d tjtjt |dt d d S )N)r   r   r   r   g      ?r   )	r   r-   r0   r   rQ   r'   r(   r)   r*   )r8   rS   r9   r   r   r   test_preferential_attachmentB  s8   

z4TestGeneratorsBipartite.test_preferential_attachmentc                 C   sv   d}d}t ||d}t|dksJ t|sJ tjj|\}}tt||ks,J tt||| |ks9J d S )N
      ?   	r	   r7   r   is_bipartite
algorithms	bipartitesetsr5   r4   r8   rF   mr9   XYr   r   r   test_random_graphb  s   z)TestGeneratorsBipartite.test_random_graphc                 C   sz   d}d}t ||ddd}t|dksJ t|sJ tjj|\}}tt||ks.J tt||| |ks;J d S )Nr]   r^   r_   T)directedr`   ra   rf   r   r   r   test_random_digraphl  s   z+TestGeneratorsBipartite.test_random_digraphc                 C   s   d}d}d}t |||dd}t||| ksJ t|sJ tjj|\}}tt||ks2J tt||| |ks?J |tt	|
 ksKJ d S )Nr]   r^   d   i  )seedr   r7   r   rb   rc   rd   re   r5   r4   listr/   r8   rF   rg   r/   r9   rh   ri   r   r   r   test_gnmk_random_graphv  s   z.TestGeneratorsBipartite.test_gnmk_random_graphc                 C   s   d}d}d}t |||}t||| ksJ t|sJ tjj|\}}tt||ks0J tt||| |ks=J |tt	|
 ksIJ d S )Nr]   r^      ro   rq   r   r   r   test_gnmk_random_graph_complete  s   z7TestGeneratorsBipartite.test_gnmk_random_graph_completeN)__name__
__module____qualname__r?   rW   rX   rY   r[   r\   rj   rl   rr   rt   r   r   r   r   r      s    =93@@ 

r   )r2   r'   networkxr   
generatorsr   r   r   r   r   r   r	   r
   r   r   r   r   r   <module>   s    (