
    Vh'                         d Z ddlZddlZddlZddlmZmZmZ  G d d      Z	 G d d      Z
ej                  j                  dg d	dfg d
dfg ddfg ddff      d        Zy)z
Unit tests for adjlist.
    N)edges_equalgraphs_equalnodes_equalc                   ^    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zy)TestAdjlistc                    t        j                  d      | _        g d}| j                  j                  |       | j                  j	                  d       t        j
                  | j                        | _        t        j                         | _        | j                  j                  g d       t        j                  | j                        | _        y )Ntestname)ab)r   c)r   d)r   e)r   f)r   r   g         r   )r   r   r   )   r   *   )nxGraphGadd_edges_fromadd_nodeDiGraphDG
MultiGraphXGadd_weighted_edges_fromMultiDiGraphXDGclsr   s     U/home/dcms/DCMS/lib/python3.12/site-packages/networkx/readwrite/tests/test_adjlist.pysetup_classzTestAdjlist.setup_class   s    f%TQsCEE"&&'TU//#&&)    c                     d}t        j                  |      }t        j                  |      }i i ddi idi id}t	        |t        j
                  |            sJ y )Ns&   # comment line
1 2
# comment line
2
3
)321)r/   r-   r.   )ioBytesIOr   read_multiline_adjlistr   r   )selfsbytesIOr   adjs        r)   test_read_multiline_adjlist_1z)TestAdjlist.test_read_multiline_adjlist_1   sY     **Q-%%g.2&c2Yc2YGArxx}---r+   c                 `   t        j                         }t        d      t        d      z   t        d      z   }t        d      t        d      z   t        d      z   } |j                  |dfi |di |d	z  }t        j                  ||       t        j
                  |      }t        ||      sJ y )
N(	  {         D  	Radioheadr   adjlist.txtr   r   chradd_edgewrite_multiline_adjlistr2   r   r3   tmp_pathr   name1name2fnameHs          r)   test_unicodezTestAdjlist.test_unicode&   s    HHJD	CH$s4y0D	CI%C0

5+4%4=(
""1e,%%e,Aq!!!r+   c                 z   t        j                         }t        d      t        d      z   t        d      z   }t        d      t        d      z   t        d      z   } |j                  |dfi |di |d	z  }t	        j
                  t              5  t        j                  ||d
       d d d        y # 1 sw Y   y xY w)Nr9   r:   r;   r<   r=   r>   r?   r   r@   latin-1encoding)r   r   rB   rC   pytestraisesUnicodeEncodeErrorrD   )r3   rF   r   rG   rH   rI   s         r)   test_latin1_errzTestAdjlist.test_latin1_err1   s    HHJD	CH$s4y0D	CI%C0

5+4%4=(]]-. 	E&&q%)D	E 	E 	Es   B11B:c                    t        j                         }dt        d      z   dz   }t        d      dz   } |j                  |dfi |di |dz  }t        j                  ||d	
       t        j
                  |d	
      }t        ||      sJ y )NBj   rk   berr?   r   r@   rM   rN   rA   rE   s          r)   test_latin1zTestAdjlist.test_latin1:   s    HHJs3x$&C5 

5+4%4=(
""1ei@%%ei@Aq!!!r+   c                 f   g d}t        j                  |t               t        j                  t
              5  t        j                  |d       d d d        g d}t        j                  t
              5  t        j                  |t               d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)N1 2 5z2 3 4z3 545nodetypeint)r]   z2 br   )r   parse_adjlistrb   rP   rQ   	TypeErrorr3   liness     r)   test_parse_adjlistzTestAdjlist.test_parse_adjlistD   s    3
-]]9% 	4UU3	4%]]9% 	2US1	2 	2	4 	4	2 	2s   B6B'B$'B0c                 j   | j                   }|dz  }t        j                  ||       t        j                  |      }t        j                  |      }||usJ t	        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y Nr@   )r   r   write_adjlistread_adjlistr   listr   edgesr3   rF   r   rI   rJ   H2s         r)   test_adjlist_graphzTestAdjlist.test_adjlist_graphM   s    FF=(
E"OOE"__U#{{47DG,,,4	?DO<<<r+   c                    | j                   }|dz  }t        j                  ||       t        j                  |t        j                               }t        j                  |t        j                               }||usJ t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y Nr@   )create_using)	r!   r   rj   rk   r    r   rl   r   rm   rn   s         r)   test_adjlist_digraphz TestAdjlist.test_adjlist_digraphW   s    GG=(
E"OOE

=__U>{{47DG,,,4	?DO<<<r+   c                    |dz  }t        j                  | j                        }t        j                  ||       t        j                  |t
              }t        j                  |t
              }||usJ t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y Nr@   r`   )
