ó
 ,µ[c           @   sÚ   d  d l  m Z d  d l Z d  d l Z d  d l Td  d l m Z d  d l Z d  d l	 m
 Z
 m Z d  d l Z d  d l Z y e Wn e k
 r e Z n Xy e Wn e k
 r¿ e Z n Xd e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   literal_evalN(   t   *(   t   SkipTest(   t   literal_stringizert   literal_destringizert	   TestGraphc           B   s   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   d |  _  d  S(   Ns2  Creator "me"
Version "xx"
graph [
 comment "This is a sample graph"
 directed 1
 IsPlanar 1
 pos  [ x 0 y 1 ]
 node [
   id 1
   label "Node 1"
   pos [ x 1 y 1 ]
 ]
 node [
    id 2
    pos [ x 1 y 2 ]
    label "Node 2"
    ]
  node [
    id 3
    label "Node 3"
    pos [ x 1 y 3 ]
  ]
  edge [
    source 1
    target 2
    label "Edge from node 1 to node 2"
    color [line "blue" thickness 3]

  ]
  edge [
    source 2
    target 3
    label "Edge from node 2 to node 3"
  ]
  edge [
    source 3
    target 1
    label "Edge from node 3 to node 1"
  ]
]
(   t   simple_data(   t   self(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   setUp   s    )c         C   s   d } t  j | ƒ d  S(   Nss  
Creator "Cytoscape"
Version 1.0
graph   [
    node    [
        root_index  -3
        id  -3
        graphics    [
            x   -96.0
            y   -67.0
            w   40.0
            h   40.0
            fill    "#ff9999"
            type    "ellipse"
            outline "#666666"
            outline_width   1.5
        ]
        label   "node2"
    ]
    node    [
        root_index  -2
        id  -2
        graphics    [
            x   63.0
            y   37.0
            w   40.0
            h   40.0
            fill    "#ff9999"
            type    "ellipse"
            outline "#666666"
            outline_width   1.5
        ]
        label   "node1"
    ]
    node    [
        root_index  -1
        id  -1
        graphics    [
            x   -31.0
            y   -17.0
            w   40.0
            h   40.0
            fill    "#ff9999"
            type    "ellipse"
            outline "#666666"
            outline_width   1.5
        ]
        label   "node0"
    ]
    edge    [
        root_index  -2
        target  -2
        source  -1
        graphics    [
            width   1.5
            fill    "#0000ff"
            type    "line"
            Line    [
            ]
            source_arrow    0
            target_arrow    3
        ]
        label   "DirectedEdge"
    ]
    edge    [
        root_index  -1
        target  -1
        source  -3
        graphics    [
            width   1.5
            fill    "#0000ff"
            type    "line"
            Line    [
            ]
            source_arrow    0
            target_arrow    3
        ]
        label   "DirectedEdge"
    ]
]
(   t   nxt	   parse_gml(   R   t   cytoscape_example(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_parse_gml_cytoscape_bugE   s    Rc      	   C   só   t  j |  j d d ƒ} t t | j ƒ  ƒ d d d g ƒ t g  t | j ƒ  ƒ D] } | ^ qP d d d g ƒ t g  t | j d t ƒ ƒ D] } | ^ q‹ d d i i d d 6d d	 6d
 6d d 6f d d i d d 6f d d i d d 6f g ƒ d  S(   Nt   labels   Node 1s   Node 2s   Node 3t   datat   bluet   linei   t	   thicknesst   colors   Edge from node 1 to node 2s   Edge from node 2 to node 3s   Edge from node 3 to node 1(   s   Node 1s   Node 2(   s   Node 2s   Node 3(   s   Node 3s   Node 1(   R	   R
   R   t   assert_equalst   sortedt   nodest   edgest   True(   R   t   Gt   e(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_parse_gmlš   s    %
+
c         C   sè   t  j ƒ  \ } } t | d ƒ } | j |  j ƒ | j ƒ  t j | d d ƒ} t j |  j d d ƒ} t	 t
 | j d t ƒ ƒ t
 | j d t ƒ ƒ ƒ t	 t
 | j d t ƒ ƒ t
 | j d t ƒ ƒ ƒ t j | ƒ t j | ƒ d  S(   Nt   wR   R   (   t   tempfilet   mkstempt   opent   writeR   t   closeR	   t   read_gmlR
   R   R   R   R   R   t   ost   unlink(   R   t   fdt   fnamet   fht   GinR   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_read_gml¬   s    
11c         C   sN   d } t  j ƒ  } | j d ƒ d j t  j | d t ƒƒ } t | | ƒ d  S(   Ns0   graph [
  node [
    id 0
    label "1203"
  ]
]i³  s   
t
   stringizer(   R	   t   Grapht   add_nodet   joint   generate_gmlR   t   assert_equal(   R   t   answerR   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_labels_are_strings¸   s
    c         C   sK   d } t  j | j d ƒ ƒ } | j d ƒ t t j t j | d d ƒd  S(   Nsì   
graph
[
        label   ""
        directed        1
        node
        [
                id      0
                label   "same"
        ]
        node
        [
                id      1
                label   "same"
        ]
]
s   UTF-8i    R   (   t   iot   BytesIOt   encodet   seekt   assert_raisesR	   t   NetworkXErrorR!   (   R   R   R&   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_relabel_duplicateÅ   s
    c         C   sQ   t  j ƒ  } | j d d ƒ d j t  j | d t ƒƒ } d } t | | ƒ d  S(   Ni    i   s   
R)   s€   graph [
  node [
    id 0
    label "(0,1)"
  ]
  node [
    id 1
    label "(1,0)"
  ]
  edge [
    source 0
    target 1
  ]
](   i    i   (   i   i    (   R	   t   OrderedGrapht   add_edgeR,   R-   R   R.   (   R   R   R   R/   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_tuplelabelsÜ   s
    c         C   s”   t  j d ƒ } d | _ d t d ƒ } | | j d d <t j ƒ  } t  j | | ƒ | j d ƒ | j	 ƒ  j
 ƒ  j d ƒ } d } t | | ƒ d  S(	   Ni   s   path_graph(1)s*   This is "quoted" and this is a copyright: i©   i    t   demot   asciisˆ   graph [
  name "path_graph(1)"
  node [
    id 0
    label "0"
    demo "This is &#34;quoted&#34; and this is a copyright: &#169;"
  ]
](   R	   t
   path_grapht   namet   unichrR   R   t   NamedTemporaryFilet	   write_gmlR4   t   readt   stript   decodeR.   (   R   R   t   attrt   fobjR   R/   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_quotesò   s    	c         C   s„   d t  d ƒ } t j ƒ  } | j | ƒ t j ƒ  } t j | | ƒ | j d ƒ | j ƒ  j	 ƒ  j
 d ƒ } d } t | | ƒ d  S(   Nt   nodei©   i    R<   s6   graph [
  node [
    id 0
    label "node&#169;"
  ]
](   R?   R	   R*   R+   R   R@   RA   R4   RB   RC   RD   R.   (   R   RH   R   RF   R   R/   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_unicode_node  s    c         C   sz   d } t  j ƒ  } | j | ƒ t j ƒ  } t  j | | ƒ | j d ƒ | j ƒ  j ƒ  j	 d ƒ } d } t
 | | ƒ d  S(   Ng      ð?i    R<   s/   graph [
  node [
    id 0
    label "1.0"
  ]
](   R	   R*   R+   R   R@   RA   R4   RB   RC   RD   R.   (   R   RH   R   RF   R   R/   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_float_label  s    c         C   sV   t  j d ƒ } t d | j d ƒ t  j d ƒ } t d | j ƒ t d | j ƒ d  S(   Ns*   graph [ name "x" node [ id 0 label "x" ] ]t   xR>   s!   graph [ node [ id 0 label "x" ] ]t    (   R	   R
   R.   t   graphR>   t   assert_not_in(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt	   test_name*  s
    c         C   sm  xfd  t t g D]U} xLd  t t g D];} d } | d  k	 r[ | d t t | ƒ ƒ 7} n  | d  k	 r„ | d t t | ƒ ƒ 7} n  | d 7} | d 7} | d 7} t j | ƒ } t t | ƒ | j	 ƒ  ƒ t t | ƒ | j
 ƒ  ƒ d } | t k r| d 7} n  | t k r| d	 7} n  | d
 7} | r8| d 7} n  | d 7} t | d j t j | ƒ ƒ ƒ q& Wq Wd  S(   Ns   graph [s
    directed s    multigraph s    node [ id 0 label "0" ]s    edge [ source 0 target 0 ]s    ]s   graph [
s     directed 1
s     multigraph 1
sG     node [
    id 0
    label "0"
  ]
  edge [
    source 0
    target 0
s
       key 0
s     ]
]s   
(   t   Nonet   FalseR   t   strt   intR	   R
   R.   t   boolt   is_directedt   is_multigraphR,   R-   (   R   t   directedt
   multigrapht   gmlR   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_graph_types1  s0    



c      
   C   sD  t  t d d d d i d d 6d t d
 ƒ 6d g g } y | j t d ƒ ƒ Wn$ t k
 rr | j t d ƒ ƒ n Xy | j t d ƒ ƒ Wn' t k
 r³ | j d d d  g ƒ n Xt j ƒ  } | | _ | | j	 d <| j
 d d d d t d | ƒ ƒ| j d d d d d | ƒd j t j | d t ƒƒ } t j | d t ƒ} t | | j ƒ t i | d 6| t d ƒ 6| j	 ƒ t t | j d t  ƒ ƒ d t d d d t d | ƒ ƒ f g ƒ t t | j d t  ƒ ƒ d d t d d d | ƒ f g ƒ t j ƒ  } d | j	 d <t j t j | ƒ d t ƒ} t | j	 d d ƒ d  S(!   Ni
   i   gœÉF"ã¦ØÆt   's   "&&amp;&&#34;"s   s   ýi   i   iDD  t   3iDD iD  s   {2.3j, 1 - 2.3j, ()}y        ffffff@R   i    RS   iÿÿÿÿt   floatg      Às   
R)   t   destringizerR>   s   frozenset([1, 2, 3])l      Fµx:^V (   s   ý(   i   i   (   i   R\   y      ð?ffffffÀ(    (   R   RQ   R?   t   appendt
   ValueErrorR    R	   R*   R>   RM   R+   t   dictR9   R,   R-   R   R
   R   R.   t   unicodet   listR   R   (   R   R   R   RY   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_data_typesQ  s4    #	"$(:c         C   s\   d } t  j | ƒ } t d t d ƒ d | j ƒ d j t  j | ƒ ƒ } t d | ƒ d  S(   NsT   graph [
  name "&amp;&#34;&#xf;&#x4444;&#1234567890;&#x1234567890abcdef;&unknown;"
]s   &"iDD  s*   &#1234567890;&#x1234567890abcdef;&unknown;s   
s`   graph [
  name "&#38;&#34;&#15;&#17476;&#38;#1234567890;&#38;#x1234567890abcdef;&#38;unknown;"
](   R	   R
   R.   R?   R>   R,   R-   (   R   RY   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_escape_unescapem  s    
c         C   s­  t  t t d ƒ t  t t d ƒ t  t t t ƒ t  t t t d d d g ƒ ƒ t  t t t ƒ t j ƒ  G } | j t j	 d j
 d ƒ ƒ | j d ƒ t  t j t j | ƒ Wd  QXd	 „  } | d
 t d ƒ g ƒ | d ƒ | d ƒ | d ƒ | d ƒ | d ƒ | d ƒ | d ƒ | d ƒ | d ƒ | d ƒ | d ƒ | d ƒ t j d d d ƒ| d ƒ | d ƒ | d ƒ | d ƒ t j d ƒ | d  ƒ | d! ƒ | d" ƒ t j d# ƒ t j d$ ƒ t j d% ƒ | d& ƒ t j d' ƒ d( „  } t j ƒ  } d | j d <| | ƒ t j ƒ  } d | j d) <| | ƒ t j ƒ  } t d d d g ƒ | j d* <| | d+ t ƒt j ƒ  } g  | j d* <| | ƒ | | d+ t ƒd  S(,   Nt   (s   frozenset([1, 2, 3])i   i   i   s   graph[]R<   i    c         S   s   t  t j t j |  ƒ d  S(   N(   R5   R	   R6   R
   (   RY   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   assert_parse_error…  s    s	   graph [

t   ]RL   s
   Creator ""t   0s   graph ]s   graph [ 1 ]s   graph [ 1.E+2 ]s   graph [ "A" ]s   graph [ ] graph ]s   graph [ ] graph [ ]s   graph [ data [1, 2, 3] ]s   graph [ node [ ] ]s   graph [ node [ id 0 ] ]s   graph [ node [ id "a" ] ]R   t   ids5   graph [ node [ id 0 label 0 ] node [ id 0 label 1 ] ]s5   graph [ node [ id 0 label 0 ] node [ id 1 label 0 ] ]s(   graph [ node [ id 0 label 0 ] edge [ ] ]s1   graph [ node [ id 0 label 0 ] edge [ source 0 ] ]s9   graph [edge [ source 0 target 0 ] node [ id 0 label 0 ] ]s:   graph [ node [ id 0 label 0 ] edge [ source 1 target 0 ] ]s:   graph [ node [ id 0 label 0 ] edge [ source 0 target 1 ] ]sk   graph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 ] edge [ source 1 target 0 ] ]sv   graph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 ] edge [ source 1 target 0 ] directed 1 ]sw   graph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 ] edge [ source 0 target 1 ]multigraph 1 ]s}   graph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 key 0 ] edge [ source 0 target 1 ]multigraph 1 ]sƒ   graph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 key 0 ] edge [ source 0 target 1 key 0 ]multigraph 1 ]sŽ   graph [ node [ id 0 label 0 ] node [ id 1 label 1 ] edge [ source 0 target 1 key 0 ] edge [ source 1 target 0 key 0 ]directed 1 multigraph 1 ]c             s    t  t j ‡  ‡ f d †  ƒ d  S(   Nc              s   t  t j ˆ  ˆ Ž  ƒ S(   N(   Rc   R	   R-   (    (   t   argst   kwargs(    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   <lambda>¼  s    (   R5   R	   R6   (   Rk   Rl   (    (   Rk   Rl   s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   assert_generate_errorº  s    	R\   R   R)   (   R5   R`   R   R   t	   frozensetR   t   TemporaryFileR   t   codecst   BOM_UTF8R3   R4   R	   R6   R!   Rb   R
   R*   RM   t   len(   R   t   fRg   Rn   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   test_exceptionsz  s|    	













	


(   t   __name__t
   __module__R   R   R   R(   R0   R7   R:   RG   RI   RJ   RO   RZ   Rd   Re   Ru   (    (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyR      s   	+	U										 		(   t   astR    Rq   R1   t
   nose.toolst   noseR   t   networkxR	   t   networkx.readwrite.gmlR   R   R"   R   Rb   t	   NameErrorRR   R?   t   chrt   objectR   (    (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_gml.pyt   <module>   s"   


