
    Vh                         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y)    )BytesION)edges_equalnodes_equalc                      t        j                  d      } t        j                  d      }t         j                  j                  | |      sJ y)zSee gh-7557s#   >>graph6<<P~~~~~~~~~~~~~~~~~~~~~~{
s"   >>graph6<<P~~~~~~~~~~~~~~~~~~~~~~{N)nxfrom_graph6_bytesutilsgraphs_equal)GHs     T/home/dcms/DCMS/lib/python3.12/site-packages/networkx/readwrite/tests/test_graph6.py.test_from_graph6_invariant_to_trailing_newliner   
   s>    
DEA
BCA88  A&&&    c                      t        j                  t        j                        5  t        j                  d      } ddd       y# 1 sw Y   yxY w)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  !HIJ J J   AAc                       e Zd Zd Zy)TestGraph6Utilsc                 @   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(  rJ  y )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A<<Q03q888<<Q03r999<<Q2r( :;A>2r(JJJ	Kr   N)__name__
__module____qualname__r$    r   r   r   r      s    Kr   r   c                       e Zd Zd Zd Zy)TestFromGraph6Bytesc                     d}t        j                  |      }t        |j                         g d      sJ t	        |j                         g d      sJ y )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    sK      &1779o666GGIO
 	
 
r   c                    d}t        j                  |      }t        |      }t        j                  |      }t	        |j                         |j                               sJ t        |j                         |j                               sJ y )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(   sf      &T]nnR 1779ciik2221779ciik222r   N)r%   r&   r'   r3   r8   r(   r   r   r*   r*      s    
3r   r*   c                       e Zd Zd Zy)TestReadGraph6c                     d}t        |      }t        j                  |      }t        |      dk(  sJ |D ]$  }t	        |      t        t        d            k(  r$J  y)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   sW    &T]r"5zQ 	/A!9U1X...	/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                  j                  d ej                          ej                         f      d	        Zd
 Zd Zd Ze
