
    \MhT"                     p    d Z ddlZddlZddlZddlmZmZmZ  ej	        d          Z
 G d d          ZdS )z$Unit tests for PyGraphviz interface.    N)edges_equalgraphs_equalnodes_equal
pygraphvizc                      e Zd Zd Zd Zej                            d ej	                     ej
                     ej                     ej                    f          d             Zd Zej                            dej	        ej
        ej        ej        f          d             Zd Zd	 Zej                            dej	        ej        f          d
             Zd Zd Zd Zd Zd Zd Zd Zd Zej                            d          d             Zd Zd Zej                            d          d             Zd Z ej                            d e!d                    d             Z"d Z#d Z$d  Z%d!S )"
TestAGraphc                 v    g d}|                     |           |                    d           d|j        d<   |S )N)ABr   Cr   )r   r   )r   DEbronzemetal)add_edges_fromadd_nodegraph)selfGedgess      b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/networkx/drawing/tests/test_agraph.pybuild_graphzTestAGraph.build_graph   sA    LLL		

3#    c                    t          |                                |                                          sJ t          |                                |                                          sJ |j        d         |j        d         k    sJ d S )Nr   )r   nodesr   r   r   )r   G1G2s      r   assert_equalzTestAGraph.assert_equal   ss    288::rxxzz22222288::rxxzz22222x BHW$5555555r   r   c                    |                      |          }t          j                            |          }t          j                            |          }|                     ||           |dz  }t          j        j                            ||           t          j                            |          }|                     ||           |dz  }t          |d          5 }t          j        j                            ||           d d d            n# 1 swxY w Y   t          |          5 }t          j                            |          }d d d            n# 1 swxY w Y   |                     ||           d S )Nztest.dotzfh_test.dotw)
r   nx	nx_agraph	to_agraphfrom_agraphr    drawing	write_dotread_dotopen)r   r   tmp_pathr   HfnameHinfhs           r   test_agraph_roundtrippingz$TestAGraph.test_agraph_roundtripping   s    QL""1%%L$$Q''!Q:%

&&q%000l##E**!S!!!=(% 	2J **1b111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 %[[ 	,B,''++C	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,!S!!!!!s$   &DDD* EEEc                     t          j        d          }t           j                            |          }t           j                            |          }|j        dk    sJ d S )Ntest)name)r#   Graphr$   r%   r&   r3   r   r   r   r,   s       r   test_from_agraph_namez TestAGraph.test_from_agraph_name0   sW    H&!!!L""1%%L$$Q''vr   graph_classc                     t          j        d          }t           j                            |          }t           j                            ||          }t          ||          sJ d S )N   )create_using)r#   
path_graphr$   r%   r&   
isinstance)r   r7   r   r   r,   s        r   test_from_agraph_create_usingz(TestAGraph.test_from_agraph_create_using6   s^     M!L""1%%L$$Q[$AA![)))))))r   c                 |   t          j                    }|                    ddg           t           j                            |          }|                    ddd           t           j                            |          }t          |t           j                  sJ ddddif|                    d	          v sJ d S )
Nr      foo)key01rA   Tdata)	r#   r4   add_nodes_fromr$   r%   add_edger&   r<   r   r5   s       r   test_from_agraph_named_edgesz'TestAGraph.test_from_agraph_named_edges?   s    HJJ	!Q   L""1%%	

1aU
###L$$Q''!RX&&&&&S5%.)QWW$W-?-???????r   c                     t          j                    }|                    dd           t           j                            |          }t          |                                d         j                  ddik    sJ d S )Nr?   redcolorr   rL   )r#   r4   r   r$   r%   dictr   attrr   r   r   s      r   test_to_agraph_with_nodedataz'TestAGraph.test_to_agraph_with_nodedataK   sk    HJJ	

