U
    :vf^  ã                   @   sT   d dl Z d dlmZ d dlZd dlZd dlmZmZ G dd„ dƒZ	G dd„ dƒZ
dS )é    N)ÚBytesIO)Úedges_equalÚnodes_equalc                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestSparseGraph6c                 C   s”   d}t  |¡}tt| ¡ ƒdddddddd	d
dddddddddgƒsHt‚t| ¡ ddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.gƒst‚d S )/Nó   :Q___eDcdFcDeFcE`GaJ`IaHbKNbLMr   é   é   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   é   )r   r   )r   r   )r   r	   )r   r   )r   r   )r   r   )r   r   )r	   r   )r	   r   )r
   r   )r
   r   )r
   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )ÚnxÚfrom_sparse6_bytesr   ÚsortedÚnodesÚAssertionErrorr   Úedges)ÚselfÚdataÚG© r!   úI/tmp/pip-unpacked-wheel-_lngutwb/networkx/readwrite/tests/test_sparse6.pyÚtest_from_sparse6_bytes   sJ    

&þåþz(TestSparseGraph6.test_from_sparse6_bytesc                 C   sD   d}t  |¡}t|ƒt jks t‚d}t  |¡}t|ƒt jks@t‚d S )Ns   :Ans   :Ab)r   r   ÚtypeZGraphr   Z
MultiGraph)r   Z
graph_datar    Zmultigraph_dataÚMr!   r!   r"   Ú test_from_bytes_multigraph_graph3   s    

z1TestSparseGraph6.test_from_bytes_multigraph_graphc                 C   sP   d}t  |¡}t|ƒ}t  |¡}t| ¡ | ¡ ƒs6t‚t| ¡ | ¡ ƒsLt‚d S )Nr   )	r   r   r   Úread_sparse6r   r   r   r   r   )r   r   r    ÚfhZGinr!   r!   r"   Útest_read_sparse6;   s    

z"TestSparseGraph6.test_read_sparse6c                 C   sj   d}t |ƒ}t |¡}t|ƒdks&t‚|D ]:}t| ¡ dddddddd	d
dddddddddgƒs*t‚q*d S )Ns>   :Q___eDcdFcDeFcE`GaJ`IaHbKNbLM
:Q___dCfDEdcEgcbEGbFIaJ`JaHN`IMr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r'   Úlenr   r   r   )r   r   r(   Zglistr    r!   r!   r"   Útest_read_many_graph6C   s    
&þz&TestSparseGraph6.test_read_many_graph6N)Ú__name__Ú
__module__Ú__qualname__r#   r&   r)   r+   r!   r!   r!   r"   r   
   s   (r   c                   @   sp   e Zd Z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d„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestWriteSparse6zˆUnit tests for writing graphs in the sparse6 format.

    Most of the test cases were checked against the sparse6 encoder in Sage.

    c                 C   s.   t  ¡ }tƒ }t  ||¡ | ¡ dks*t‚d S )Nó   >>sparse6<<:?
)r   Ú
null_graphr   Úwrite_sparse6Úgetvaluer   ©r   r    Úresultr!   r!   r"   Útest_null_graphW   s    z TestWriteSparse6.test_null_graphc                 C   s.   t  ¡ }tƒ }t  ||¡ | ¡ dks*t‚d S )Ns   >>sparse6<<:@
)r   Ztrivial_graphr   r2   r3   r   r4   r!   r!   r"   Útest_trivial_graph]   s    z#TestWriteSparse6.test_trivial_graphc                 C   s0   t  d¡}tƒ }t  ||¡ | ¡ dks,t‚d S )Nr   s   >>sparse6<<:D
©r   Zempty_graphr   r2   r3   r   r4   r!   r!   r"   Útest_empty_graphc   s    
z!TestWriteSparse6.test_empty_graphc                 C   s0   t  d¡}tƒ }t  ||¡ | ¡ dks,t‚d S )NéD   s   >>sparse6<<:~?@C
r8   r4   r!   r!   r"   Útest_large_empty_graphi   s    
z'TestWriteSparse6.test_large_empty_graphc                 C   s0   t  d¡}tƒ }t  ||¡ | ¡ dks,t‚d S )Nið s   >>sparse6<<:~~???~?@
r8   r4   r!   r!   r"   Útest_very_large_empty_grapho   s    
z,TestWriteSparse6.test_very_large_empty_graphc                 C   s0   t  d¡}tƒ }t  ||¡ | ¡ dks,t‚d S )Nr
   s   >>sparse6<<:CcKI
