
    \Mh                         d dl mZ d dlZd dlZd dlmc mZ d dl	m
Z
mZ d Zd Z G d d          Z G d d	          Z G d
 d          Z G d d          Z G d d          ZdS )    )BytesION)edges_equalnodes_equalc                      t          j        d          } t          j        d          }t           j                            | |          sJ dS )zSee gh-7557s#   >>graph6<<P~~~~~~~~~~~~~~~~~~~~~~{
s"   >>graph6<<P~~~~~~~~~~~~~~~~~~~~~~{N)nxfrom_graph6_bytesutilsgraphs_equal)GHs     d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/readwrite/tests/test_graph6.py.test_from_graph6_invariant_to_trailing_newliner   
   sH    
DEEA
BCCA8  A&&&&&&&    c                      t          j        t          j                  5  t          j        d          } ddd           dS # 1 swxY w Y   dS )z>graph6 headers must not be followed by a newline. See gh-7557.s#   >>graph6<<
P~~~~~~~~~~~~~~~~~~~~~~{N)pytestraisesr   NetworkXErrorr   )r   s    r   &test_from_graph6_raises_header_newliner      s    	r'	(	( J J !HIIJ J J J J J J J J J J J J J J J J J   AAAc                       e Zd Zd ZdS )TestGraph6Utilsc                 J   dD ]}t          j        t          j        |                    d         |k    sJ t          j        t          j        |                    d         g k    sJ t          j        t          j        |          ddgz             d         ddgk    sJ d S )N)
r      *   >   ?   @   i i  i-v l   ? r   r   r   +   )g6	data_to_n	n_to_data)selfis     r   test_n_data_n_conversionz(TestGraph6Utils.test_n_data_n_conversion   s    M 	K 	KA<Q003q8888<Q003r9999<Q2r( :;;A>2r(JJJJJ	K 	Kr   N)__name__
__module____qualname__r$    r   r   r   r      s(        K K K K Kr   r   c                       e Zd Zd Zd ZdS )TestFromGraph6Bytesc                     d}t          j        |          }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/   )r   r   r   nodesr   edges)r"   datar   s      r   test_from_graph6_bytesz*TestFromGraph6Bytes.test_from_graph6_bytes    ss     &&17799ooo66666GGIIOOO
 
 	
 	
 	
 	
 	
r   c                 P   d}t          j        |          }t          |          }t          j        |          }t	          |                                |                                          sJ t          |                                |                                          sJ d S )Nr,   )r   r   r   read_graph6r   r0   r   r1   )r"   r2   r   fhGins        r   test_read_equals_from_bytesz/TestFromGraph6Bytes.test_read_equals_from_bytes(   s     &&T]]nR  17799ciikk2222217799ciikk2222222r   N)r%   r&   r'   r3   r8   r(   r   r   r*   r*      s2        
 
 
3 3 3 3 3r   r*   c                       e Zd Zd ZdS )TestReadGraph6c                     d}t          |          }t          j        |          }t          |          dk    sJ |D ]1}t	          |          t          t          d                    k    sJ 2dS )z5Test for reading many graphs from a file into a list.s   DF{
D`{
DqK
D~{
r/      N)r   r   r5   lensortedlistrange)r"   r2   r6   glistr   s        r   test_read_many_graph6z$TestReadGraph6.test_read_many_graph62   ss    &T]]r""5zzQ 	/ 	/A!99U1XX.....	/ 	/r   N)r%   r&   r'   rB   r(   r   r   r:   r:   1   s#        / / / / /r   r:   c                      e Zd ZdZd Zd Zd Zd Zd Zd Z	e
j                            d ej                     ej                    f          d	             Zd
 Zd Zd Ze
j                            dd          d             ZdS )TestWriteGraph6z:Unit tests for writing a graph to a file in graph6 format.c                     t                      }t          j        t          j                    |           |                                dk    sJ d S N   >>graph6<<?
)r   r   write_graph6
null_graphgetvaluer"   results     r   test_null_graphzTestWriteGraph6.test_null_graph?   sE    
000  $4444444r   c                     t                      }t          j        t          j                    |           |                                dk    sJ d S Ns   >>graph6<<@
)r   r   rH   trivial_graphrJ   rK   s     r   test_trivial_graphz"TestWriteGraph6.test_trivial_graphD   sH    
(**F333  $4444444r   c                     t                      }t          j        t          j        d          |           |                                dk    sJ d S Nr/   s   >>graph6<<C~
r   r   rH   complete_graphrJ   rK   s     r   test_complete_graphz#TestWriteGraph6.test_complete_graphI   sJ    
)!,,f555  $5555555r   c                     t                      }t          j        t          j        d          |d           |                                dk    sJ d S NC   Fheadersv  ~?@B~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~w
rT   rK   s     r   test_large_complete_graphz)TestWriteGraph6.test_large_complete_graphN   sO    
)"--veDDDD  $AAAAAAAr   c                     t                      }t          j        t          j        d          |d           |                                dk    sJ d S Nr/   FrZ   s   C~
rT   rK   s     r   test_no_headerzTestWriteGraph6.test_no_headerS   sN    
)!,,fUCCCC  G++++++r   c                     t                      }t          j        dd          }t          j        ||d           |                                dk    sJ d S N   	   FrZ   s   N??F~z{~Fw^_~?~?^_?
)r   r   complete_bipartite_graphrH   rJ   )r"   rL   r   s      r   test_complete_bipartite_graphz-TestWriteGraph6.test_complete_bipartite_graphX   sV    '1--
6%0000  $<<<<<<<r   r   c                     t          j        t          j                  5  t          j        |t                                 d d d            d S # 1 swxY w Y   d S N)r   r   r   NetworkXNotImplementedrH   r   r"   r   s     r    test_no_directed_or_multi_graphsz0TestWriteGraph6.test_no_directed_or_multi_graphs_   s    ]2455 	* 	*OAwyy)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   "AAAc                    t          t          d                    g dz   D ]}t          j                            |||z  dz  |          }t                      }t          j        ||d           |                                                                }t          |          |dz
  |z  dz  d	z   d
z  |dk     rdndz   k    sJ d S N      /   r   r   r   H   r/   seedFrZ   r   r-   r<   rb   r   )
r?   r@   r   random_graphsgnm_random_graphr   rH   rJ   rstripr=   )r"   r#   ggstrs       r   test_lengthzTestWriteGraph6.test_lengthd   s    eBii#;#;#;; 	S 	SA 11!QUaZa1HHA99DOAtE2222==??))++Dt99!a%1!1A!5! ;AFFqqPQ RRRRRR	S 	Sr   c                    t          t          d                    g dz   D ]}t          j                            |||z  dz  |          }t                      }t          j        ||           |                    d           t          j        |          }t          |
                                |
                                          sJ t          |                                |                                          sJ d S )Nrm   rn   r/   rr   r   )r?   r@   r   rt   ru   r   rH   seekr5   r   r0   r   r1   )r"   r#   r   fr   s        r   test_roundtripzTestWriteGraph6.test_roundtripm   s    eBii#;#;#;; 	5 	5A 11!QUaZa1HHA		AOAq!!!FF1IIIq!!Aqwwyy!''))44444qwwyy!''))444444	5 	5r   c                 
   t          |dz  d          5 }t          j        t          j                    |           |                    d           |                                dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nztest.g6zw+br   rG   )openr   write_graph6_filer   rI   r{   read)r"   tmp_pathr|   s      r   test_write_pathzTestWriteGraph6.test_write_pathw   s    (Y&.. 	0! !444FF1III6688//////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   AA88A<?A<edge)r   r   )r   r-   )r   r   c                     t          j        |g          }t                      }t          j        ||           |                    d           |                                dk    sJ d S )Nr      >>graph6<<A_
)r   Graphr   rH   r{   r   )r"   r   r   r|   s       r   test_relabelingzTestWriteGraph6.test_relabeling}   s]    HdVII
1	q			vvxx,,,,,,,r   N)r%   r&   r'   __doc__rM   rQ   rV   r\   r_   re   r   markparametrizer   
MultiGraphDiGraphrj   ry   r}   r   r   r(   r   r   rD   rD   <   s       DD5 5 5
5 5 5
6 6 6
B B B
, , ,
= = = [S=2=??JBJLL"ABB* * CB*S S S5 5 50 0 0 [V%>??- - @?- - -r   rD   c                      e Zd Zd Zd Zd Zd Zd Zd Ze	j
                            d ej                     ej                    f          d             Zd	 Zd
 Ze	j
                            dd          d             ZdS )TestToGraph6Bytesc                 `    t          j                    }t          j        |          dk    sJ d S rF   )r   rI   r   to_graph6_bytesri   s     r   rM   z!TestToGraph6Bytes.test_null_graph   s0    MOO!!$$(8888888r   c                 `    t          j                    }t          j        |          dk    sJ d S rO   )r   rP   r   r   ri   s     r   rQ   z$TestToGraph6Bytes.test_trivial_graph   s3    !!$$(8888888r   c                 ^    t          j        t          j        d                    dk    sJ d S rS   )r   r   r   rU   )r"   s    r   rV   z%TestToGraph6Bytes.test_complete_graph   s0    !""3A"6"677;LLLLLLLr   c                 f    t          j        d          }t          j        |d          dk    sJ d S rX   r   rU   r   r   ri   s     r   r\   z+TestToGraph6Bytes.test_large_complete_graph   s:    b!!!!E2226SSSSSSSr   c                 f    t          j        d          }t          j        |d          dk    sJ d S r^   r   ri   s     r   r_   z TestToGraph6Bytes.test_no_header   s9    a  !!E222g======r   c                 h    t          j        dd          }t          j        |d          dk    sJ d S ra   )r   rd   r   r   ri   s     r   re   z/TestToGraph6Bytes.test_complete_bipartite_graph   s<    '1--!!E2226NNNNNNNr   r   c                     t          j        t          j                  5  t	          j        |           d d d            d S # 1 swxY w Y   d S rg   )r   r   r   rh   r   r   ri   s     r   rj   z2TestToGraph6Bytes.test_no_directed_or_multi_graphs   s    ]2455 	" 	"q!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"r   c                 L   t          t          d                    g dz   D ]}t          j                            |||z  dz  |          }t          j        |d                                          }t          |          |dz
  |z  dz  d	z   d
z  |dk     rdndz   k    sJ d S rl   )	r?   r@   r   rt   ru   r   r   rv   r=   )r"   r#   r   rx   s       r   ry   zTestToGraph6Bytes.test_length   s    eBii#;#;#;; 	S 	SA 11!QUaZa1HHA%a666==??Dt99!a%1!1A!5! ;AFFqqPQ RRRRRR		S 	Sr   c                    t          t          d                    g dz   D ]}t          j                            |||z  dz  |          }t          j        |          }t          j        |                                          }t          |
                                |
                                          sJ t          |                                |                                          sJ d S )Nrm   rn   r/   rr   )r?   r@   r   rt   ru   r   r   r   rv   r   r0   r   r1   )r"   r#   r   r2   r   s        r   r}   z TestToGraph6Bytes.test_roundtrip   s    eBii#;#;#;; 	5 	5A 11!QUaZa1HHA%a((D$T[[]]33Aqwwyy!''))44444qwwyy!''))444444	5 	5r   r   r   c                 d    t          j        |g          }t          j        |          dk    sJ d S )Nr   )r   r   r   r   )r"   r   r   s      r   r   z!TestToGraph6Bytes.test_relabeling   s6    HdV!!$$(9999999r   N)r%   r&   r'   rM   rQ   rV   r\   r_   re   r   r   r   r   r   r   rj   ry   r}   r   r(   r   r   r   r      s       9 9 99 9 9M M MT T T> > >O O O [S=2=??JBJLL"ABB" " CB"S S S5 5 5 [V%>??: : @?: : :r   r   )ior   r   networkxr   networkx.readwrite.graph6	readwritegraph6r   networkx.utilsr   r   r   r   r   r*   r:   rD   r   r(   r   r   <module>r      sc              & & & & & & & & & 3 3 3 3 3 3 3 3' ' 'J J JK K K K K K K K3 3 3 3 3 3 3 3$/ / / / / / / /G- G- G- G- G- G- G- G-T/: /: /: /: /: /: /: /: /: /:r   