o
    ˷e                     @   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                   @      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   +   )g6	data_to_n	n_to_data)selfi r   [/var/www/ideatree/venv/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#   fh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&   glistr#   r   r   r   test_read_many_graph6&   s   
z$TestReadGraph6.test_read_many_graph6N)r   r   r   r0   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_graph3      zTestWriteGraph6.test_null_graphc                 C   r2   Ns   >>graph6<<@
)r   r   r5   trivial_graphr7   r8   r   r   r   test_trivial_graph8   r;   z"TestWriteGraph6.test_trivial_graphc                 C   s,   t  }ttd| | dksJ d S Nr   s   >>graph6<<C~
r   r   r5   complete_graphr7   r8   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@   r8   r   r   r   test_large_complete_graphB      z)TestWriteGraph6.test_large_complete_graphc                 C   rC   Nr   FrF   s   C~
r@   r8   r   r   r   test_no_headerG   rI   zTestWriteGraph6.test_no_headerc                 C   s6   t  }tdd}tj||dd | dksJ d S N   	   FrF   s   N??F~z{~Fw^_~?~?^_?
)r   r   complete_bipartite_graphr5   r7   )r   r9   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    d S 1 sw   Y  d S N)pytestraisesr   NetworkXNotImplementedr5   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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   seedFrF   r   r   r*   rM   r
   )
r-   r.   r   random_graphsgnm_random_graphr   r5   r7   rstripr+   )r   r   ggstrr   r   r   test_lengthX   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 )NrX   rY   r   r]   r   )r-   r.   r   r_   r`   r   r5   seekr%   r   r    r   r!   )r   r   r#   fHr   r   r   test_roundtripa   s   

zTestWriteGraph6.test_roundtripc                 C   sX   t  }tt | |d | dksJ W d    d S 1 s%w   Y  d S )Nr   r4   )tempfileNamedTemporaryFiler   write_graph6_filer   r6   re   read)r   rf   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sJ d S )Nr      >>graph6<<A_
)r   Graphr   r5   re   rl   )r   rn   r#   rf   r   r   r   test_relabelingq   s
   
zTestWriteGraph6.test_relabelingN)r   r   r   __doc__r:   r>   rB   rH   rK   rP   rR   markparametrizer   
MultiGraphDiGraphrV   rd   rh   rm   rr   r   r   r   r   r1   0   s    
	
r1   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 r3   )r   r6   r   to_graph6_bytesrU   r   r   r   r:   {      z!TestToGraph6Bytes.test_null_graphc                 C   ry   r<   )r   r=   r   rz   rU   r   r   r   r>      r{   z$TestToGraph6Bytes.test_trivial_graphc                 C   s   t tddksJ d S r?   )r   rz   r   rA   )r   r   r   r   rB      s   z%TestToGraph6Bytes.test_complete_graphc                 C   $   t d}tj|dddksJ d S rD   r   rA   r   rz   rU   r   r   r   rH         
z+TestToGraph6Bytes.test_large_complete_graphc                 C   r|   rJ   r}   rU   r   r   r   rK      r~   z TestToGraph6Bytes.test_no_headerc                 C   s&   t dd}tj|dddksJ d S rL   )r   rO   r   rz   rU   r   r   r   rP      s   z/TestToGraph6Bytes.test_complete_bipartite_graphr#   c                 C   s<   t tj t| W d    d S 1 sw   Y  d S rQ   )rR   rS   r   rT   r   rz   rU   r   r   r   rV      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 rW   )	r-   r.   r   r_   r`   r   rz   ra   r+   )r   r   r#   rc   r   r   r   rd      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 )NrX   rY   r   r]   )r-   r.   r   r_   r`   r   rz   r   ra   r   r    r   r!   )r   r   r#   r"   rg   r   r   r   rh      s   
z TestToGraph6Bytes.test_roundtriprn   ro   c                 C   s"   t |g}t|dksJ d S )Nrp   )r   rq   r   rz   )r   rn   r#   r   r   r   rr      s   z!TestToGraph6Bytes.test_relabelingN)r   r   r   r:   r>   rB   rH   rK   rP   rR   rt   ru   r   rv   rw   rV   rd   rh   rr   r   r   r   r   rx   z   s    
rx   )ri   ior   rR   networkxr   networkx.readwrite.graph6	readwritegraph6r   networkx.utilsr   r   r   r   r)   r1   rx   r   r   r   r   <module>   s    J