U
    :vf_                     @   s>   d Z ddlZddlZddlZddlmZmZ G dd dZdS )z
Pajek tests
    N)edges_equalnodes_equalc                   @   sd   e Zd Zed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S )	TestPajekc              	   C   s   d| _ t | _| jddddg | jdddd	d
ddg d| jjd< t \}| _	t
|d}|| j d W 5 Q R X d S )Na`  *network Tralala
*vertices 4
   1 "A1"         0.0938 0.0896   ellipse x_fact 1 y_fact 1
   2 "Bb"         0.8188 0.2458   ellipse x_fact 1 y_fact 1
   3 "C"          0.3688 0.7792   ellipse x_fact 1
   4 "D2"         0.9583 0.8563   ellipse x_fact 1
*arcs
1 1 1  h2 0 w 3 c Blue s 3 a1 -130 k1 0.6 a2 -130 k2 0.6 ap 0.5 l "Bezier loop" lc BlueViolet fos 20 lr 58 lp 0.3 la 360
2 1 1  h2 0 a1 120 k1 1.3 a2 -120 k2 0.3 ap 25 l "Bezier arc" lphi 270 la 180 lr 19 lp 0.5
1 2 1  h2 0 a1 40 k1 2.8 a2 30 k2 0.8 ap 25 l "Bezier arc" lphi 90 la 0 lp 0.65
4 2 -1  h2 0 w 1 k1 -2 k2 250 ap 25 l "Circular arc" c Red lc OrangeRed
3 4 1  p Dashed h2 0 w 2 c OliveGreen ap 25 l "Straight arc" lc PineGreen
1 3 1  p Dashed h2 0 w 5 k1 -1 k2 -20 ap 25 l "Oval arc" c Brown lc Black
3 3 -1  h1 6 w 1 h2 12 k1 -2 k2 -15 ap 0.5 l "Circular loop" c Red lc OrangeRed lphi 270 la 180A1BbCD2r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZTralalanamewbzUTF-8)datanxZMultiDiGraphGZadd_nodes_fromZadd_edges_fromgraphtempfilemkstempfnameosfdopenwriteencode)clsfdfh r    G/tmp/pip-unpacked-wheel-_lngutwb/networkx/readwrite/tests/test_pajek.pysetup_class   s"    
zTestPajek.setup_classc                 C   s   t | j d S N)r   unlinkr   )r   r    r    r!   teardown_class"   s    zTestPajek.teardown_classc                 C   s@   d}t |}t| ddgks&tt| ddgs<td S )Nz&*Vertices 2
1 "1"
2 "2"
*Edges
1 2
2 112)r&   r'   )r   parse_pajeksortednodesAssertionErrorr   edgesselfr   r   r    r    r!   test_parse_pajek_simple&   s    
z!TestPajek.test_parse_pajek_simplec              	   C   sL   t | j}t| ddddgks(tt| ddddd	d
dgsHtd S )Nr   r   r   r   r	   r
   r   r   r   r   r   )r   r(   r   r)   r*   r+   r   r,   )r.   r   r    r    r!   test_parse_pajek-   s    zTestPajek.test_parse_pajekc                 C   s`   d}t |}t| dddhks(t|jd ddiks>ttt| ddd	d
hs\td S )Nz@*Vertices 3
1 "one"
2 "two"
3 "three"
*Matrix
1 1 0
0 1 0
0 1 0
onetwothreeidr'   )r1   r1   )r2   r1   )r2   r2   )r2   r3   )r   r(   setr*   r+   r   r,   r-   r    r    r!   test_parse_pajet_mat=   s    


zTestPajek.test_parse_pajet_matc                 C   s   t | j}t | j}t| t| ks4tt|	 |	 sJt| j
j|jks\t|D ]}|j| |j| ks`tq`d S r#   )r   r(   r   
read_pajekr   r)   r*   r+   r   r,   r   r   )r.   r   ZGinnr    r    r!   test_read_pajekG   s    zTestPajek.test_read_pajekc                 C   st   dd l }t| j}| }t|| |d t|}tt	|t	|sRt
tt	| t	| spt
d S )Nr   )ior   r(   r   BytesIOwrite_pajekseekr7   r   listr+   r   r,   )r.   r:   r   r   Hr    r    r!   test_write_pajekP   s    

zTestPajek.test_write_pajekc              	   C   s   dd l }t }| }|jddd |jddd |jdddd |jdddd dd l}|jdd	"}t|| t	|d
kst
W 5 Q R X d S )Nr      )Zint_attr   z  )Z
empty_attr   T)record   )r:   r   Graphr;   add_nodeadd_edgewarningscatch_warningsr<   lenr+   )r.   r:   r   r   rI   wr    r    r!   test_ignored_attribute]   s    z TestPajek.test_ignored_attributec                 C   s4   d}| j ddd  }|d| }t|}d S )Nz	*network

rA   )r   splitjoinr   r(   )r.   lineZother_linesr   r   r    r    r!   test_nonamem   s    zTestPajek.test_nonamec                 C   s   dd l }t }tdtd td }tdtd td }|j|d|d	 | }t|| |d t|}t	t
|t
|sttt
| t
| st|j|jkstd S )
Nr   i(	  {   i  i  i  iD  Z	Radiohead)Zfoo)r:   r   rF   chrrH   r;   r<   r=   r7   r   r>   r+   r   r,   r   )r.   r:   r   Zname1Zname2r   r?   r    r    r!   test_unicodeu   s    

zTestPajek.test_unicodeN)__name__
__module____qualname__classmethodr"   r%   r/   r0   r6   r9   r@   rM   rR   rU   r    r    r    r!   r      s   


	r   )	__doc__r   r   Znetworkxr   Znetworkx.utilsr   r   r   r    r    r    r!   <module>   s
   