o
    3ήcV                     @   s^   d Z ddlZddlZddlZddlZddlZddlmZ ddl	m
Z
mZmZ G dd dZdS )z)
    Unit tests for bipartite edgelists.
    N	bipartite)edges_equalgraphs_equalnodes_equalc                   @   s   e Zd Ze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 ) TestEdgelistc                 C   s   t jdd| _g d}| j| | jjg ddd | jjg ddd | jjd	dd t | j| _t  | _	| j	g d
 | j	jddd | j	jddd d S )Ntest)name))ab)r   c)r   d)r   e)r   f)r
   r   )r
   r   r   r   r   )r   r   r      g)r      r   r   r   )
nxGraphGadd_edges_fromadd_nodes_fromadd_nodeDiGraphDG
MultiGraphMG)clsr    r   X/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/bipartite/tests/test_edgelist.pysetup_class   s   
zTestEdgelist.setup_classc                 C   s6   d}t |}tj|td}t| ddgsJ d S )Ns&   # comment line
1 2
# comment line
2 3
nodetyper   r      ioBytesIOr   read_edgelistintr   edgesselfsbytesIOr   r   r   r    test_read_edgelist_1   s   
z!TestEdgelist.test_read_edgelist_1c                 C   s   d}t |}tj|tdd}t| ddgsJ t |}tj|tdd}t|jdddd	d
difd	dd
difgs>J d S )NsD   # comment line
1 2 {'weight':2.0}
# comment line
2 3 {'weight':3.0}
F)r#   datar   r$   Tr1   r   r   weight       @r%         @r&   r,   r   r   r    test_read_edgelist_3)   s   

$z!TestEdgelist.test_read_edgelist_3c                 C   v   t  }t }|ddg |jddd |jddd |jddd tj||dd	 |d |	 d
ks9J d S )Nr   r$   r   r   r   r   r%   Fr2   s   1 2
3 2

r'   r(   r   r   r   r   r   write_edgelistseekreadr-   fhr   r   r   r    test_write_edgelist_1:      
z"TestEdgelist.test_write_edgelist_1c                 C   r7   )Nr   r$   r   r   r   r   r%   Tr2   s   1 2 {}
3 2 {}
r8   r<   r   r   r    test_write_edgelist_2E   r?   z"TestEdgelist.test_write_edgelist_2c                 C   s   t  }t }|jdddd |jdddd |jddd |jddd |jddd tj||d	d
 |d |	 dksBJ d S )Nr   r   r4   r3   r%   r5   r   r   Tr2   s(   1 2 {'weight': 2.0}
3 2 {'weight': 3.0}

r'   r(   r   r   add_edger   r   r9   r:   r;   r<   r   r   r    test_write_edgelist_3P   s   
z"TestEdgelist.test_write_edgelist_3c                 C   s   t  }t }|jdddd |jdddd |jddd |jddd |jddd tj||d	gd
 |d |	 dksCJ d S )Nr   r   r4   rA   r%   r5   r   r   r3   r2   s   1 2 2.0
3 2 3.0
rB   r<   r   r   r    test_write_edgelist_4\   s   
z"TestEdgelist.test_write_edgelist_4c                 C   s   t  }tdtd td }tdtd td }|j|dfi |di |j|d	d
 |jddd
 t \}}t|| t	|}t
||sNJ t| t| d S )N(	  {         D  	Radioheadr%   r   r   r   r   r   chrrC   r   tempfilemkstempr   r9   r)   r   oscloseunlinkr-   r   name1name2fdfnameHr   r   r    test_unicodeh   s   

zTestEdgelist.test_unicodec                 C   s   t  }tdtd td }tdtd td }|j|dfi |di |j|d	d
 |jddd
 t \}}tjt	t
j||dd t| t| d S )NrF   rG   rH   rI   rJ   rK   rL   r%   r   r   r   latin-1encoding)r   r   rN   rC   r   rO   rP   pytestraisesUnicodeEncodeErrorr   r9   rQ   rR   rS   )r-   r   rU   rV   rW   rX   r   r   r    test_latin1_issuev   s   
zTestEdgelist.test_latin1_issuec                 C   s   t  }dtd d }tdd }|j|dfi |di |j|dd	 |jdd
d	 t \}}tj||dd tj	|dd}t
||sHJ t| t| d S )NBj   rk   berrL   r%   r   r   r   r[   r\   rM   rT   r   r   r    test_latin1   s   
zTestEdgelist.test_latin1c                 C   s   | j }t \}}t|| t|}t|}||usJ |d tt|t|s/J t	t|
 t|
 s>J t| t| d S )Nr   )r   rO   rP   r   r9   r)   remove_noder   listr   r+   rQ   rR   rS   r-   r   rW   rX   rY   H2r   r   r    test_edgelist_graph   s   



z TestEdgelist.test_edgelist_graphc                 C   s   t | j}t \}}t|| tj|td}|	t
t | tt
|t
|s.J tt
| t
| s=J t| t| d S )Nr"   )r   convert_node_labels_to_integersr   rO   rP   r   r9   r)   r*   remove_nodes_fromri   isolatesr   r   r+   rQ   rR   rS   )r-   r   rW   rX   rY   r   r   r    test_edgelist_integers   s   
z#TestEdgelist.test_edgelist_integersc                 C   s   | j }t \}}t|| tj|tt d}tj|tt d}||us)J t	t
|t
|s4J tt
| t
| sCJ t| t| d S )N)r#   create_using)r   rO   rP   r   r9   r)   r*   r   r   r   ri   r   r+   rQ   rR   rS   rj   r   r   r    test_edgelist_multigraph   s   
z%TestEdgelist.test_edgelist_multigraphc                 C   sJ   t tj t }tt | W d    d S 1 sw   Y  d S )N)	r^   r_   r   NetworkXNotImplementedr'   r(   r   r9   r   )r-   r/   r   r   r    test_empty_digraph   s   "zTestEdgelist.test_empty_digraphc                 C   sN   t t td}t }t|| W d    d S 1 s w   Y  d S )N   )	r^   r_   AttributeErrorr   
path_graphr'   r(   r   r9   )r-   r   r/   r   r   r    test_raise_attribute   s
   
"z!TestEdgelist.test_raise_attributeN)__name__
__module____qualname__classmethodr!   r0   r6   r>   r@   rD   rE   rZ   ra   rg   rl   rp   rr   rt   rx   r   r   r   r    r      s"    
r   )__doc__r'   rQ   rO   r^   networkxr   networkx.algorithmsr   networkx.utilsr   r   r   r   r   r   r   r    <module>   s    