U
    ¹mœdÍK  ã                   @   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"   ú[/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/networkx/readwrite/tests/test_gexf.pyÚsetup_class
   sf    
8
    ÿ    ÿ    ÿû

ÿzTestGEXF.setup_classc                 C   s~   | j }t | j¡}t| ¡ ƒt| ¡ ƒks.t‚t| ¡ ƒt| ¡ ƒksJt‚t|jdd�ƒt|jdd�ƒksnt‚| j d¡ d S ©NT©Údatar   )	r   r   Ú	read_gexfr   ÚsortedÚnodesÚAssertionErrorÚ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sJt	‚t| 
¡ ƒt| 
¡ ƒksft	‚t|j
dd�ƒt|j
dd�ƒksŠt	‚| j d¡ d S )Nr   Tr&   )r   r   r   r   Ú
write_gexfr-   r(   r)   r*   r+   r,   r   ©r/   r0   Úfhr1   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.t‚tdd„ | ¡ D ƒƒtdd„ | ¡ D ƒƒks^t‚| j d¡ d S )Nc                 s   s   | ]}t |ƒV  qd S ©N©r)   ©Ú.0Úer"   r"   r#   Ú	<genexpr>ž   s     z?TestGEXF.test_read_simple_undirected_graphml.<locals>.<genexpr>r   )	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s4t‚t|jdd�ƒ}t|jdd�ƒ}t||ƒD ]\}}||ks^t‚q^| j 	d¡ d S r%   )
r   r   r(   r   r)   r*   r+   r,   Úzipr-   )r/   r0   r1   Ú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/   Úsr5   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:t‚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+   )r/   rG   r5   r0   r"   r"   r#   Útest_relabelä   s    zTestGEXF.test_relabelc                 C   sì   t  ¡ }|jdddd� t  |ddddg¡ |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s t‚tdd„ | ¡ D ƒƒtdd„ | ¡ D ƒƒksÐt‚|jd= |j|jksèt‚d S )Nr   r   Úgreen©r   Úcolorr   r   é   )r   rO   Úyellowr
   r   é   Zedge_default©Z	node_typec                 s   s   | ]}t |ƒV  qd S r7   r8   r9   r"   r"   r#   r<     s     z2TestGEXF.test_default_attribute.<locals>.<genexpr>Úmode)r   r   r   Zadd_pathr   r   r   r   r3   r-   r(   Úintr)   r*   r+   r,   r4   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sVt
