o
    3ήc&                     @   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m	Z	m
Z
 G dd dZG dd dZdS )z
    Unit tests for adjlist.
    N)edges_equalgraphs_equalnodes_equalc                   @   sp   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S )TestAdjlistc                 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)r   c)r   d)r   e)r   f)r
   r   g         r   )r   r   r   )   r   *   )nxGraphGadd_edges_fromadd_nodeDiGraphDG
MultiGraphXGadd_weighted_edges_fromMultiDiGraphXDGclsr    r&   L/tmp/pip-target-vg8gfxp4/lib/python/networkx/readwrite/tests/test_adjlist.pysetup_class   s   
zTestAdjlist.setup_classc                 C   sJ   d}t |}t|}i i ddi idi id}t|t|s#J d S )Ns&   # comment line
1 2
# comment line
2
3
)321)r+   r)   r*   )ioBytesIOr   read_multiline_adjlistr   r   )selfsbytesIOr   adjr&   r&   r'   test_read_multiline_adjlist_1   s
   

z)TestAdjlist.test_read_multiline_adjlist_1c                 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   chradd_edgetempfilemkstempwrite_multiline_adjlistr.   r   oscloseunlinkr/   r   name1name2fdfnameHr&   r&   r'   test_unicode'   s   

zTestAdjlist.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 )Nr4   r5   r6   r7   r8   r9   r:   r   latin-1encoding)r   r   r<   r=   r>   r?   pytestraisesUnicodeEncodeErrorr@   rA   rB   rC   )r/   r   rE   rF   rG   rH   r&   r&   r'   test_latin1_err3   s   
zTestAdjlist.test_latin1_errc                 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   rK   rL   r;   rD   r&   r&   r'   test_latin1?   s   
zTestAdjlist.test_latin1c                 C   s   g d}t j|td tt t j|dd W d    n1 s"w   Y  g d}tt t j|td W d    d S 1 sCw   Y  d S )N)1 2 5z2 3 4z3 545nodetypeint)rX   z2 br   )r   parse_adjlistr]   rN   rO   	TypeErrorr/   linesr&   r&   r'   test_parse_adjlistK   s   "zTestAdjlist.test_parse_adjlistc                 C      | j }t \}}t|| t|}t|}||usJ tt|t|s*J tt|	 t|	 s9J t
| t
| d S N)r   r>   r?   r   write_adjlistread_adjlistr   listr   edgesrA   rB   rC   r/   r   rG   rH   rI   H2r&   r&   r'   test_adjlist_graphT      


zTestAdjlist.test_adjlist_graphc                 C      | j }t \}}t|| tj|t d}tj|t d}||us'J tt|t|s2J t	t|
 t|
 sAJ t| t| d S N)create_using)r   r>   r?   r   re   rf   r   r   rg   r   rh   rA   rB   rC   ri   r&   r&   r'   test_adjlist_digraph`      
z TestAdjlist.test_adjlist_digraphc                 C      t  \}}t| j}t|| tj|td}tj|td}||us&J tt	|t	|s1J t
t	| t	| s@J t| t| d S Nr[   )r>   r?   r   convert_node_labels_to_integersr   re   rf   r]   r   rg   r   rh   rA   rB   rC   r/   rG   rH   r   rI   rj   r&   r&   r'   test_adjlist_integersl      
z!TestAdjlist.test_adjlist_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\   ro   )r    r>   r?   r   re   rf   r]   r   r   rg   r   rh   rA   rB   rC   ri   r&   r&   r'   test_adjlist_multigraphx      
z#TestAdjlist.test_adjlist_multigraphc                 C   rx   ry   )r#   r>   r?   r   re   rf   r]   r"   r   rg   r   rh   rA   rB   rC   ri   r&   r&   r'   test_adjlist_multidigraph   r{   z%TestAdjlist.test_adjlist_multidigraphc                 C   t   t  }td}tj||dd |d tj|tdd}tt	|t	|s)J t
t	| t	| s8J d S Nr   :)	delimiterr   )r\   r   )r,   r-   r   
path_graphre   seekrf   r]   r   rg   r   rh   r/   fhr   rI   r&   r&   r'   test_adjlist_delimiter      

"z"TestAdjlist.test_adjlist_delimiterN)__name__
__module____qualname__classmethodr(   r3   rJ   rQ   rW   rb   rk   rp   rv   rz   r|   r   r&   r&   r&   r'   r      s    

	r   c                   @   sP   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S )TestMultilineAdjlistc                 C   s   t jdd| _g d}| j| | jd t | j| _| jdd | jdd t  | _	| j	
g d t | j	| _d S )	Nr   r   r	   r   r   r
   r   r   )r   r   r   r   r   r   r   remove_edger   r    r!   r"   r#   r$   r&   r&   r'   r(      s   
z TestMultilineAdjlist.setup_classc                 C   s  g d}t t| tt t jt|td W d    n1 s$w   Y  t jt|td tt t jt|td W d    n1 sKw   Y  dg}tt t t| W d    n1 sjw   Y  dg}tt t jt|td W d    n1 sw   Y  dg}tt t t| W d    n1 sw   Y  ddg}tt t t| W d    d S 1 sw   Y  d S )N)1 2zb {'weight':3, 'name': 'Frodo'}zc {}zd 1z!e {'weight':6, 'name': 'Saruman'}r[   )edgetypez1 aza 2r   z2 {})r   parse_multiline_adjlistiterrN   rO   r_   r]   strr`   r&   r&   r'   test_parse_multiline_adjlist   s2   "z1TestMultilineAdjlist.test_parse_multiline_adjlistc                 C   rc   rd   )r   r>   r?   r   r@   r.   r   rg   r   rh   rA   rB   rC   ri   r&   r&   r'   test_multiline_adjlist_graph   rl   z1TestMultilineAdjlist.test_multiline_adjlist_graphc                 C   rm   rn   )r   r>   r?   r   r@   r.   r   r   rg   r   rh   rA   rB   rC   ri   r&   r&   r'   test_multiline_adjlist_digraph   rq   z3TestMultilineAdjlist.test_multiline_adjlist_digraphc                 C   rr   rs   )r>   r?   r   rt   r   r@   r.   r]   r   rg   r   rh   rA   rB   rC   ru   r&   r&   r'   test_multiline_adjlist_integers   rw   z4TestMultilineAdjlist.test_multiline_adjlist_integersc                 C   rx   ry   )r    r>   r?   r   r@   r.   r]   r   r   rg   r   rh   rA   rB   rC   ri   r&   r&   r'   !test_multiline_adjlist_multigraph   s   

z6TestMultilineAdjlist.test_multiline_adjlist_multigraphc                 C   rx   ry   )r#   r>   r?   r   r@   r.   r]   r"   r   rg   r   rh   rA   rB   rC   ri   r&   r&   r'   #test_multiline_adjlist_multidigraph   s   


z8TestMultilineAdjlist.test_multiline_adjlist_multidigraphc                 C   r}   r~   )r,   r-   r   r   r@   r   r.   r]   r   rg   r   rh   r   r&   r&   r'    test_multiline_adjlist_delimiter  r   z5TestMultilineAdjlist.test_multiline_adjlist_delimiterN)r   r   r   r   r(   r   r   r   r   r   r   r   r&   r&   r&   r'   r      s    
r   )__doc__r,   rA   r>   rN   networkxr   networkx.utilsr   r   r   r   r   r&   r&   r&   r'   <module>   s     