o
    ]ZhK                     @   s2   d dl Z d dlZd dlZd dlZG dd dZdS )    Nc                   @   s   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-S ).TestGEXFc                 C   s  d| _ t | _| jjddd | jjddd | jjdddd t| j d| _	d	| _
t | _d
di| jjd< | jjdddddd | jjdddddd | jjdddddd | jjdddddd | jjddddd | jjdddd | jjdddd | jjdddd | jjdddd t| j
d| _d| _t | _| jjddd | jjddd | jjdddd t| jd| _d S )Nar  <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2">
    <graph mode="static" defaultedgetype="directed">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" />
        </edges>
    </graph>
</gexf>
0Hello)label1ZWorld)idUTF-8a]  <?xml version="1.0" encoding="UTF-8"?><gexf xmlns="http://www.gexf.net/1.2draft" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.2draft http://www.gexf.net/1.2draft/gexf.xsd" version="1.2">
  <meta lastmodifieddate="2009-03-20">
    <creator>Gephi.org</creator>
    <description>A Web network</description>
  </meta>
  <graph defaultedgetype="directed">
    <attributes class="node">
      <attribute id="0" title="url" type="string"/>
      <attribute id="1" title="indegree" type="integer"/>
      <attribute id="2" title="frog" type="boolean">
        <default>true</default>
      </attribute>
    </attributes>
    <nodes>
      <node id="0" label="Gephi">
        <attvalues>
          <attvalue for="0" value="https://gephi.org"/>
          <attvalue for="1" value="1"/>
          <attvalue for="2" value="false"/>
        </attvalues>
      </node>
      <node id="1" label="Webatlas">
        <attvalues>
          <attvalue for="0" value="http://webatlas.fr"/>
          <attvalue for="1" value="2"/>
          <attvalue for="2" value="false"/>
        </attvalues>
      </node>
      <node id="2" label="RTGI">
        <attvalues>
          <attvalue for="0" value="http://rtgi.fr"/>
          <attvalue for="1" value="1"/>
          <attvalue for="2" value="true"/>
        </attvalues>
      </node>
      <node id="3" label="BarabasiLab">
        <attvalues>
          <attvalue for="0" value="http://barabasilab.com"/>
          <attvalue for="1" value="1"/>
          <attvalue for="2" value="true"/>
        </attvalues>
      </node>
    </nodes>
    <edges>
      <edge id="0" source="0" target="1" label="foo"/>
      <edge id="1" source="0" target="2"/>
      <edge id="2" source="1" target="0"/>
      <edge id="3" source="2" target="1"/>
      <edge id="4" source="0" target="3"/>
    </edges>
  </graph>
</gexf>
frogTnode_defaultZGephizhttps://gephi.org   F)r   urlZindegreer	   ZWebatlaszhttp://webatlas.fr   2ZRTGIzhttp://rtgi.fr3ZBarabasiLabzhttp://barabasilab.comfoor   r   4at  <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2">
    <graph mode="static" defaultedgetype="undirected">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" />
        </edges>
    </graph>
</gexf>
)Zsimple_directed_datanxZDiGraphsimple_directed_graphadd_nodeadd_edgeioBytesIOencodesimple_directed_fhZattribute_dataattribute_graphgraphattribute_fhZsimple_undirected_dataGraphsimple_undirected_graphsimple_undirected_fh)cls r"   Q/var/www/auris/lib/python3.10/site-packages/networkx/readwrite/tests/test_gexf.pysetup_class
   sN   

8





zTestGEXF.setup_classc                 C   s~   | j }t| j}t| t| ksJ t| t| ks%J t|jddt|jddks7J | jd d S NTdatar   )r   r   	read_gexfr   sortednodesedgesseekselfGHr"   r"   r#   !test_read_simple_directed_graphml   s   $z*TestGEXF.test_read_simple_directed_graphmlc                 C   s   | j }t }t|| |d t|}t| t| ks%J t|	 t|	 ks3J t|j	ddt|j	ddksEJ | j
d d S )Nr   Tr&   )r   r   r   r   
write_gexfr,   r(   r)   r*   r+   r   r.   r/   fhr0   r"   r"   r#   'test_write_read_simple_directed_graphml   s   