©r   Zcomplete_graphr   r2   r3   r   r4   r!   r!   r"   Útest_complete_graphu   s    
z$TestWriteSparse6.test_complete_graphc                 C   s4   t  d¡}tƒ }t j||dd | ¡ dks0t‚d S )Nr
   F©Úheaders   :CcKI
r=   r4   r!   r!   r"   Útest_no_header{   s    
zTestWriteSparse6.test_no_headerc                 C   sR   d}t |ddD ]<\}}t |¡}tƒ }tj||dd | ¡ |d kst‚qd S )N)s   :Cdvs   :DaYns   :EaYnNs   :FaYnLs   :GaYnLzr
   )ÚstartFr?   ó   
)Ú	enumerater   Z
path_graphr   r2   r3   r   )r   ÚcodesÚnÚcoder    r5   r!   r!   r"   Útest_padding   s    
zTestWriteSparse6.test_paddingc                 C   s6   t  dd¡}tƒ }t  ||¡ d}| ¡ |ks2t‚d S )Nr   r   s<   >>sparse6<<:Nk?G`cJ?G`cJ?G`cJ?G`cJ?G`cJ?G`cJ?G`cJ?G`cJ?G`cJ
)r   Zcomplete_bipartite_graphr   r2   r3   r   )r   r    r5   Úexpectedr!   r!   r"   Útest_complete_bipartite‰   s
    z(TestWriteSparse6.test_complete_bipartitec                 C   s¤   t tdƒƒddddddg D ]‚}td| || d ƒ}tjj|||d	}tƒ }tj||d
d | ¡  	¡ }t 
|¡}| ¡ | ¡ ksˆt‚t| ¡ | ¡ ƒst‚qd S )Nr   é   é/   é>   é?   é@   éH   r   )ÚseedFr?   )ÚlistÚrangeÚminr   Zrandom_graphsZgnm_random_graphr   r2   r3   Úrstripr   Úorderr   r   r   )r   ÚiÚmÚgZgstrZg2r!   r!   r"   Útest_read_write_inverse‘   s     
z(TestWriteSparse6.test_read_write_inversec              	   C   s.   t  tj¡ t t ¡ tƒ ¡ W 5 Q R X d S )N)ÚpytestZraisesr   ZNetworkXNotImplementedr2   ZDiGraphr   )r   r!   r!   r"   Útest_no_directed_graphs   s    z(TestWriteSparse6.test_no_directed_graphsc              	   C   sd   t  ¡ }|j}W 5 Q R X t t ¡ |¡ t|dd}| ¡ dksFt‚| 	¡  dd l
}| |¡ d S )NÚrb)Úmoder0   r   )ÚtempfileÚNamedTemporaryFileÚnamer   r2   r1   ÚopenÚreadr   ÚcloseÚosÚremove)r   ÚfZfullfilenamer(   re   r!   r!   r"   Útest_write_path¡   s    
z TestWriteSparse6.test_write_pathN)r,   r-   r.   Ú__doc__r6   r7   r9   r;   r<   r>   rA   rH   rJ   rZ   r\   rh   r!   r!   r!   r"   r/   P   s   r/   )r_   Úior   r[   Znetworkxr   Znetworkx.utilsr   r   r   r/   r!   r!   r!   r"   Ú<module>   s   F