a
    h                     @   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$J t t |d g ks@J t t |ddg d ddgksJ qd S )N)
r      *   >   ?   @   i i  i-v l   ? r   r   r   +   )g6Z	data_to_nZ	n_to_data)selfi r   R/var/www/auris/lib/python3.9/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   s>   d}t |}t| g ds$J t| g ds:J 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   edges)r   dataGr   r   r   test_from_graph6_bytes   s    
z*TestFromGraph6Bytes.test_from_graph6_bytesc                 C   sP   d}t |}t|}t |}t| | s6J t| | sLJ d S )Nr   )r   r   r   read_graph6r   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&J |D ]}t|ttdks*J q*dS )z5Test for reading many graphs from a file into a list.s   DF{
D`{
DqK
D~{
r      N)r   r   r!   len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&J d S N   >>graph6<<?
)r   r   write_graph6
null_graphgetvaluer   resultr   r   r   test_null_graph3   s    zTestWriteGraph6.test_null_graphc                 C   s*   t  }tt | | dks&J d S Ns   >>graph6<<@
)r   r   r.   trivial_graphr0   r1   r   r   r   test_trivial_graph8   s    z"TestWriteGraph6.test_trivial_graphc                 C   s,   t  }ttd| | dks(J d S Nr   s   >>graph6<<C~
r   r   r.   complete_graphr0   r1   r   r   r   test_complete_graph=   s    z#TestWriteGraph6.test_complete_graphc                 C   s0   t  }tjtd|dd | dks,J d S NC   Fheadersv  ~?@B~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~w
r8   r1   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,J d S Nr   Fr=   s   C~
r8   r1   r   r   r   test_no_headerG   s    zTestWriteGraph6.test_no_headerc                 C   s6   t  }tdd}tj||dd | dks2J d S N   	   Fr=   s   N??F~z{~Fw^_~?~?^_?
)r   r   complete_bipartite_graphr.   r0   )r   r2   r   r   r   r   test_complete_bipartite_graphL   s    z-TestWriteGraph6.test_complete_bipartite_graphr   c                 C   s>   t tj t|t  W d    n1 s00    Y  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g d 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J qd S N      /   r   r	   r
   H   r   seedFr=   r   r   r%   rC   r	   )
r(   r)   r   random_graphsgnm_random_graphr   r.   r0   rstripr&   )r   r   ggstrr   r   r   test_lengthX   s    zTestWriteGraph6.test_lengthc                 C   s   t tdg d D ]p}tjj||| d |d}t }t|| |d t|}t	|
 |
 snJ t| | sJ qd S )NrN   rO   r   rS   r   )r(   r)   r   rU   rV   r   r.   seekr!   r   r   r   r   )r   r   r   fHr   r   r   test_roundtripa   s    

zTestWriteGraph6.test_roundtripc                 C   sV   t  :}tt | |d | dks4J W d    n1 sH0    Y  d S )Nr   r-   )tempfileNamedTemporaryFiler   Zwrite_graph6_filer   r/   r[   read)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s8J d S )Nr      >>graph6<<A_
)r   Graphr   r.   r[   ra   )r   rc   r   r\   r   r   r   test_relabelingq   s
    
zTestWriteGraph6.test_relabelingN)r   r   r   __doc__r3   r6   r:   r?   rA   rF   rH   markparametrizer   
MultiGraphDiGraphrL   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J d S r,   )r   r/   r   to_graph6_bytesrK   r   r   r   r3   {   s    z!TestToGraph6Bytes.test_null_graphc                 C   s   t  }t|dksJ d S r4   )r   r5   r   rn   rK   r   r   r   r6      s    z$TestToGraph6Bytes.test_trivial_graphc                 C   s   t tddksJ d S r7   )r   rn   r   r9   )r   r   r   r   r:      s    z%TestToGraph6Bytes.test_complete_graphc                 C   s$   t d}tj|dddks J d S r;   r   r9   r   rn   rK   r   r   r   r?      s    
z+TestToGraph6Bytes.test_large_complete_graphc                 C   s$   t d}tj|dddks J d S r@   ro   rK   r   r   r   rA      s    
z TestToGraph6Bytes.test_no_headerc                 C   s&   t dd}tj|dddks"J d S rB   )r   rE   r   rn   rK   r   r   r   rF      s    z/TestToGraph6Bytes.test_complete_bipartite_graphr   c                 C   s:   t tj t| W d    n1 s,0    Y  d S rG   )rH   rI   r   rJ   r   rn   rK   r   r   r   rL      s    z2TestToGraph6Bytes.test_no_directed_or_multi_graphsc                 C   s~   t tdg d D ]d}tjj||| d |d}tj|dd }t||d | d d	 d
 |dk rldnd ksJ qd S rM   )	r(   r)   r   rU   rV   r   rn   rW   r&   )r   r   r   rY   r   r   r   rZ      s    zTestToGraph6Bytes.test_lengthc                 C   s|   t tdg d D ]b}tjj||| d |d}t|}t| }t	|
 |
 s`J t| | sJ qd S )NrN   rO   r   rS   )r(   r)   r   rU   rV   r   rn   r   rW   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J d S )Nre   )r   rf   r   rn   )r   rc   r   r   r   r   rg      s    z!TestToGraph6Bytes.test_relabelingN)r   r   r   r3   r6   r:   r?   rA   rF   rH   ri   rj   r   rk   rl   rL   rZ   r^   rg   r   r   r   r   rm   z   s   
rm   )r_   ior   rH   Znetworkxr   Znetworkx.readwrite.graph6Z	readwriteZgraph6r   Znetworkx.utilsr   r   r   r   r$   r+   rm   r   r   r   r   <module>   s   J