r   convert_node_labels_to_integersr   rj   rk   rb   r   rl   r   rm   r3   rF   rI   r   rJ   ro   s         r)   test_adjlist_integersz!TestAdjlist.test_adjlist_integersa   s    =(..tvv6
E"OOEC0__US1{{47DG,,,4	?DO<<<r+   c                    | j                   }|dz  }t        j                  ||       t        j                  |t        t        j
                               }t        j                  |t        t        j
                               }||usJ t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y Nr@   )ra   rs   )
r#   r   rj   rk   rb   r"   r   rl   r   rm   rn   s         r)   test_adjlist_multigraphz#TestAdjlist.test_adjlist_multigraphk   s    GG=(
E"OOECbmmoN__USr}}O{{47DG,,,4	?DO<<<r+   c                    | j                   }|dz  }t        j                  ||       t        j                  |t        t        j
                               }t        j                  |t        t        j
                               }||usJ t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y r{   )
r&   r   rj   rk   rb   r%   r   rl   r   rm   rn   s         r)   test_adjlist_multidigraphz%TestAdjlist.test_adjlist_multidigraphu   s    HH=(
E"OOECboo>OP__USr?PQ{{47DG,,,4	?DO<<<r+   c                    t        j                         }t        j                  d      }t        j                  ||d       |j                  d       t        j                  |t        d      }t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y Nr   :	delimiterr   )ra   r   )r0   r1   r   
path_graphrj   seekrk   rb   r   rl   r   rm   r3   fhr   rJ   s       r)   test_adjlist_delimiterz"TestAdjlist.test_adjlist_delimiter   s    ZZ\MM!
B#.

OOB<47DG,,,4	?DO<<<r+   N)__name__
__module____qualname__classmethodr*   r7   rK   rS   rZ   rg   rp   rt   ry   r|   r~   r    r+   r)   r   r      sL    * *.	"E"2======r+   r   c                   F    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zy	)
TestMultilineAdjlistc                    t        j                  d      | _        g d}| j                  j                  |       | j                  j	                  d       t        j
                  | j                        | _        | j                  j                  dd       | j                  j                  dd       t        j                         | _	        | j                  j                  g d       t        j                  | j                        | _        y )	Nr	   r
   r   r   r   r   r   r   )r   r   r   r   r   r    r!   remove_edger"   r#   r$   r%   r&   r'   s     r)   r*   z TestMultilineAdjlist.setup_class   s    f%TQsCEE"3$3$&&'TU//#&&)r+   c                 b   g d}t        j                  t        |             t        j                  t
              5  t        j                  t        |      t               d d d        t        j                  t        |      t               t        j                  t
              5  t        j                  t        |      t               d d d        dg}t        j                  t
              5  t        j                  t        |             d d d        dg}t        j                  t
              5  t        j                  t        |      t               d d d        dg}t        j                  t
              5  t        j                  t        |             d d d        ddg}t        j                  t
              5  t        j                  t        |             d d d        y # 1 sw Y   xY w# 1 sw Y   +xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N)1 2zb {'weight':3, 'name': 'Frodo'}zc {}zd 1z!e {'weight':6, 'name': 'Saruman'}r`   )edgetypez1 aza 2r   z2 {})r   parse_multiline_adjlistiterrP   rQ   rd   rb   strre   s     r)   test_parse_multiline_adjlistz1TestMultilineAdjlist.test_parse_multiline_adjlist   s   
 	""4;/]]9% 	B&&tE{SA	B
""4;=]]9% 	B&&tE{SA	B]]9% 	4&&tE{3	4]]9% 	B&&tE{SA	B]]9% 	4&&tE{3	4]]9% 	4&&tE{3	4 	4	B 	B	B 	B	4 	4	B 	B	4 	4	4 	4sG   %G'&%G4/H2%H;H?H%'G14G>H
HH"%H.c                 j   | j                   }|dz  }t        j                  ||       t        j                  |      }t        j                  |      }||usJ t	        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y ri   )r   r   rD   r2   r   rl   r   rm   rn   s         r)   test_multiline_adjlist_graphz1TestMultilineAdjlist.test_multiline_adjlist_graph   s    FF=(
""1e,%%e,&&u-{{47DG,,,4	?DO<<<r+   c                    | j                   }|dz  }t        j                  ||       t        j                  |t        j                               }t        j                  |t        j                               }||usJ t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y rr   )	r!   r   rD   r2   r    r   rl   r   rm   rn   s         r)   test_multiline_adjlist_digraphz3TestMultilineAdjlist.test_multiline_adjlist_digraph   s    GG=(
""1e,%%e"**,G&&u2::<H{{47DG,,,4	?DO<<<r+   c                    |dz  }t        j                  | j                        }t        j                  ||       t        j                  |t
              }t        j                  |t
              }||usJ t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y rv   )
