U
    ¹mœdµ  ã                   @   s�   d dl Z d dlmZ d dlZd dlZd dlm  mZ	 d dl
mZmZ G dd„ dƒZG dd„ dƒZG dd	„ d	ƒ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S )ÚTestGraph6Utilsc                 C   sn   dD ]d}t  t  |¡¡d |ks$t‚t  t  |¡¡d g ks@t‚t  t  |¡ddg ¡d ddgkst‚qd S )N)
r   é   é*   é>   é?   é@   iÿï i ð i-v l   ÿÿ? r   r   r   é+   )Úg6Z	data_to_nZ	n_to_dataÚAssertionError)ÚselfÚi© r   ú]/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/networkx/readwrite/tests/test_graph6.pyÚtest_n_data_n_conversion   s    z(TestGraph6Utils.test_n_data_n_conversionN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestFromGraph6Bytesc              	   C   sN   d}t  |¡}t| ¡ dddddgƒs*t‚t| ¡ ddd	d
dddgƒsJt‚d S )Nó   DF{r   r   é   é   é   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )ÚnxÚfrom_graph6_bytesr   Únodesr   r   Úedges)r   ÚdataÚGr   r   r   Útest_from_graph6_bytes   s    
 ÿz*TestFromGraph6Bytes.test_from_graph6_bytesc                 C   sP   d}t  |¡}t|ƒ}t  |¡}t| ¡ | ¡ ƒs6t‚t| ¡ | ¡ ƒsLt‚d S )Nr   )	r   r   r   Úread_graph6r   r   r   r   r   )r   r   r    ÚfhZGinr   r   r   Útest_read_equals_from_bytes   s    

