o
    3ήc'                  
   @   sp  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Zddlm	Z	m
Z
mZ edZedZedZedZedZd	d
ddifd
dddifgZd	d
dddfd
ddddfgZejdei fei fei fei feddiffdd Zdd Zejdei efei efeddieffdd Zejdd Zdd Zd d! Zd"d# Zd$d% Zd&d' ZG d(d) d)Z dS )*z
    Unit tests for edgelists.
    N)edges_equalgraphs_equalnodes_equalz;
    # comment line
    1 2
    # comment line
    2 3
    zC
    # comment line
    1 2 2.0
    # comment line
    2 3 3.0
    zY
    # comment line
    1 2 {'weight':2.0}
    # comment line
    2 3 {'weight':3.0}
    zy
    # comment line
    1 2 {'weight':2.0, 'color':'green'}
    # comment line
    2 3 {'weight':3.0, 'color':'red'}
    z}
    # comment line
    1, 2, {'weight':2.0, 'color':'green'}
    # comment line
    2, 3, {'weight':3.0, 'color':'red'}
          weight       @         @green)r   colorred)dataextra_kwargs	delimiter,c                 C   sB   t | d}tj|ftdd|}t| ddgsJ d S )Nutf-8Fnodetyper   r   r   r   r	   ioBytesIOencodenxread_edgelistintr   edges)r   r   bytesIOG r!   M/tmp/pip-target-vg8gfxp4/lib/python/networkx/readwrite/tests/test_edgelist.pytest_read_edgelist_no_dataG   s   r#   c                  C   s8   t td} tj| td}t|jddt	sJ d S )Nr   r   Tr   )
r   r   edges_with_valuesr   r   read_weighted_edgelistr   r   r   _expected_edges_weights)r   r    r!   r!   r"   test_read_weighted_edgelistW   s   r)   )r   r   expectedc                 C   s@   t | d}tj|fdti|}t|jdd|sJ d S )Nr   r   Tr%   r   )r   r   r*   r   r    r!   r!   r"   test_read_edgelist_with_data]   s   	r+   c                  C   s   t  } | g d | S )N))r   r   r
   )r   r	   g      ;@)r	      r
   )r   Graphadd_weighted_edges_from)r    r!   r!   r"   example_graphk   s   r/   c                 C   s>   | }t jg dtd}t|j|jsJ t|j|jsJ d S )Nz1 22 33 4r$   r   parse_edgelistr   r   nodesr   r   r/   r    Hr!   r!   r"   test_parse_edgelist_no_datar   s   r8   c                 C   sJ   | }t jg dtd}t|j|jsJ t|jdd|jdds#J d S )N)z1 2 {'weight': 3}z2 3 {'weight': 27}z3 4 {'weight': 3.0}r$   Tr%   r3   r6   r!   r!   r"   "test_parse_edgelist_with_data_dicty   s   "r9   c                 C   sR   | }t jg dtdtffd}t|j|jsJ t|jdd|jdds'J d S )N1 2 3z2 3 27z3 4 3.0r   r   Tr%   )r   r4   r   floatr   r5   r   r   r6   r!   r!   r"   "test_parse_edgelist_with_data_list   s   "r=   c                  C   sZ  g d} t j| td}t| ddgksJ tjtdd g d} t j| dd W d    n1 s4w   Y  tjtd	d g d
} t j| td W d    n1 sVw   Y  tjtdd g d} t j| tdt	fdtffd W d    n1 sw   Y  tjtdd g d} t j| tdt	ffd W d    d S 1 sw   Y  d S )N)z1;2r1   r2   r$   r   )r	   r,   zFailed to convert nodes)matchr0   nopezFailed to convert edge data)r;   r1   r2   znot the same lengthr:   r   capacityr   zFailed to convert)z1 2 't1'z2 3 't3'z3 4 't3')
r   r4   r   listr   pytestraises	TypeError
IndexErrorr<   )linesr    r!   r!   r"   test_parse_edgelist   s*   "rG   c                  C   s@   ddg} t j| d d}t dd | D }t|j|jsJ d S )Nznode#1 node#2znode#2 node#3)commentsc                 S   s   g | ]}| d qS ) )split).0er!   r!   r"   
<listcomp>   s    z&test_comments_None.<locals>.<listcomp>)r   r4   r-   r   r   )edgelistr    r7   r!   r!   r"   test_comments_None   s   rO   c                   @   sx   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S )TestEdgelistc                 C   sh   t jdd| _g d}| j| | jd t | j| _t  | _| j	g d t 
| j| _d S )Ntest)name))ab)rT   c)rU   d)rV   rL   )rL   f)rS   rW   g)r   r      rY   )r   r   r   )r	   r	   *   )r   r-   r    add_edges_fromadd_nodeDiGraphDG
MultiGraphXGr.   MultiDiGraphXDG)clsrL   r!   r!   r"   setup_class   s   
zTestEdgelist.setup_classc                 C   L   t  }t }|ddg tj||dd |d | dks$J d S )Nr   r   Fr%   r   s   1 2
2 3
r   r   r   OrderedGraphr\   write_edgelistseekreadselffhr    r!   r!   r"   test_write_edgelist_1      
z"TestEdgelist.test_write_edgelist_1c                 C   rf   )Nr   r   Tr%   r   s   1 2 {}
2 3 {}
rg   rl   r!   r!   r"   test_write_edgelist_2   rp   z"TestEdgelist.test_write_edgelist_2c                 C   s^   t  }t }|jdddd |jdddd tj||dd |d	 | d
ks-J d S )Nr   r   r   r   r	   r
   Tr%   r   s(   1 2 {'weight': 2.0}
2 3 {'weight': 3.0}
r   r   r   rh   add_edgeri   rj   rk   rl   r!   r!   r"   test_write_edgelist_3   s   
z"TestEdgelist.test_write_edgelist_3c                 C   s`   t  }t }|jdddd |jdddd tj||dgd |d	 | d
ks.J d S )Nr   r   r   rr   r	   r
   r   r%   r   s   1 2 2.0