1E
"""L""1%%AGGIIaL%&&7E*:::::::r   c                     |            }|                     ddg           |                    ddd           t          j                            |          }t          |                                d         j                  ddik    sJ d S )Nr   r?   yellowrK   rL   )rF   rG   r#   r$   r%   rM   r   rN   )r   r7   r   r   s       r   test_to_agraph_with_edgedataz'TestAGraph.test_to_agraph_with_edgedataQ   s    KMM	!Q   	

1ax
(((L""1%%AGGIIaL%&&7H*=======r   c                 N   t          j        d          }t          |dz            }t           j                            ||d          \  }}||k    sJ t          |d          5 }|                                }d d d            n# 1 swxY w Y   t          |          dk    sJ d S )Nr9   z	graph.pngF)pathshowrbr   )r#   complete_graphstrr$   view_pygraphvizr*   readlen)r   r+   r   
input_pathout_pathr   r/   rE   s           r   test_view_pygraphviz_pathz$TestAGraph.test_view_pygraphviz_pathY   s    a  K/00
l221:E2RR!:%%%%*d## 	r7799D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	4yy1}}}}}}s   $BB	B	c                     t          j        d          }t           j                            |dd          \  }}|dd          dk    sJ d S )Nr9   r?   F)suffixrV   iz_1.png)r#   rX   r$   rZ   )r   r+   r   rU   r   s        r    test_view_pygraphviz_file_suffixz+TestAGraph.test_view_pygraphviz_file_suffixc   sQ    a  ,..q.GGaBCCyH$$$$$$r   c                     t          j                    }t          j        t           j        t           j        j        |           t          j        dd          }t           j                            |d           d S )N      FrV   )r#   r4   pytestraisesNetworkXExceptionr$   rZ   barbell_graph)r   r   s     r   test_view_pygraphvizzTestAGraph.test_view_pygraphvizh   s\    HJJb*BL,H!LLLQ""
$$QU$33333r   c                 &   t          j                    }|                    ddd           |                    ddd           t           j                            |dd	          \  }}|                                D ]}|j        d         d
v sJ d S )Nr?         )weightr9      ro   F	edgelabelrV   )78)r#   r4   rG   r$   rZ   r   rN   )r   r   rU   r   edges        r   test_view_pygraphviz_edgelabelz)TestAGraph.test_view_pygraphviz_edgelabeln   s    HJJ	

1a
"""	

