U
    ¹mœd_  ã                   @   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    ú\/home/sam/Atlas/atlas_env/lib/python3.8/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&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s†t
‚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
|ƒƒsŽt‚tt
| ¡ ƒt
| ¡ ƒƒs¬t‚|j|jks¼t‚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
   