2 3 3.0
rs   rl   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 t \}}t || t |}t||s@J t	
| t	| d S )	N(	  {         D  	Radioheadr	   r   r-   chrrt   tempfilemkstempri   r   r   oscloseunlinkrm   r    name1name2fdfnamer7   r!   r!   r"   test_unicode   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 t \}}tjtt j	||d	d
 t
| t
| d S )Nrw   rx   ry   rz   r{   r|   r}   r	   latin-1encoding)r   r-   r   rt   r   r   rB   rC   UnicodeEncodeErrorri   r   r   r   )rm   r    r   r   r   r   r!   r!   r"   test_latin1_issue   s   
zTestEdgelist.test_latin1_issuec                 C   s   t  }dtd d }tdd }|j|dfi |di t \}}t j||dd	 t j|dd	}t||s:J t	
| t	| d S )
NBj   rk   berr}   r	   r   r   r~   r   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 )NrX   )r    r   r   r   ri   r   remove_noder   rA   r   r   r   r   r   rm   r    r   r   r7   H2r!   r!   r"   test_edgelist_graph   s   



z TestEdgelist.test_edgelist_graphc                 C   s   | j }t \}}t|| tj|t d}tj|t d}||us'J |d tt	|t	|s7J t
t	| t	| sFJ t| t| d S )N)create_usingrX   )r_   r   r   r   ri   r   r^   r   r   rA   r   r   r   r   r   r   r!   r!   r"   test_edgelist_digraph  s   

z"TestEdgelist.test_edgelist_digraphc                 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    r   r   ri   r   r   remove_nodes_fromrA   isolatesr   r   r   r   r   r   )rm   r    r   r   r7   r!   r!   r"   test_edgelist_integers  s   
z#TestEdgelist.test_edgelist_integersc                 C      | 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   r   )ra   r   r   r   ri   r   r   r`   r   rA   r   r   r   r   r   r   r!   r!   r"   test_edgelist_multigraph$     
z%TestEdgelist.test_edgelist_multigraphc                 C   r   r   )rc   r   r   r   ri   r   r   rb   r   rA   r   r   r   r   r   r   r!   r!   r"   test_edgelist_multidigraph0  r   z'TestEdgelist.test_edgelist_multidigraphN)__name__
__module____qualname__classmethodre   ro   rq   ru   rv   r   r   r   r   r   r   r   r   r!   r!   r!   r"   rP      s    

		rP   )!__doc__r   r   r   textwraprB   networkxr   networkx.utilsr   r   r   dedentedges_no_datar&   edges_with_weightedges_with_multiple_attrsedges_with_multiple_attrs_csvr(   _expected_edges_multiattrmarkparametrizer#   r)   r+   fixturer/   r8   r9   r=   rG   rO   rP   r!   r!   r!   r"   <module>   sl    









		