$z0TestGEXF.test_write_read_simple_directed_graphmlc                 C   sn   | j }t| j}t| t| ksJ tdd | D tdd | D ks/J | jd d S )Nc                 s       | ]}t |V  qd S Nr)   .0er"   r"   r#   	<genexpr>       z?TestGEXF.test_read_simple_undirected_graphml.<locals>.<genexpr>r   )r   r   r(   r    r)   r*   r+   r,   r-   r"   r"   r#   #test_read_simple_undirected_graphml   s   z,TestGEXF.test_read_simple_undirected_graphmlc                 C   s   | j }t| j}t|dt|jddksJ t|jdd}t|jdd}t||D ]
\}}||ks9J q/| jd d S r%   )	r   r   r(   r   r)   r*   r+   zipr,   )r.   r/   r0   geheabr"   r"   r#   test_read_attribute_graphml   s   "z$TestGEXF.test_read_attribute_graphmlc                 C   *   d}t |d}ttjtj| d S )Na  <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version='1.2'>
    <graph mode="static" defaultedgetype="undirected" name="">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" type="directed"/>
        </edges>
    </graph>
</gexf>
r   r   r   r   pytestZraisesr   ZNetworkXErrorr(   r.   sr4   r"   r"   r#    test_directed_edge_in_undirected      z)TestGEXF.test_directed_edge_in_undirectedc                 C   rE   )Na  <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version='1.2'>
    <graph mode="static" defaultedgetype="directed" name="">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" type="undirected"/>
        </edges>
    </graph>
</gexf>
r   rF   rH   r"   r"   r#    test_undirected_edge_in_directed   rK   z)TestGEXF.test_undirected_edge_in_directedc                 C   rE   )Na   <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version='1.2'>
    <graph mode="static" defaultedgetype="directed" name="">
        <nodes>
            <node id="0" label="Hello">
              <attvalues>
                <attvalue for='0' value='1'/>
              </attvalues>
            </node>
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1" type="undirected"/>
        </edges>
    </graph>
</gexf>
r   rF   rH   r"   r"   r#   test_key_raises   s   zTestGEXF.test_key_raisesc                 C   s>   d}t |d}tj|dd}t| ddgksJ d S )Nay  <?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version='1.2'>
    <graph mode="static" defaultedgetype="directed" name="">
        <nodes>
            <node id="0" label="Hello" />
            <node id="1" label="Word" />
        </nodes>
        <edges>
            <edge id="0" source="0" target="1"/>
        </edges>
    </graph>
</gexf>
r   T)Zrelabelr   Word)r   r   r   r   r(   r)   r*   )r.   rI   r4   r/   r"   r"   r#   test_relabel   s   zTestGEXF.test_relabelc                 C   s   t  }|jdddd t |g d |jdddd d	d
i|jd< ddi|jd< t }t || |	d t j
|td}t| t| ksNJ tdd | D tdd | D ksfJ |jd= |j|jksrJ d S )Nr   r   greenr   color)r   r   r      r   rS   )r   rR   yellowr
   r      Zedge_defaultr   Z	node_typec                 s   r6   r7   r8   r9   r"   r"   r#   r<     r=   z2TestGEXF.test_default_attribute.<locals>.<genexpr>mode)r   r   r   Zadd_pathr   r   r   r   r2   r,   r(   intr)   r*   r+   r3   r"   r"   r#   test_default_attribute   s    
zTestGEXF.test_default_attributec                 C   sp   t  }|jdddd t }t || |d t j|td}t	|dgks+J |j
d d dks6J d S )	Nr   rU   M   r   r   rV   r   Z77)r   r   r   r   r   r2   r,   r(   rX   listr*   r3   r"   r"   r#   test_serialize_ints_to_strings  s   
z'TestGEXF.test_serialize_ints_to_stringsc                 C   s   t  }|g d tdD ]'}||j| d< ||j| d< ||j| d< ||j| d< |d |j| d< qd	td
 dt j d}dt 	|}||ksRJ d S )N))r   r   r   r   r   rS      r   r   pidstartr   end<gexf xmlns="http://www.gexf.net/1.2draft" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.2draft http://www.gexf.net/1.2draft/gexf.xsd" version="1.2">
  <meta lastmodifieddate="%Y-%m-%d">
    <creator>NetworkX a  </creator>
  </meta>
  <graph defaultedgetype="undirected" mode="dynamic" name="" timeformat="long">
    <nodes>
      <node id="0" label="0" pid="0" start="0" end="1" />
      <node id="1" label="1" pid="1" start="1" end="2" />
      <node id="2" label="2" pid="2" start="2" end="3" />
      <node id="3" label="3" pid="3" start="3" end="4" />
    </nodes>
    <edges>
      <edge source="0" target="1" id="0" />
      <edge source="1" target="2" id="1" />
      <edge source="2" target="3" id="2" />
    </edges>
  </graph>