1a
""",..qH5.QQaGGII 	5 	5D9X&*44444	5 	5r   c                     t          j        d          }d }t           j                            ||d          \  }}|                                D ]}|j        d         dk    sJ d S )Nr9   c                     dS )Nr@    rD   s    r   	foo_labelzETestAGraph.test_view_pygraphviz_callable_edgelabel.<locals>.foo_labely   s    5r   Frq   labelr@   )r#   rX   r$   rZ   r   rN   )r   r   rz   rU   r   ru   s         r   'test_view_pygraphviz_callable_edgelabelz2TestAGraph.test_view_pygraphviz_callable_edgelabelv   s    a  	 	 	 ,..qIE.RRaGGII 	/ 	/D9W%.....	/ 	/r   c                 |   t          j                    }|                    dddd           |                    dddd           t           j                            |dd          \  }}|                                }t          |          d	k    sJ |D ]%}|j        d
                                         dv sJ &d S )Nr   r?   	left_fork)rA   r3   
right_forkr3   Frq   rm   r{   )r~   r   )	r#   
MultiGraphrG   r$   rZ   r   r\   rN   strip)r   r   rU   r   r   ru   s         r   *test_view_pygraphviz_multigraph_edgelabelsz5TestAGraph.test_view_pygraphviz_multigraph_edgelabels   s    MOO	

1aQ[
111	

1aQ\
222,..qF.OOa		5zzQ 	M 	MD9W%++--1LLLLLL	M 	Mr   c                     t          j                    }|                     |          }d|j        d         d<   d|j        d         d<   d|j        d         d<   t           j                            |          }d S )Nkeywordr   nr
   uv)r#   r4   r   r   r   r$   r%   rO   s      r   !test_graph_with_reserved_keywordsz,TestAGraph.test_graph_with_reserved_keywords   sm     HJJQ%S#,
C #,
C L""1%%r   c                     t          j        d          }t           j                            |d          \  }}|j        i k    sJ d S )Nrm   Frf   )r#   rX   r$   rZ   r   r   r   rU   r   s       r   ,test_view_pygraphviz_no_added_attrs_to_inputz7TestAGraph.test_view_pygraphviz_no_added_attrs_to_input   sC    a  ,..qu.==aw"}}}}}}r   zknown bug in clean_attrs)reasonc                     t          j        d          }ddi|j        d<   ddi|j        d<   t           j                            |d	          \  }}|j        ddiddid
k    sJ d S )Nrm   width0.80nodefontsize14ru   Frf   )r   ru   )r#   rX   r   r$   rZ   r   s       r   2test_view_pygraphviz_leaves_input_graph_unmodifiedz=TestAGraph.test_view_pygraphviz_leaves_input_graph_unmodified   s{    a  "F+%t,,..qu.==awGV#4z4>PQQQQQQQQr   c                 &   t          j        d          }ddi|j        d<   ddi|j        d<   t           j                            |d	          \  }}t          |j                  d         dk    sJ t          |j                  d         dk    sJ d S )
Nrm   r   r   r   r   r   ru   Frf   )r#   rX   r   r$   rZ   rM   	node_attr	edge_attrr   s       r   test_graph_with_AGraph_attrsz'TestAGraph.test_graph_with_AGraph_attrs   s    a  "F+%t,,..qu.==aAK  )V3333AK  ,444444r   c                    t          j                    }t           j                            |          }t           j                            |          }t           j                            |          }t           j                            |          }t          ||          sJ i |j        d<   i |j        d<   i |j        d<   t          ||          sJ d S )Nr   r   ru   )r#   r4   r$   r%   r&   r   r   )r   r   r   r,   AAHHs         r   test_round_trip_empty_graphz&TestAGraph.test_round_trip_empty_graph   s    HJJL""1%%L$$Q''\##A&&\%%b))Ar"""""Ar"""""""r   z-integer->string node conversion in round tripc                     t          j        d          }t           j                            |          }t           j                            |          }t          ||          sJ d S )Nr9   )r#   rX   r$   r%   r&   r   r5   s       r   test_round_trip_integer_nodesz(TestAGraph.test_round_trip_integer_nodes   sX    a  L""1%%L$$Q''Aq!!!!!!!r   c                     |                      t          j                              }t          j                            |          }t          j                            |          }||k    sJ d S N)r   r#   r4   r$   graphviz_layoutpygraphviz_layout)r   r   pos_graphvizpos_pygraphvizs       r   test_graphviz_aliaszTestAGraph.test_graphviz_alias   s\    RXZZ((|33A6677::~------r   root   c                    t          j        d          }t           j                            |          }t           j                            |d|          }|                    d| d           t          d t          |                    d          j	                  d         
                    d	          D                       }|d
         |k    sJ d S )Nr   circo)progr   z-Groot=)argsr   c              3   4   K   | ]}t          |          V  d S r   )float).0r   s     r   	<genexpr>z9TestAGraph.test_pygraphviz_layout_root.<locals>.<genexpr>   s(      VVAuQxxVVVVVVr   rC   pos,r?   )r#   rX   r$   r%   r   layouttuplerM   get_noderN   split)r   r   r   r   pygv_layouta1_poss         r   test_pygraphviz_layout_rootz&TestAGraph.test_pygraphviz_layout_root   s     a  L""1%%l44QW44PP	&&&W555VVajjoo.B)C)CE)J)P)PQT)U)UVVVVV1~''''''r   c                 N   t          j                    }|                     |          }d|j        d<   t           j                            |d          }t          |                                          }t          |          dk    sJ t          |d                   dk    sJ d S )Nrm   dimenneator   r   r   	r#   r4   r   r   r$   r   listvaluesr\   r   r   r   s      r   test_2d_layoutzTestAGraph.test_2d_layout       HJJQl,,QW,==3::<<  3xx1}}}}3q6{{ar   c                 N   t          j                    }|                     |          }d|j        d<   t           j                            |d          }t          |                                          }t          |          dk    sJ t          |d                   dk    sJ d S )Nr9   r   r   r   r   r   r   r   s      r   test_3d_layoutzTestAGraph.test_3d_layout   r   r   c                 r   t          j                    }|                    dd           |                    dd           t           j                            |          }t          j        d          5 }|                                 d d d            n# 1 swxY w Y   t          |          dk    sJ d S )Nr   )r   r   )r   r?   )r?   r?   T)record)	r#   r4   r   r$   r%   warningscatch_warningsr   r\   )r   r   r   r   s       r   test_no_warnings_raisedz"TestAGraph.test_no_warnings_raised   s     HJJ	

1&
!!!	

1&
!!!L""1%%$D111 	VHHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	6{{as   6BBBN)&__name__
__module____qualname__r   r    rg   markparametrizer#   r4   DiGraphr   MultiDiGraphr0   r6   r=   rH   rP   rS   r_   rb   rk   rv   r|   r   r   r   xfailr   r   r   r   r   ranger   r   r   r   ry   r   r   r   r      s         6 6 6
 [hbhjj*"*,,9J9JK " " "&      ["*bmR_M * * *
@ 
@ 
@; ; ; []RXr},EFF> > GF>  % % %
4 4 45 5 5/ / /M M M	& 	& 	&  
 [899R R :9R5 5 5# # # [MNN" " ON". . . [VUU1XX..
( 
( /.
(          
  
  
  
  
 r   r   )__doc__r   rg   networkxr#   networkx.utilsr   r   r   importorskipr   r   ry   r   r   <module>r      s    * *       A A A A A A A A A A V ..
c  c  c  c  c  c  c  c  c  c r   