o
    ]Zh                     @   s.   d 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                   @   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S )	TestPajekc                 C   s@   d| _ t | _| jg d | jg d d| jjd< 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)datanxZMultiDiGraphGZadd_nodes_fromZadd_edges_fromgraph)cls r   R/var/www/auris/lib/python3.10/site-packages/networkx/readwrite/tests/test_pajek.pysetup_class
   s   
zTestPajek.setup_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s+J 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_mat4   s   

zTestPajek.test_parse_pajet_matc                 C   s   t | j}|d }t|d}|| jd W d    n1 s#w   Y  t |}t| t| ks;J t	|
 |
 sFJ | jj|jksOJ |D ]}|j| |j| ks_J qQd S )Nztest.pjkwbzUTF-8)r   r   r   openwriteencode
read_pajekr   r   r   r   r   r   )r   Ztmp_pathr   fnamefhZGinnr   r   r   test_read_pajek>   s   
zTestPajek.test_read_pajekc                 C   st   dd l }t| j}| }t|| |d t|}tt	|t	|s)J t
t	| t	| s8J d S )Nr   )ior   r   r   BytesIOwrite_pajekseekr(   r   listr   r   )r   r-   r   r*   Hr   r   r   test_write_pajekL   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sCJ W d    d S 1 sNw   Y  d S )Nr      )Zint_attr   z  )Z
empty_attr   T)record   )
r-   r   Graphr.   add_nodeadd_edgewarningscatch_warningsr/   len)r   r-   r   r*   r<   wr   r   r   test_ignored_attributeY   s   "z TestPajek.test_ignored_attributec                 C   s4   d}| j ddd  }|d| }t|}d S )Nz	*network

r4   )r   splitjoinr   r   )r   lineZother_linesr   r   r   r   r   test_nonamei   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
|sGJ tt
| t
| sVJ |j|jks^J d S )
Nr   i(	  {   i  i  i  iD  Z	Radiohead)Zfoo)r-   r   r9   chrr;   r.   r/   r0   r(   r   r1   r   r   r   )r   r-   r   Zname1Zname2r*   r2   r   r   r   test_unicodeq   s   

zTestPajek.test_unicodeN)__name__
__module____qualname__classmethodr   r   r   r#   r,   r3   r@   rE   rH   r   r   r   r   r   	   s    

r   )__doc__Znetworkxr   Znetworkx.utilsr   r   r   r   r   r   r   <module>   s    