z/TestFromGraph6Bytes.test_read_equals_from_bytesN)r   r   r   r!   r$   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ ZdS )ÚTestReadGraph6c                 C   sL   d}t |ƒ}t |¡}t|ƒdks&t‚|D ]}t|ƒttdƒƒks*t‚q*dS )z5Test for reading many graphs from a file into a list.s   DF{
D`{
DqK
D~{
r   é   N)r   r   r"   Úlenr   ÚsortedÚlistÚrange)r   r   r#   Zglistr    r   r   r   Útest_read_many_graph6&   s    
z$TestReadGraph6.test_read_many_graph6N)r   r   r   r+   r   r   r   r   r%   %   s   r%   c                   @   s�   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	e
j de ¡ e ¡ f¡dd„ ƒZdd„ Zdd„ Zdd„ Ze
j dd¡dd„ ƒZdS )ÚTestWriteGraph6z:Unit tests for writing a graph to a file in graph6 format.c                 C   s*   t ƒ }t t ¡ |¡ | ¡ dks&t‚d S ©Nó   >>graph6<<?
)r   r   Úwrite_graph6Ú
null_graphÚgetvaluer   ©r   Úresultr   r   r   Útest_null_graph3   s    zTestWriteGraph6.test_null_graphc                 C   s*   t ƒ }t t ¡ |¡ | ¡ dks&t‚d S ©Ns   >>graph6<<@
)r   r   r/   Útrivial_graphr1   r   r2   r   r   r   Útest_trivial_graph8   s    z"TestWriteGraph6.test_trivial_graphc                 C   s,   t ƒ }t t d¡|¡ | ¡ dks(t‚d S ©Nr   s   >>graph6<<C~
©r   r   r/   Úcomplete_graphr1   r   r2   r   r   r   Útest_complete_graph=   s    z#TestWriteGraph6.test_complete_graphc                 C   s0   t ƒ }tjt d¡|dd� | ¡ dks,t‚d S ©NéC   F©Úheadersv  ~?@B~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~w
r9   r2   r   r   r   Útest_large_complete_graphB   s    z)TestWriteGraph6.test_large_complete_graphc                 C   s0   t ƒ }tjt d¡|dd� | ¡ dks,t‚d S ©Nr   Fr>   s   C~
r9   r2   r   r   r   Útest_no_headerG   s    zTestWriteGraph6.test_no_headerc                 C   s6   t ƒ }t dd¡}tj||dd� | ¡ dks2t‚d S ©Né   é	   Fr>   s   N??F~z{~Fw^_~?~?^_?
)r   r   Úcomplete_bipartite_graphr/   r1   r   )r   r3   r    r   r   r   Útest_complete_bipartite_graphL   s    z-TestWriteGraph6.test_complete_bipartite_graphr    c              	   C   s*   t  tj¡� t |tƒ ¡ W 5 Q R X d S ©N)ÚpytestÚraisesr   ÚNetworkXNotImplementedr/   r   ©r   r    r   r   r   Ú test_no_directed_or_multi_graphsS   s    z0TestWriteGraph6.test_no_directed_or_multi_graphsc                 C   s–   t tdƒƒddddddg D ]t}tjj||| d |d	�}tƒ }tj||d
d� | ¡  ¡ }t	|ƒ|d | d d d |dk r„dnd kst
‚qd S ©Né   é   é/   r   r	   r
   éH   r   ©ÚseedFr>   r   r   r&   rD   )r)   r*   r   Úrandom_graphsÚgnm_random_graphr   r/   r1   Úrstripr'   r   )r   r   ÚgÚgstrr   r   r   Útest_lengthX   s     zTestWriteGraph6.test_lengthc                 C   s’   t tdƒƒddddddg D ]p}tjj||| d |d	�}tƒ }t ||¡ | d
¡ t |¡}t	| 
¡ | 
¡ ƒsvt‚t| ¡ | ¡ ƒst‚qd S )NrO   rP   rQ   r   r	   r
   rR   r   rS   r   )r)   r*   r   rU   rV   r   r/   Úseekr"   r   r   r   r   r   )r   r   r    ÚfÚHr   r   r   Útest_roundtripa   s     

zTestWriteGraph6.test_roundtripc              	   C   sB   t  ¡ �0}t t ¡ |¡ | d¡ | ¡ dks4t‚W 5 Q R X d S )Nr   r.   )	ÚtempfileÚNamedTemporaryFiler   Zwrite_graph6_filer   r0   r[   Úreadr   )r   r\   r   r   r   Útest_write_pathk   s    

zTestWriteGraph6.test_write_pathÚedge©)r   r   )r   r   )r   r   c                 C   s<   t  |g¡}tƒ }t  ||¡ | d¡ | ¡ dks8t‚d S )Nr   ó   >>graph6<<A_
)r   ÚGraphr   r/   r[   ra   r   )r   rc   r    r\   r   r   r   Útest_relabelingq   s
    
zTestWriteGraph6.test_relabelingN)r   r   r   Ú__doc__r4   r7   r;   r@   rB   rG   rI   ÚmarkÚparametrizer   Ú
MultiGraphÚDiGraphrM   rZ   r^   rb   rg   r   r   r   r   r,   0   s   
	
r,   c                   @   s„   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Ze	j
 de ¡ e ¡ f¡dd„ ƒZdd„ Zdd„ Ze	j
 dd¡dd„ ƒZdS )ÚTestToGraph6Bytesc                 C   s   t  ¡ }t |¡dkst‚d S r-   )r   r0   r   Úto_graph6_bytesr   rL   r   r   r   r4   {   s    z!TestToGraph6Bytes.test_null_graphc                 C   s   t  ¡ }t |¡dkst‚d S r5   )r   r6   r   rn   r   rL   r   r   r   r7      s    z$TestToGraph6Bytes.test_trivial_graphc                 C   s   t  t d¡¡dkst‚d S r8   )r   rn   r   r:   r   )r   r   r   r   r;   ƒ   s    z%TestToGraph6Bytes.test_complete_graphc                 C   s$   t  d¡}tj|dd�dks t‚d S r<   ©r   r:   r   rn   r   rL   r   r   r   r@   †   s    
z+TestToGraph6Bytes.test_large_complete_graphc                 C   s$   t  d¡}tj|dd�dks t‚d S rA   ro   rL   r   r   r   rB   Š   s    
z TestToGraph6Bytes.test_no_headerc                 C   s&   t  dd¡}tj|dd�dks"t‚d S rC   )r   rF   r   rn   r   rL   r   r   r   rG   Ž   s    z/TestToGraph6Bytes.test_complete_bipartite_graphr    c              	   C   s&   t  tj¡� t |¡ W 5 Q R X d S rH   )rI   rJ   r   rK   r   rn   rL   r   r   r   rM   ’   s    z2TestToGraph6Bytes.test_no_directed_or_multi_graphsc                 C   s†   t tdƒƒddddddg D ]d}tjj||| d |d	�}tj|d
d� ¡ }t|ƒ|d | d d d |dk rtdnd kst	‚qd S rN   )
r)   r*   r   rU   rV   r   rn   rW   r'   r   )r   r   r    rY   r   r   r   rZ   —   s     zTestToGraph6Bytes.test_lengthc                 C   s„   t tdƒƒddddddg D ]b}tjj||| d |d	�}t |¡}t | ¡ ¡}t	| 
¡ | 
¡ ƒsht‚t| ¡ | ¡ ƒst‚qd S )
NrO   rP   rQ   r   r	   r
   rR   r   rS   )r)   r*   r   rU   rV   r   rn   r   rW   r   r   r   r   r   )r   r   r    r   r]   r   r   r   r^   ž   s     
z TestToGraph6Bytes.test_roundtriprc   rd   c                 C   s"   t  |g¡}t |¡dkst‚d S )Nre   )r   rf   r   rn   r   )r   rc   r    r   r   r   rg   ¦   s    z!TestToGraph6Bytes.test_relabelingN)r   r   r   r4   r7   r;   r@   rB   rG   rI   ri   rj   r   rk   rl   rM   rZ   r^   rg   r   r   r   r   rm   z   s   
rm   )r_   Úior   rI   Znetworkxr   Znetworkx.readwrite.graph6Z	readwriteZgraph6r   Znetworkx.utilsr   r   r   r   r%   r,   rm   r   r   r   r   Ú<module>   s   J