</gexf>
)
r   r   add_edges_fromranger*   timestrftime__version__joingenerate_gexf)r.   r/   iexpectedobtainedr"   r"   r#   test_write_with_node_attributes  s   z(TestGEXF.test_write_with_node_attributesc                 C   sf   t  }|ddddifddddifdg dtd dt j d	}d
t |}||ks1J d S )Nr   r   r   r   r^   rc   rd   re   a  </creator>
  </meta>
  <graph defaultedgetype="undirected" mode="static" name="">
    <nodes>
      <node id="0" label="0" />
      <node id="1" label="1" />
      <node id="2" label="2" />
      <node id="3" label="3" />
    </nodes>
    <edges>
      <edge source="0" target="1" id="0" />
      <edge source="1" target="2" id="2" />
      <edge source="2" target="3" id="1" />
    </edges>
  </graph>
</gexf>rf   )r   r   rg   ri   rj   rk   rl   rm   )r.   r/   ro   rp   r"   r"   r#   test_edge_id_construct8  s   $zTestGEXF.test_edge_id_constructc                 C   s   t d}td}t|dd |dD d |d|d d d	< d
td dtj	 d}d
t|}||ks?J d S )Nnumpyr_   c                 S   s   i | ]}||qS r"   r"   )r:   nr"   r"   r#   
<dictcomp>W  s    z,TestGEXF.test_numpy_type.<locals>.<dictcomp>numberg?r   r   zedge-numberrc   rd   re   a_  </creator>
  </meta>
  <graph defaultedgetype="undirected" mode="static" name="">
    <attributes mode="static" class="edge">
      <attribute id="1" title="edge-number" type="float" />
    </attributes>
    <attributes mode="static" class="node">
      <attribute id="0" title="number" type="int" />
    </attributes>
    <nodes>
      <node id="0" label="0">
        <attvalues>
          <attvalue for="0" value="0" />
        </attvalues>
      </node>
      <node id="1" label="1">
        <attvalues>
          <attvalue for="0" value="1" />
        </attvalues>
      </node>
      <node id="2" label="2">
        <attvalues>
          <attvalue for="0" value="2" />
        </attvalues>
      </node>
      <node id="3" label="3">
        <attvalues>
          <attvalue for="0" value="3" />
        </attvalues>
      </node>
    </nodes>
    <edges>
      <edge source="0" target="1" id="0">
        <attvalues>
          <attvalue for="1" value="1.1" />
        </attvalues>
      </edge>
      <edge source="1" target="2" id="1" />
      <edge source="2" target="3" id="2" />
    </edges>
  </graph>
</gexf>rf   )rG   Zimportorskipr   Z
path_graphZset_node_attributesZarangeZfloat64ri   rj   rk   rl   rm   )r.   npr/   ro   rp   r"   r"   r#   test_numpy_typeT  s   

