o
    3ήcT                     @   sX   d dl Z e dZe dZe dZd dlZd dlmZ d dl	m
Z
 G dd dZdS )	    Nnumpyscipyzscipy.sparse)	bipartite)edges_equalc                   @   sd   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S )TestBiadjacencyMatrixc                 C   sp   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s6J d S )N   r            )weightother   r   r	   r
   r   r   )r   r   r   nx
path_graphadd_edger   biadjacency_matrixselfGXYM r   V/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/bipartite/tests/test_matrix.pytest_biadjacency_matrix_weight   s   
z4TestBiadjacencyMatrix.test_biadjacency_matrix_weightc                 C   s   g d}g d}t t|D ]4}t|| || d}dd |jddD }t||}|jd || ks7J |jd	 || ksBJ qd S )
N)r	   r   
   )r   r      g?c                 S   s    g | ]\}}|d  dkr|qS )r   r   r   ).0ndr   r   r   
<listcomp>   s     zATestBiadjacencyMatrix.test_biadjacency_matrix.<locals>.<listcomp>Tdatar   r   )rangelenr   random_graphnodesr   shape)r   topsbotsir   topr   r   r   r   test_biadjacency_matrix   s   z-TestBiadjacencyMatrix.test_biadjacency_matrixc                 C   sP   t d}|jdddd ddg}g d}tj|||dd}|d	 dks&J d S )
Nr   r   r   r	   r   r   )r
   r	   r   r   )r   r	   r   r   r   r   r   test_biadjacency_matrix_order"   s   
z3TestBiadjacencyMatrix.test_biadjacency_matrix_orderc                 C   sB   t tj tt g  W d    d S 1 sw   Y  d S )Npytestraisesr   NetworkXErrorr   r   Graphr   r   r   r   test_null_graph*   s   "z%TestBiadjacencyMatrix.test_null_graphc                 C   sF   t tj ttdgg  W d    d S 1 sw   Y  d S )Nr   r   r1   r6   r   r   r   test_empty_graph.   s   "z&TestBiadjacencyMatrix.test_empty_graphc                 C   sJ   t tj ttdgddg W d    d S 1 sw   Y  d S )Nr8   r   r1   r6   r   r   r   test_duplicate_row2   s   "z(TestBiadjacencyMatrix.test_duplicate_rowc                 C   sN   t tj ttdgdgddg W d    d S 1 s w   Y  d S )Nr8   r   r   r1   r6   r   r   r   test_duplicate_col6   s   "z(TestBiadjacencyMatrix.test_duplicate_colc                 C   sL   t tj tjtdgdgdd W d    d S 1 sw   Y  d S )Nr8   r   foo)formatr1   r6   r   r   r   test_format_keyword:   s   "z)TestBiadjacencyMatrix.test_format_keywordc                 C   s8   t d}t|g d}t|}t ||sJ d S )Nr   r   )r   r   r   r   from_biadjacency_matrixis_isomorphic)r   B1r   B2r   r   r   test_from_biadjacency_roundtrip>   s   

z5TestBiadjacencyMatrix.test_from_biadjacency_roundtripc                 C   s   t ddgddgg}t|}t| g dsJ tj|dd}ddddifddddifddddifg}t|jdd	|sAJ d S )
Nr   r	   r   r   )r   r	   r   r   r   r   r   )edge_attributeTr$   )sparse
csc_matrixr   r?   r   edges)r   r   Ber   r   r   test_from_biadjacency_weightD   s   
(z2TestBiadjacencyMatrix.test_from_biadjacency_weightc                 C   sB   t ddgddgg}tj|t d}t| g dsJ d S )Nr   r	   r   r   )create_using)rD   rE   rE   rF   rF   rF   )rH   rI   r   r?   r   
MultiGraphr   rJ   )r   r   rK   r   r   r    test_from_biadjacency_multigraphL   s   z6TestBiadjacencyMatrix.test_from_biadjacency_multigraphN)__name__
__module____qualname__r   r/   r0   r7   r9   r:   r;   r>   rC   rM   rP   r   r   r   r   r      s    

r   )r2   importorskipnpsprH   networkxr   networkx.algorithmsr   networkx.utilsr   r   r   r   r   r   <module>   s    


