U
    :vf                     @   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   H/tmp/pip-unpacked-wheel-_lngutwb/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 NC   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 rd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