/zTestGEXF.test_numpy_typec                 C   sX   t  }|jddd t }t || |d t j|td}|j	d d s*J d S )Nr   T)testattrr   rV   ry   
r   r   r   r   r   r2   r,   r(   rX   r*   r3   r"   r"   r#   	test_bool  s   
zTestGEXF.test_boolc                 C   s  ddl m} tdtd}}t }|jd|ddd |jd|dd	d |jd
| ddd t }t|| |	d |
 }|	d tj|td}d|v sTJ d|v sZJ d|v s`J |jd d |kskJ ||jd d svJ |jd
 d | ksJ |jd d dksJ |jd d dksJ |jd
 d dksJ |jd d dksJ |jd d d	ksJ |jd
 d dksJ d S )Nr   )isnaninfnanr   rB   )ry   strdatakeyr   rC   rS   z-infcrV   s   INFs   NaNs   -INFry   r   networkx_key)mathr|   floatr   r   r   r   r   r2   r,   readr(   rX   r*   )r.   r|   r}   r~   r/   r4   Zfiletextr0   r"   r"   r#   test_specials  s0   

zTestGEXF.test_specialsc                 C   sd   t  }ddg}|jd|d t }t || |d t j|td}|j	d d |ks0J d S )N)r   r   rS   )	   r   r   r   )r   r   rV   r   rz   )r.   r/   Z
list_valuer4   r0   r"   r"   r#   test_simple_list  s   
zTestGEXF.test_simple_listc                 C   s   t  }|jdddd d|jd< t }t || |d t j|t	d}t
| t
| ks5J t
d	d
 | D t
d	d
 | D ksMJ d S )Nr   r   rP   rQ   ZdynamicrW   r   rV   c                 s   r6   r7   r8   r9   r"   r"   r#   r<     r=   z-TestGEXF.test_dynamic_mode.<locals>.<genexpr>)r   r   r   r   r   r   r2   r,   r(   rX   r)   r*   r+   r3   r"   r"   r#   test_dynamic_mode  s   

zTestGEXF.test_dynamic_modec              	   C   s   t  }|jdddd |jdddd |jddddd	ddd
 |jddddddd |dd t }t || |d t j|t	d}t
| t
| ksUJ t
dd | D t
dd | D ksmJ d S )Nr   r   rP   rQ   r   r   r   rS   Z
undirected)r   weighttypera   rb   r   )r   r   ra   rb   rV   c                 s   r6   r7   r8   r9   r"   r"   r#   r<     r=   zCTestGEXF.test_multigraph_with_missing_attributes.<locals>.<genexpr>)r   Z
MultiGraphr   r   r   r   r2   r,   r(   rX   r)   r*   r+   r3   r"   r"   r#   'test_multigraph_with_missing_attributes  s   
z0TestGEXF.test_multigraph_with_missing_attributesc                 C   sP  t  }|jdddd ddi|jd d< dddd	|jd d d
< dddd|jd d d< d|jd d d< d|jd d d< t }t j||dd |d t j|t	d}t
| t
| ksgJ t
dd | D t
dd | D ksJ t }t j||dd |d t j|t	d}|jd d d d dksJ t  }|jdddd ddi|jd d< dddd	|jd d d
< ddddd|jd d d< d|jd d d< d|jd d d< t }t || |d t j|t	d}t
| t
| ksJ t
dd | D t
dd | D ks&J d S )Nr   r   rP   rQ   size6   Zvizr   )xyzposition   )rgrC   rR   zhttp://random.urlshaper   Z	thickness1.1draftversionrV   c                 s   r6   r7   r8   r9   r"   r"   r#   r<     r=   z7TestGEXF.test_missing_viz_attributes.<locals>.<genexpr>z1.2draftrB   g      ?g      ?)r   r   rC   rB   zftp://random.urlc                 s   r6   r7   r8   r9   r"   r"   r#   r<     r=   r   r   r   r*   r   r   r2   r,   r(   rX   r)   r+   r3   r"   r"   r#   test_missing_viz_attributes  sF   


z$TestGEXF.test_missing_viz_attributesc                 C   sH  t  }|jdddd dg|jd d< t }t || |d t j|t	d}t
| t
| ks8J t
dd	 | D t
dd	 | D ksPJ t  }|jdddd dg|jd d
< t }t j||dd |d t j|t	d}t
| t
| ksJ t
dd	 | D t
dd	 | D ksJ d S )Nr   r   rP   rQ   r]   ZspellsrV   c                 s   r6   r7   r8   r9   r"   r"   r#   r<     r=   z0TestGEXF.test_slice_and_spell.<locals>.<genexpr>Zslicesr   r   c                 s   r6   r7   r8   r9   r"   r"   r#   r<     r=   r   r3   r"   r"   r#   test_slice_and_spell	  s,   

zTestGEXF.test_slice_and_spellc                 C   s   t  }|jdddddgd t }t || |d t j|td}t	|
 t	|
 ks3J t	dd	 | D t	dd	 | D ksKJ d S )
Nr   r   rP   r   r   )r   rR   parentsrV   c                 s   r6   r7   r8   r9   r"   r"   r#   r<   +  r=   z+TestGEXF.test_add_parent.<locals>.<genexpr>)r   r   r   r   r   r2   r,   r(   rX   r)   r*   r+   r3   r"   r"   r#   test_add_parent#  s   
zTestGEXF.test_add_parentN)__name__
__module____qualname__classmethodr$   r1   r5   r>   rD   rJ   rL   rM   rO   rY   r\   rq   rr   rx   r{   r   r   r   r   r   r   r   r"   r"   r"   r#   r   	   s0    
|	

#8
 
,r   )r   ri   rG   Znetworkxr   r   r"   r"   r"   r#   <module>   s
    