‚|jd d dkslt
‚d S )	Nr   rR   éM   r   r   rS   r   Z77)r   r   r   r   r   r3   r-   r(   rU   Úlistr+   r*   r4   r"   r"   r#   Útest_serialize_ints_to_strings  s    
z'TestGEXF.test_serialize_ints_to_stringsc                 C   sª   t  ¡ }| dddg¡ 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s¦t
‚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_gexfr+   )r/   r0   Ú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sbt‚d S )Nr   r   r   r   r[   r`   ra   rb   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>rc   )	r   r   rd   rf   rg   rh   ri   rj   r+   )r/   r0   rl   rm   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~t‚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-numberr`   ra   rb   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>rc   )rE   Zimportorskipr   Z
path_graphZset_node_attributesZarangeZfloat64rf   rg   rh   ri   rj   r+   )r/   Únpr0   rl   rm   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 sTt
‚d S )Nr   T)Útestattrr   rS   rv   ©r   r   r   r   r   r3   r-   r(   rU   r*   r+   r4   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|ks¨t‚d|ks´t‚d|ksÀt‚|jd d |ksÖt‚||jd d ƒsìt‚|jd
 d | k�st‚|jd d dk�st‚|jd d dk�s6t‚|jd
 d dk�sNt‚|jd d dk�sft‚|jd d d	k�s~t‚|jd
 d dk�s–t‚d S )Nr   )ÚisnanÚinfÚnanr   rA   )rv   ÚstrdataÚkeyr   rB   rP   z-infÚcrS   s   INFs   NaNs   -INFrv   r|   Únetworkx_key)Úmathry   Úfloatr   r   r   r   r   r3   r-   Úreadr(   rU   r+   r*   )r/   ry   rz   r{   r0   r5   Zfiletextr1   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`t
‚d S )N)r   r   rP   )é	   r   r   r   )r}   r   rS   r   rw   )r/   r0   Z
list_valuer5   r1   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sjt‚t
d	d
„ | ¡ D ƒƒt
d	d
„ | ¡ D ƒƒksšt‚d S )Nr   r   rM   rN   ZdynamicrT   r   rS   c                 s   s   | ]}t |ƒV  qd S r7   r8   r9   r"   r"   r#   r<   É  s     z-TestGEXF.test_dynamic_mode.<locals>.<genexpr>)r   r   r   r   r   r   r3   r-   r(   rU   r)   r*   r+   r,   r4   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sªt‚t
dd„ | ¡ D ƒƒt
dd„ | ¡ D ƒƒksÚt‚d S )Nr   r   rM   rN   r   r   r   rP   Z
undirected)r   ÚweightÚtyper^   r_   r   )r   r   r^   r_   rS   c                 s   s   | ]}t |ƒV  qd S r7   r8   r9   r"   r"   r#   r<   Ù  s     zCTestGEXF.test_multigraph_with_missing_attributes.<locals>.<genexpr>)r   Z
MultiGraphr   r   r   r   r3   r-   r(   rU   r)   r*   r+   r,   r4   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sÎt‚t
dd„ | ¡ D ƒƒt
dd„ | ¡ D ƒƒksþt‚t ¡ }t j||dd� | d¡ t j|t	d�}|jd d d d dk�sNt‚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t‚t
dd„ | ¡ D ƒƒt
dd„ | ¡ D ƒƒk�sNt‚d S )Nr   r   rM   rN   Úsizeé6   Zvizr   )ÚxÚyÚzÚpositioné   )ÚrÚgrB   rO   zhttp://random.urlÚshaper   Z	thicknessú1.1draft©ÚversionrS   c                 s   s   | ]}t |ƒV  qd S r7   r8   r9   r"   r"   r#   r<   ê  s     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 r7   r8   r9   r"   r"   r#   r<     s     ©r   r   r   r*   r   r   r3   r-   r(   rU   r)   r+   r,   r4   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spt‚t
dd	„ | ¡ D ƒƒt
dd	„ | ¡ D ƒƒks t‚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t‚t
dd	„ | ¡ D ƒƒt
dd	„ | ¡ D ƒƒk�sHt‚d S )Nr   r   rM   rN   rZ   ZspellsrS   c                 s   s   | ]}t |ƒV  qd S r7   r8   r9   r"   r"   r#   r<     s     z0TestGEXF.test_slice_and_spell.<locals>.<genexpr>Zslicesr”   r•   c                 s   s   | ]}t |ƒV  qd S r7   r8   r9   r"   r"   r#   r<     s     r—   r4   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sft‚t	dd	„ | ¡ D ƒƒt	dd	„ | ¡ D ƒƒks–t‚d S )
Nr   r   rM   r   r   )r   rO   ÚparentsrS   c                 s   s   | ]}t |ƒV  qd S r7   r8   r9   r"   r"   r#   r<   +  s     z+TestGEXF.test_add_parent.<locals>.<genexpr>)r   r   r   r   r   r3   r-   r(   rU   r)   r*   r+   r,   r4   r"   r"   r#   Útest_add_parent#  s    
ÿzTestGEXF.test_add_parentN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr$   r2   r6   r=   rC   rH   rI   rJ   rL   rV   rY   rn   ro   ru   rx   rƒ   r…   r†   r‰   r˜   r™   r›   r"   r"   r"   r#   r   	   s.   
|	

#8
 
,r   )r   rf   rE   Znetworkxr   r   r"   r"   r"   r#   Ú<module>   s   