o
    3ήc                     @   s.   d dl Z d dlZd dlmZ G dd dZdS )    N)	bipartitec                   @   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d Zdd Zdd Zdd Zdd ZdS ) TestBipartiteBasicc                 C   sB   t tds
J t tdgsJ t tdrJ d S )N   )   r      )r   is_bipartitenx
path_graphDiGraphcomplete_graph)self r   U/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/bipartite/tests/test_basic.pytest_is_bipartite   s   z$TestBipartiteBasic.test_is_bipartitec                 C   s.   t d}t|}|dddddksJ d S )Nr   r   r   )r   r      r   )r   r	   r   color)r   Gcr   r   r   test_bipartite_color   s   

z'TestBipartiteBasic.test_bipartite_colorc                 C   sB   t tj ttd}W d    d S 1 sw   Y  d S )Nr   )pytestraisesr   NetworkXErrorr   r   r   )r   r   r   r   r   test_not_bipartite_color   s   "z+TestBipartiteBasic.test_not_bipartite_colorc                 C   s$   t jddddd}t |sJ d S )N
   皙?T)directed)r   random_graphr   r   r   r   r   r   test_bipartite_directed   s   z*TestBipartiteBasic.test_bipartite_directedc                 C   s<   t d}t|\}}|ddhksJ |ddhksJ d S Nr   r   r   r   r   r   r	   r   setsr   r   XYr   r   r   test_bipartite_sets   s   
z&TestBipartiteBasic.test_bipartite_setsc                 C   sD   t d}| }t|\}}|ddhksJ |ddhks J d S r   )r   r	   to_directedr   r!   )r   r   Dr#   r$   r   r   r   test_bipartite_sets_directed    s
   
z/TestBipartiteBasic.test_bipartite_sets_directedc                 C   sF   t d}ddg}t||\}}|ddhksJ |ddhks!J d S r   r    )r   r   	top_nodesr#   r$   r   r   r   #test_bipartite_sets_given_top_nodes'   s
   
z6TestBipartiteBasic.test_bipartite_sets_given_top_nodesc                 C   sX   t tj td}|ddg t|\}}W d    d S 1 s%w   Y  d S )Nr   )      )r,      )r   r   r   AmbiguousSolutionr	   add_edges_fromr   r!   r"   r   r   r    test_bipartite_sets_disconnected.   s
   
"z3TestBipartiteBasic.test_bipartite_sets_disconnectedc                 C   s   t d}tt j t|g d W d    n1 sw   Y  t|ddgs-J t|ddgs7J t|ddgrAJ |dd t|g d	sQJ t|g d
s[J t|g dseJ t|g dsoJ d S )Nr   )r   r   r   r   r   r   r   r   r      )r   r   r   )r   r   r1   )r   r   r   )r   r   r1   )r   r	   r   r   r.   r   is_bipartite_node_setadd_edger   r   r   r   test_is_bipartite_node_set4   s   
z-TestBipartiteBasic.test_is_bipartite_node_setc                 C   s   t d}t|\}}tt| t|t|  }t|||ks&J t | }t|||d ks9J tt 	 i dksEJ d S )Nr+   g       @g        )
r   r	   r   r!   lenlistedgesdensityr
   Graph)r   r   r#   r$   r8   r'   r   r   r   test_bipartite_densityC   s   
 z)TestBipartiteBasic.test_bipartite_densityc                 C   s\   t d}ddh}h d}t||\}}t|dddks J t|ddddks,J d S )Nr+   r   r      r   r   r   r   r   r   r   r   r   )r   r	   r   degreesdictr   r   r#   r$   udr   r   r   test_bipartite_degreesL   s   
z)TestBipartiteBasic.test_bipartite_degreesc                 C   s   t d}|jddddd ddh}h d}tj||d	d
\}}t|dddks+J t|ddddks7J tj||dd
\}}t|dddksLJ t|ddddksXJ d S )Nr+   r   r   r   皙?weightotherr   r;   rF   rF   g?r   r<   r=   rG   g333333?)r   r	   r3   r   r>   r?   r@   r   r   r   test_bipartite_weighted_degreesT   s   
z2TestBipartiteBasic.test_bipartite_weighted_degreesc                 C   sz   t d td}|jddddd ddg}g d	}tj||d
d}|d dks+J tj||dd}|d dks;J d S )Nscipyr+   r   r   r   r   rE   r   r=   rF   rH   )r   r   rG   r   importorskipr   r	   r3   r   biadjacency_matrixr   r   r#   r$   Mr   r   r   test_biadjacency_matrix_weight`   s   

z1TestBipartiteBasic.test_biadjacency_matrix_weightc                 C   s   t d g d}g d}tt|D ]4}t|| || d}dd |jddD }t||}|jd	 || ks<J |jd
 || ksGJ qd S )NrJ   )r   r+   r   )r+   r      rD   c                 S   s    g | ]\}}|d  dkr|qS )r   r   r   ).0nrB   r   r   r   
<listcomp>q   s     z>TestBipartiteBasic.test_biadjacency_matrix.<locals>.<listcomp>T)datar   r   )	r   rL   ranger5   r   r   nodesrM   shape)r   topsbotsir   toprO   r   r   r   test_biadjacency_matrixk   s   
z*TestBipartiteBasic.test_biadjacency_matrixc                 C   sZ   t d td}|jdddd ddg}g d}tj|||d	d}|d
 dks+J d S )NrJ   r+   r   r   r   rH   r   )r   r   r   rF   )r   r   rK   rN   r   r   r   test_biadjacency_matrix_orderv   s   

z0TestBipartiteBasic.test_biadjacency_matrix_orderN)__name__
__module____qualname__r   r   r   r   r%   r(   r*   r0   r4   r:   rC   rI   rP   r]   r^   r   r   r   r   r      s     	r   )r   networkxr   networkx.algorithmsr   r   r   r   r   r   <module>   s    