j                  j                  dd      d        Zy)TestWriteGraph6z:Unit tests for writing a graph to a file in graph6 format.c                     t               }t        j                  t        j                         |       |j	                         dk(  sJ y N   >>graph6<<?
)r   r   write_graph6
null_graphgetvaluer"   results     r   test_null_graphzTestWriteGraph6.test_null_graph?   s3    
0 $4444r   c                     t               }t        j                  t        j                         |       |j	                         dk(  sJ y Ns   >>graph6<<@
)r   r   rH   trivial_graphrJ   rK   s     r   test_trivial_graphz"TestWriteGraph6.test_trivial_graphD   s6    
((*F3 $4444r   c                     t               }t        j                  t        j                  d      |       |j	                         dk(  sJ y Nr/   s   >>graph6<<C~
r   r   rH   complete_graphrJ   rK   s     r   test_complete_graphz#TestWriteGraph6.test_complete_graphI   s8    
))!,f5 $5555r   c                     t               }t        j                  t        j                  d      |d       |j	                         dk(  sJ y NC   Fheadersv  ~?@B~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~w
rT   rK   s     r   test_large_complete_graphz)TestWriteGraph6.test_large_complete_graphN   s:    
))"-veD $AAAAr   c                     t               }t        j                  t        j                  d      |d       |j	                         dk(  sJ y Nr/   FrZ   s   C~
rT   rK   s     r   test_no_headerzTestWriteGraph6.test_no_headerS   s9    
))!,fUC G+++r   c                     t               }t        j                  dd      }t        j                  ||d       |j	                         dk(  sJ y 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   sA    ''1-
6%0 $<<<<r   r   c                     t        j                  t        j                        5  t        j                  |t                      d d d        y # 1 sw Y   y xY wN)r   r   r   NetworkXNotImplementedrH   r   r"   r   s     r    test_no_directed_or_multi_graphsz0TestWriteGraph6.test_no_directed_or_multi_graphs_   s9    ]]2445 	*OOAwy)	* 	* 	*s   AAc                 b   t        t        d            g dz   D ]  }t        j                  j	                  |||z  dz  |      }t               }t        j                  ||d       |j                         j                         }t        |      |dz
  |z  dz  d	z   d
z  |dk  rdndz   k(  rJ  y 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    eBi#;; 	SA  11!QUaZa1HA9DOOAtE2==?))+Dt9!a%1!1A!5! ;AFqPQ RRRR	Sr   c                    t        t        d            g dz   D ]  }t        j                  j	                  |||z  dz  |      }t               }t        j                  ||       |j                  d       t        j                  |      }t        |j                         |j                               sJ t        |j                         |j                               rJ  y )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    eBi#;; 	5A  11!QUaZa1HA	AOOAq!FF1Iq!Aqwwy!'')444qwwy!'')444	5r   c                     t        |dz  d      5 }t        j                  t        j                         |       |j                  d       |j                         dk(  sJ 	 d d d        y # 1 sw Y   y xY w)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FF1I668////	0 	0 	0s   AA))A2edge)r   r   )r   r-   )r   r   c                     t        j                  |g      }t               }t        j                  ||       |j	                  d       |j                         dk(  sJ y )Nr      >>graph6<<A_
)r   Graphr   rH   r{   r   )r"   r   r   r|   s       r   test_relabelingzTestWriteGraph6.test_relabeling}   sG    HHdVI
1	q	vvx,,,,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5
5
6
B
,
= [[S=2==?JBJJL"AB* C*S50 [[V%>?- @-r   rD   c                      e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  d ej                          ej                         f      d        Zd	 Zd
 Ze	j                  j                  dd      d        Zy)TestToGraph6Bytesc                 `    t        j                         }t        j                  |      dk(  sJ y rF   )r   rI   r   to_graph6_bytesri   s     r   rM   z!TestToGraph6Bytes.test_null_graph   s'    MMO!!!$(8888r   c                 `    t        j                         }t        j                  |      dk(  sJ y rO   )r   rP   r   r   ri   s     r   rQ   z$TestToGraph6Bytes.test_trivial_graph   s*    !!!$(8888r   c                 ^    t        j                  t        j                  d            dk(  sJ y rS   )r   r   r   rU   )r"   s    r   rV   z%TestToGraph6Bytes.test_complete_graph   s'    !!""3"3A"67;LLLLr   c                 f    t        j                  d      }t        j                  |d      dk(  sJ y rX   r   rU   r   r   ri   s     r   r\   z+TestToGraph6Bytes.test_large_complete_graph   s.    b!!!!E26SSSSr   c                 f    t        j                  d      }t        j                  |d      dk(  sJ y r^   r   ri   s     r   r_   z TestToGraph6Bytes.test_no_header   s-    a !!!E2g===r   c                 h    t        j                  dd      }t        j                  |d      dk(  sJ y ra   )r   rd   r   r   ri   s     r   re   z/TestToGraph6Bytes.test_complete_bipartite_graph   s0    ''1-!!!E26NNNNr   r   c                     t        j                  t        j                        5  t	        j
                  |       d d d        y # 1 sw Y   y xY wrg   )r   r   r   rh   r   r   ri   s     r   rj   z2TestToGraph6Bytes.test_no_directed_or_multi_graphs   s7    ]]2445 	"q!	" 	" 	"r   c                 ,   t        t        d            g dz   D ]x  }t        j                  j	                  |||z  dz  |      }t        j                  |d      j                         }t        |      |dz
  |z  dz  d	z   d
z  |dk  rdndz   k(  rxJ  y rl   )	r?   r@   r   rt   ru   r   r   rv   r=   )r"   r#   r   rx   s       r   ry   zTestToGraph6Bytes.test_length   s    eBi#;; 	SA  11!QUaZa1HA%%a6==?Dt9!a%1!1A!5! ;AFqPQ RRRR		Sr   c                    t        t        d            g dz   D ]  }t        j                  j	                  |||z  dz  |      }t        j                  |      }t        j                  |j                               }t        |j                         |j                               sJ t        |j                         |j                               rJ  y )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    eBi#;; 	5A  11!QUaZa1HA%%a(D$$T[[]3Aqwwy!'')444qwwy!'')444	5r   r   r   c                 d    t        j                  |g      }t        j                  |      dk(  sJ y )Nr   )r   r   r   r   )r"   r   r   s      r   r   z!TestToGraph6Bytes.test_relabeling   s,    HHdV!!!$(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MT>O [[S=2==?JBJJL"AB" C"S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      sY       & & 3'JK K3 3$/ /G- G-T/: /:r   