o
    ˷e_                     @   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    d S 1 s@w   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   TralalanamewbzUTF-8)datanxMultiDiGraphGadd_nodes_fromadd_edges_fromgraphtempfilemkstempfnameosfdopenwriteencode)clsfdfh r   Z/var/www/ideatree/venv/lib/python3.10/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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threer0   idr&   >   r/   r/   r0   r0   r0   r/   r0   r1   )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sJ t| | s%J | j	j
|j
ks.J |D ]}|j| |j| ks>J q0d S r"   )r   r'   r   
read_pajekr   r(   r)   r   r*   r   r   )r,   r   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	|s)J t
t	| t	| s8J d S )Nr   )ior   r'   r   BytesIOwrite_pajekseekr9   r   listr   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sCJ W d    d S 1 sNw   Y  d S )Nr      )int_attr   z  )
empty_attr   T)record   )
r=   r   Graphr>   add_nodeadd_edgewarningscatch_warningsr?   len)r,   r=   r   r   rN   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

rD   )r   splitjoinr   r'   )r,   line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
|sGJ tt
| t
| sVJ |j|jks^J d S )
Nr   i(	  {   i  i  i  iD  	Radiohead)foo)r=   r   rK   chrrM   r>   r?   r@   r9   r   rA   r   r*   r   )r,   r=   r   name1name2r   rB   r   r   r    test_unicodeu   s   

zTestPajek.test_unicodeN)__name__
__module____qualname__classmethodr!   r$   r-   r.   r8   r<   rC   rR   rX   r_   r   r   r   r    r      s    


	r   )	__doc__r   r   networkxr   networkx.utilsr   r   r   r   r   r   r    <module>   s    