a
    h_                     @   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g d | jg d d| jjd< t \}| _	t
|d"}|| j d W d    n1 s~0    Y  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   Q/var/www/auris/lib/python3.9/site-packages/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&J t| ddgs<J d S )Nz&*Vertices 2
1 "1"
2 "2"
*Edges
1 2
2 112)r!   r"   )r   parse_pajeksortednodesr   edgesselfr   r   r   r   r   test_parse_pajek_simple&   s    
z!TestPajek.test_parse_pajek_simplec                 C   s>   t | j}t| g dks$J t| g ds:J d S )Nr   r
   )r   r#   r   r$   r%   r   r&   )r(   r   r   r   r   test_parse_pajek-   s    zTestPajek.test_parse_pajekc                 C   sZ   d}t |}t| h dks&J |jd ddiks<J tt| h dsVJ d S )Nz@*Vertices 3
1 "one"
2 "two"
3 "three"
*Matrix
1 1 0
0 1 0
0 1 0
>   onetwothreer,   idr"   >   )r,   r-   )r,   r+   )r,   r,   )r+   r+   )r   r#   setr%   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s4J t| | sJJ | j	j
|j
ks\J |D ]}|j| |j| ks`J q`d S r   )r   r#   r   
read_pajekr   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	|sRJ t
t	| t	| spJ d S )Nr   )ior   r#   r   BytesIOwrite_pajekseekr1   r   listr   r&   )r(   r4   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sJ W d    n1 s0    Y  d S )Nr      )Zint_attr   z  )Z
empty_attr   T)record   )
r4   r   Graphr5   add_nodeadd_edgewarningscatch_warningsr6   len)r(   r4   r   r   rC   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

r;   )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
|sJ tt
| t
| sJ |j|jksJ d S )
Nr   i(	  {   i  i  i  iD  Z	Radiohead)Zfoo)r4   r   r@   chrrB   r5   r6   r7   r1   r   r8   r   r&   r   )r(   r4   r   Zname1Zname2r   r9   r   r   r   test_unicodeu   s    

zTestPajek.test_unicodeN)__name__
__module____qualname__classmethodr   r    r)   r*   r0   r3   r:   rG   rL   rO   r   r   r   r   r      s   


	r   )	__doc__r   r   Znetworkxr   Znetworkx.utilsr   r   r   r   r   r   r   <module>   s
   