a
    hK                     @   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"   P/var/www/auris/lib/python3.9/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sJJ t|jddt|jddksnJ | 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sJJ t|	 t|	 ksfJ t|j	ddt|j	ddksJ | 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   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s4J t|jdd}t|jdd}t||D ]\}}||ks^J 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   s*   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   s    z)TestGEXF.test_directed_edge_in_undirectedc                 C   s*   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="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   rD   rF   r"   r"   r#    test_undirected_edge_in_directed   s    z)TestGEXF.test_undirected_edge_in_directedc                 C   s*   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="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   rD   rF   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.   rG   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sJ tdd | D tdd | D ksJ |jd= |j|jksJ d S )Nr   r   greenr   color)r   r   r      r   rP   )r   rO   Zyellowr
   r      Zedge_defaultr   Z	node_typec                 s   s   | ]}t |V  qd S r6   r7   r8   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sVJ |j
d d dkslJ d S )	Nr   rQ   M   r   r   rR   r   Z77)r   r   r   r   r   r2   r,   r(   rT   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 ]N}||j| d< ||j| d< ||j| d< ||j| d< |d |j| d< qd	td
 dt j d}dt 	|}||ksJ d S )N))r   r   r   r   r   rP      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sbJ d S )Nr   r   r   r   rZ   r_   r`   ra   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>rb   )r   r   rc   re   rf   rg   rh   ri   )r.   r/   rk   rl   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"   )r9   nr"   r"   r#   
<dictcomp>W  r<   z,TestGEXF.test_numpy_type.<locals>.<dictcomp>numberg?r   r   zedge-numberr_   r`   ra   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>rb   )rE   Zimportorskipr   Z
path_graphZset_node_attributesZarangefloat64re   rf   rg   rh   ri   )r.   npr/   rk   rl   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 sTJ d S )Nr   T)testattrr   rR   rv   
r   r   r   r   r   r2   r,   r(   rT   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 sJ d|v sJ d|v sJ |jd d |ksJ ||jd d sJ |jd
 d | ksJ |jd d dksJ |jd d dks6J |jd
 d dksNJ |jd d dksfJ |jd d d	ks~J |jd
 d dksJ d S )Nr   )isnaninfnanr   rA   )rv   strdatakeyr   rB   rP   z-infcrR   s   INFs   NaNs   -INFrv   r|   networkx_key)mathry   floatr   r   r   r   r   r2   r,   readr(   rT   r*   )r.   ry   rz   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s`J d S )N)r   r   rP   )	   r   r   r   )r}   r   rR   r   rw   )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sjJ t
d	d
 | D t
d	d
 | D ksJ d S )Nr   r   rM   rN   ZdynamicrS   r   rR   c                 s   s   | ]}t |V  qd S r6   r7   r8   r"   r"   r#   r;     r<   z-TestGEXF.test_dynamic_mode.<locals>.<genexpr>)r   r   r   r   r   r   r2   r,   r(   rT   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sJ t
dd | D t
dd | D ksJ d S )Nr   r   rM   rN   r   r   r   rP   Z
undirected)r   Zweighttyper]   r^   r   )r   r   r]   r^   rR   c                 s   s   | ]}t |V  qd S r6   r7   r8   r"   r"   r#   r;     r<   zCTestGEXF.test_multigraph_with_missing_attributes.<locals>.<genexpr>)r   Z
MultiGraphr   r   r   r   r2   r,   r(   rT   r)   r*   r+   r3   r"   r"   r#   'test_multigraph_with_missing_attributes  s    
z0TestGEXF.test_multigraph_with_missing_attributesc                 C   sR  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sJ t
dd | D t
dd | D ksJ t }t j||dd |d t j|t	d}|jd d d d dksNJ 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sNJ d S )Nr   r   rM   rN   size6   Zvizr   )xyzposition   )rgrB   rO   zhttp://random.urlshaper   Z	thickness1.1draftversionrR   c                 s   s   | ]}t |V  qd S r6   r7   r8   r"   r"   r#   r;     r<   z7TestGEXF.test_missing_viz_attributes.<locals>.<genexpr>z1.2draftrA   g      ?g      ?)r   r   rB   rA   zftp://random.urlc                 s   s   | ]}t |V  qd S r6   r7   r8   r"   r"   r#   r;     r<   r   r   r   r*   r   r   r2   r,   r(   rT   r)   r+   r3   r"   r"   r#   test_missing_viz_attributes  sF    

 
z$TestGEXF.test_missing_viz_attributesc                 C   sL  t  }|jdddd dg|jd d< t }t || |d t j|t	d}t
| t
| kspJ t
dd	 | D t
dd	 | D ksJ t  }|jdddd dg|jd d
< t }t j||dd |d t j|t	d}t
| t
| ksJ t
dd	 | D t
dd	 | D ksHJ d S )Nr   r   rM   rN   rY   ZspellsrR   c                 s   s   | ]}t |V  qd S r6   r7   r8   r"   r"   r#   r;     r<   z0TestGEXF.test_slice_and_spell.<locals>.<genexpr>Zslicesr   r   c                 s   s   | ]}t |V  qd S r6   r7   r8   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sfJ t	dd	 | D t	dd	 | D ksJ d S )
Nr   r   rM   r   r   )r   rO   parentsrR   c                 s   s   | ]}t |V  qd S r6   r7   r8   r"   r"   r#   r;   +  r<   z+TestGEXF.test_add_parent.<locals>.<genexpr>)r   r   r   r   r   r2   r,   r(   rT   r)   r*   r+   r3   r"   r"   r#   test_add_parent#  s    
zTestGEXF.test_add_parentN)__name__
__module____qualname__classmethodr$   r1   r5   r=   rC   rH   rI   rJ   rL   rU   rX   rm   rn   ru   rx   r   r   r   r   r   r   r   r"   r"   r"   r#   r   	   s.   
|	

#8
 
,r   )r   re   rE   Znetworkxr   r   r"   r"   r"   r#   <module>   s   