o
    ]Zh                     @   s   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 )    )BytesION)edges_equalnodes_equalc                   @      e Zd Zdd ZdS )TestGraph6Utilsc                 C   sn   dD ]2}t t |d |ksJ t t |d g ks J t t |ddg d ddgks4J qd S )N)
r      *   >   ?   @   i i  i-v l   ? r   r   r   +   )g6Z	data_to_nZ	n_to_data)selfi r   S/var/www/auris/lib/python3.10/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   
       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| | sJ t| | s&J 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                   @   r   )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&   $   r   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   *   t  }tt | | dksJ d S N   >>graph6<<?
)r   r   write_graph6
null_graphgetvaluer   resultr   r   r   test_null_graph2      zTestWriteGraph6.test_null_graphc                 C   r.   Ns   >>graph6<<@
)r   r   r1   trivial_graphr3   r4   r   r   r   test_trivial_graph7   r7   z"TestWriteGraph6.test_trivial_graphc                 C   s,   t  }ttd| | dksJ d S Nr   s   >>graph6<<C~
r   r   r1   complete_graphr3   r4   r   r   r   test_complete_graph<   s   z#TestWriteGraph6.test_complete_graphc                 C   0   t  }tjtd|dd | dksJ d S NC   Fheadersv  ~?@B~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~w
r<   r4   r   r   r   test_large_complete_graphA      z)TestWriteGraph6.test_large_complete_graphc                 C   r?   Nr   FrB   s   C~
r<   r4   r   r   r   test_no_headerF   rE   zTestWriteGraph6.test_no_headerc                 C   s6   t  }tdd}tj||dd | dksJ d S N   	   FrB   s   N??F~z{~Fw^_~?~?^_?
)r   r   complete_bipartite_graphr1   r3   )r   r5   r!   r   r   r   test_complete_bipartite_graphK   s   z-TestWriteGraph6.test_complete_bipartite_graphr!   c                 C   s@   t tj t|t  W d    d S 1 sw   Y  d S N)pytestraisesr   NetworkXNotImplementedr1   r   r   r!   r   r   r    test_no_directed_or_multi_graphsR   s   "z0TestWriteGraph6.test_no_directed_or_multi_graphsc                 C   s   t tdg d D ]:}tjj||| d |d}t }tj||dd |  }t	||d | d d	 d
 |dk r>dnd ksDJ q
d S N      /   r	   r
   r   H   r   seedFrB   r   r   r'   rI   r
   )
r*   r+   r   random_graphsgnm_random_graphr   r1   r3   rstripr(   )r   r   ggstrr   r   r   test_lengthW   s   6zTestWriteGraph6.test_lengthc                 C   s   t tdg d D ]8}tjj||| d |d}t }t|| |d t|}t	|
 |
 s7J t| | sBJ q
d S )NrT   rU   r   rY   r   )r*   r+   r   r[   r\   r   r1   seekr#   r   r   r   r   )r   r   r!   fHr   r   r   test_roundtrip`   s   

zTestWriteGraph6.test_roundtripc                 C   s^   t |d d}tt | |d | dksJ W d    d S 1 s(w   Y  d S )Nztest.g6zw+br   r0   )openr   Zwrite_graph6_filer   r2   ra   read)r   Ztmp_pathrb   r   r   r   test_write_pathj   s
   
"zTestWriteGraph6.test_write_pathedge)r   r   )r   r   )r   r   c                 C   s<   t |g}t }t || |d | dksJ d S )Nr      >>graph6<<A_
)r   Graphr   r1   ra   rf   )r   rh   r!   rb   r   r   r   test_relabelingp   s
   
zTestWriteGraph6.test_relabelingN)r   r   r   __doc__r6   r:   r>   rD   rG   rL   rN   markparametrizer   
MultiGraphDiGraphrR   r`   rd   rg   rl   r   r   r   r   r-   /   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      t  }t|dksJ d S r/   )r   r2   r   to_graph6_bytesrQ   r   r   r   r6   z      z!TestToGraph6Bytes.test_null_graphc                 C   rs   r8   )r   r9   r   rt   rQ   r   r   r   r:   ~   ru   z$TestToGraph6Bytes.test_trivial_graphc                 C   s   t tddksJ d S r;   )r   rt   r   r=   )r   r   r   r   r>      s   z%TestToGraph6Bytes.test_complete_graphc                 C   $   t d}tj|dddksJ d S r@   r   r=   r   rt   rQ   r   r   r   rD         
z+TestToGraph6Bytes.test_large_complete_graphc                 C   rv   rF   rw   rQ   r   r   r   rG      rx   z TestToGraph6Bytes.test_no_headerc                 C   s&   t dd}tj|dddksJ d S rH   )r   rK   r   rt   rQ   r   r   r   rL      s   z/TestToGraph6Bytes.test_complete_bipartite_graphr!   c                 C   s<   t tj t| W d    d S 1 sw   Y  d S rM   )rN   rO   r   rP   r   rt   rQ   r   r   r   rR      s   "z2TestToGraph6Bytes.test_no_directed_or_multi_graphsc                 C   s~   t tdg d D ]2}tjj||| d |d}tj|dd }t||d | d d	 d
 |dk r6dnd ks<J q
d S rS   )	r*   r+   r   r[   r\   r   rt   r]   r(   )r   r   r!   r_   r   r   r   r`      s
   6zTestToGraph6Bytes.test_lengthc                 C   s|   t tdg d D ]1}tjj||| d |d}t|}t| }t	|
 |
 s0J t| | s;J q
d S )NrT   rU   r   rY   )r*   r+   r   r[   r\   r   rt   r   r]   r   r   r   r   )r   r   r!   r    rc   r   r   r   rd      s   
z TestToGraph6Bytes.test_roundtriprh   ri   c                 C   s"   t |g}t|dksJ d S )Nrj   )r   rk   r   rt   )r   rh   r!   r   r   r   rl      s   z!TestToGraph6Bytes.test_relabelingN)r   r   r   r6   r:   r>   rD   rG   rL   rN   rn   ro   r   rp   rq   rR   r`   rd   rl   r   r   r   r   rr   y   s    
rr   )ior   rN   Znetworkxr   Znetworkx.readwrite.graph6Z	readwriteZgraph6r   Znetworkx.utilsr   r   r   r   r&   r-   rr   r   r   r   r   <module>   s    J