r   rw   r   rD   r2   rb   r   rl   r   rm   rx   s         r)   test_multiline_adjlist_integersz4TestMultilineAdjlist.test_multiline_adjlist_integers   s    =(..tvv6
""1e,%%ec:&&us;{{47DG,,,4	?DO<<<r+   c                    | j                   }|dz  }t        j                  ||       t        j                  |t        t        j
                               }t        j                  |t        t        j
                               }||usJ t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y r{   )
r#   r   rD   r2   rb   r"   r   rl   r   rm   rn   s         r)   !test_multiline_adjlist_multigraphz6TestMultilineAdjlist.test_multiline_adjlist_multigraph   s    GG=(
""1e,%%ecX&&Cbmmo
 {{47DG,,,4	?DO<<<r+   c                    | j                   }|dz  }t        j                  ||       t        j                  |t        t        j
                               }t        j                  |t        t        j
                               }||usJ t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y r{   )
r&   r   rD   r2   rb   r%   r   rl   r   rm   rn   s         r)   #test_multiline_adjlist_multidigraphz8TestMultilineAdjlist.test_multiline_adjlist_multidigraph   s    HH=(
""1e,%%Cboo.?
 &&Cboo.?
 {{47DG,,,4	?DO<<<r+   c                    t        j                         }t        j                  d      }t        j                  ||d       |j                  d       t        j                  |t        d      }t        t        |      t        |            sJ t        t        |j                               t        |j                                     sJ y r   )r0   r1   r   r   rD   r   r2   rb   r   rl   r   rm   r   s       r)    test_multiline_adjlist_delimiterz5TestMultilineAdjlist.test_multiline_adjlist_delimiter   s    ZZ\MM!
""1bC8

%%b3#F47DG,,,4	?DO<<<r+   N)r   r   r   r   r*   r   r   r   r   r   r   r   r   r+   r)   r   r      s7    
* 
*46===
===r+   r   )rf   delimr\   )1	2	52	3	4z3	5r^   r_   	)r   r   z3	5	4	r_   )r   r   z3	5		
r   r_   c                     t        j                  g d      }t         j                  j                  t        j                  | |      |       y)z"Regression test related to gh-7465))r   r   )r   r   )r   r   )r      )r   r   r   N)r   r   utilsr   rc   )rf   r   expecteds      r)   test_adjlist_rstrip_parsingr      s4    " xx@AHHH"**5EBHMr+   )__doc__r0   rP   networkxr   networkx.utilsr   r   r   r   r   markparametrizer   r   r+   r)   <module>r      s    
   A Ay= y=xh= h=V 	,d3	1488	

 =	
NNr+   