ó
 ,µ[c           @   sï   d  d l  m Z d  d l  m Z d  d l  m Z d  d l  m Z d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l	 Z
 d  d l Td „  Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   assert_equal(   t	   assert_is(   t   assert_not_equal(   t   assert_raises(   t   raisesN(   t   *c          C   s  t  j d ƒ }  t |  j i i  d 6i  d 6i  d 6ƒ t  j ƒ  }  |  j d d g ƒ t |  j i i i  d 6d 6i  d 6ƒ t  j ƒ  }  |  j d d d g ƒ t |  j i i i  d 6d 6i i  d 6d 6i i  d 6d 6ƒ t  j ƒ  }  |  j d d d g ƒ t |  j i i i  d 6i  d 6d 6i  d 6i  d 6ƒ t  j d d d	 g ƒ }  t |  j	 ƒ  d ƒ t t
 |  j ƒ  ƒ d g ƒ t t
 |  j ƒ  ƒ d
 g ƒ d  S(   Ni   i    i   i   i   i   (   i    i    (   i    i   (   i   i   (   i    i    (   t   nxt   complete_graphR    t   nodet   DiGrapht   add_patht   adjt	   add_cyclet   add_start   number_of_selfloopst   listt   nodes_with_selfloopst   selfloop_edges(   t   G(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_deprecated   s    %%:3t   BaseGraphTesterc           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 e e j ƒ d „  ƒ Z d „  Z d „  Z RS(   s;    Tests for data-structure independent graph class features.c         C   sn   |  j  } d | k s t ‚ d | k s- t ‚ d | k s? t ‚ g  | k sQ t ‚ i d d 6| k sj t ‚ d  S(   Ni   i   t   b(   t   K3t   AssertionError(   t   selfR   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_contains(   s    	c         C   sF   |  j  } t t | ƒ d ƒ t | j ƒ  d ƒ t | j ƒ  d ƒ d  S(   Ni   (   R   R    t   lent   ordert   number_of_nodes(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt
   test_order0   s    	c         C   sc   |  j  } t t | j ƒ  ƒ |  j ƒ t t | j d t ƒ ƒ d i  f d i  f d i  f g ƒ d  S(   Nt   datai    i   i   (   R   R    t   sortedt   nodest   k3nodest   True(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt
   test_nodes6   s    	c         C   sk   |  j  } | j d ƒ s t ‚ | j d ƒ s4 t ‚ | j g  ƒ sJ t ‚ | j i d d 6ƒ sg t ‚ d  S(   Ni   i   (   R   t   has_nodeR   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_has_node;   s
    	c         C   s?   |  j  } t | j d d ƒ t ƒ t | j d d ƒ t ƒ d  S(   Ni    i   iÿÿÿÿ(   R   R    t   has_edgeR"   t   False(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_has_edgeB   s    	c         C   sK   |  j  } t t | j d ƒ ƒ d d g ƒ t t t j f | j d ƒ d  S(   Ni    i   i   iÿÿÿÿ(   R   R    R   t	   neighborsR   t   KeyErrorR   t   NetworkXError(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_neighborsG   s    	"c         C   s³   |  j  ƒ  } d „  } t j ƒ  | |  j  ƒ } | j ƒ  | |  j  ƒ } t | | ƒ d |  j  f d „  ƒ  Y} t j ƒ  | ƒ  } | | ƒ } | j ƒ  | | ƒ } t | | ƒ d  S(   Nc            s    t  ‡  f d †  t j ƒ  Dƒ ƒ S(   Nc         3   s$   |  ] } t  | ˆ  ƒ r d  Vq d S(   i   N(   t
   isinstance(   t   .0t   obj(   t   _type(    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pys	   <genexpr>P   s    (   t   sumt   gct   get_objects(   R0   (    (   R0   s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   count_objects_of_typeO   s    t   MyGraphc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR5   Y   s   (   t   GraphR2   t   collectt   copyR    (   R   R   R4   t   beforet   afterR5   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_memory_leakL   s    	


	
c         C   s†   |  j  } t | j ƒ  d d d g ƒ t | j d ƒ d d	 g ƒ t | j d d g ƒ d
 d d g ƒ t t t j f | j d ƒ d  S(   Ni    i   i   iÿÿÿÿ(   i    i   (   i    i   (   i   i   (   i    i   (   i    i   (   i    i   (   i    i   (   i   i   (   R   t   assert_edges_equalt   edgesR   R*   R   R+   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt
   test_edgesc   s
    	%c         C   sà   |  j  ƒ  } | j d d d d ƒ| j d d d d ƒt t d „  | j d d ƒ Dƒ ƒ d d d g ƒ t t | j d d ƒ ƒ i d d 6d d 6d d 6ƒ t | j d d d ƒd ƒ t | j d g d d ƒd g ƒ d  S(   Ni   i   t   weighti   c         s   s   |  ] \ } } | Vq d  S(   N(    (   R.   t   nt   d(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pys	   <genexpr>n   s    i   (   i   i   (   R8   t   add_edgeR    R   t   degreet   dict(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_weighted_degreej   s    "4c         C   s‰   |  j  } t t | j ƒ  ƒ d d d g ƒ t t | j ƒ  ƒ i d d 6d d 6d d 6ƒ t | j d ƒ d ƒ t t j | j d ƒ d  S(   Ni    i   i   iÿÿÿÿ(   i    i   (   i   i   (   i   i   (   R   R    R   RE   RF   R   R   R+   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_degreet   s
    	".c         C   s3   |  j  } t | j ƒ  d ƒ t | j ƒ  d ƒ d  S(   Ni   (   R   R    t   sizet   number_of_edges(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt	   test_size{   s    	c         C   sÝ   |  j  } t | j ƒ  |  j ƒ t | j d ƒ d g ƒ t | j d d g ƒ d d g ƒ t | j d g ƒ g  ƒ t | j d ƒ g  ƒ | j d ƒ } t t j t | ƒ | j d d d i  g ƒ } t t j t | ƒ d  S(   Ni    i   iÿÿÿÿt   fooi   (   R   t   assert_nodes_equalt   nbunch_iterR!   R   R   R+   R   (   R   R   t   bunch(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_nbunch_iter€   s    	"c         C   s5   |  j  ƒ  } d t ƒ  f g } t | j | ƒ ƒ d  S(   Nt   x(   R8   t   setR   RN   (   R   R   t   nbunch(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt"   test_nbunch_iter_node_format_raise’   s    c         C   s°   |  j  ƒ  } | j d d ƒ t t | j ƒ  ƒ d g ƒ t t | j ƒ  ƒ i d d 6ƒ t | j d ƒ d ƒ t t | j d g ƒ ƒ d g ƒ t | j d d d ƒd ƒ d  S(   Ni   i   RA   (   i   i   (   i   i   (   R8   RD   R    R   RE   RF   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_selfloop_degree   s     "c         C   së   |  j  j ƒ  } | j d d ƒ t t j | ƒ d g ƒ t t j | ƒ d g ƒ t t j	 | ƒ d ƒ | j
 d d ƒ | j d d ƒ | j d g ƒ | j d d ƒ | j d ƒ | j d d ƒ | j d d ƒ | j d d g ƒ d  S(   Ni    i   (   i    i    (   i    i    (   R   R:   RD   RM   R   R   R>   R   R    R   t   remove_edget   remove_edges_fromt   remove_nodet   remove_nodes_from(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_selfloops¦   s    (   R6   R7   t   __doc__R   R   R#   R%   R(   R,   R=   R@   RG   RH   RK   RP   R   R   R+   RT   RU   RZ   (    (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR   %   s    									
					t   BaseAttrGraphTesterc           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 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 d „  Z  d „  Z! d  „  Z" RS(!   s)    Tests of graph class attribute features.c         C   sŠ  |  j  ƒ  } | j d d d d d d ƒ| j d d d d d d ƒt t d „  | j d d ƒ Dƒ ƒ d d d g ƒ t t | j d d ƒ ƒ i d d 6d d 6d d 6ƒ t | j d d d ƒd ƒ t | j d g d d ƒd g ƒ t d	 „  | j d d ƒ Dƒ d d
 d g ƒ t t | j d d ƒ ƒ i d d 6d
 d 6d d 6ƒ t | j d d d ƒd ƒ t | j d g d d ƒd g ƒ d  S(   Ni   i   RA   t   otheri   i   c         s   s   |  ] \ } } | Vq d  S(   N(    (   R.   RB   RC   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pys	   <genexpr>½   s    i   c         s   s   |  ] \ } } | Vq d  S(   N(    (   R.   RB   RC   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pys	   <genexpr>Ã   s    i   (   i   i   (   i   i   (   R8   RD   R    R   RE   RF   RM   R>   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyRG   ¹   s    "4",4c         C   sd   g  | j  d <g  | j d d <| j d d ƒ g  } | j d d d | ƒ| j d d d | ƒd  S(   NRL   i    i   i   (   t   graphR    RV   RD   (   R   R   t   ll(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   add_attributesÈ   s    c         C   s[   |  j  d d ƒ } t | j d ƒ |  j  d d ƒ } t | j ƒ  d ƒ t | j d ƒ d  S(   Nt   namet    t   test(   R8   R    Ra   t   __str__(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt	   test_nameÐ   s
    c         C   s‚   |  j  d d g ƒ } | j d t ƒ } | j d d g ƒ } | j d t ƒ } t | | j ƒ t | | j ƒ t | | j ƒ d  S(   Ni    i   i   t   as_viewR:   (   i    i   (   i   i   (   R8   t   to_directedR"   t   subgrapht   reverseR'   R   t   _graph(   R   R   t   DGt   SDGt   RSDG(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_graph_chain×   s    c         C   sv   |  j  ƒ  } | j d ƒ | j d d ƒ |  j | ƒ | j ƒ  } |  j | | ƒ |  j | | ƒ |  j | | ƒ d  S(   Ni    i   i   (   R8   t   add_nodeRD   R`   R:   t   graphs_equalt   different_attrdictt   shallow_copy_attrdict(   R   R   t   H(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt	   test_copyà   s    c         C   sy   |  j  ƒ  } | j d ƒ | j d d ƒ |  j | ƒ | j | ƒ } |  j | | ƒ |  j | | ƒ |  j | | ƒ d  S(   Ni    i   i   (   R8   Ro   RD   R`   t	   __class__Rp   Rq   Rr   (   R   R   Rs   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_class_copyë   s    c         C   s$  |  j  ƒ  } | j d ƒ | j d d ƒ |  j | ƒ | j ƒ  } | j | ƒ | j | j ƒ  ƒ t t	 | j
 d ƒ d ƒ | j ƒ  r | j d d d n | j d d } t t	 | ƒ d ƒ t t	 | j
 d ƒ d ƒ | j ƒ  rü | j d d d n | j d d } t t	 | ƒ d ƒ d  S(   Ni    i   i   (   R8   Ro   RD   R`   t
   fresh_copyt   add_nodes_fromt   add_edges_fromR?   R    R   R    t   is_multigraphR   (   R   R   Rs   t   ddict(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_fresh_copyö   s    22c         C   s4   |  j  | | ƒ |  j | | ƒ |  j | | ƒ d  S(   N(   Rp   Rq   t   deep_copy_attrdict(   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   is_deepcopy  s    c         C   s4   |  j  | | ƒ |  j | | ƒ |  j | | ƒ d  S(   N(   t   deepcopy_graph_attrt   deepcopy_node_attrt   deepcopy_edge_attr(   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR}     s    c         C   sN   t  | j d | j d ƒ | j d j d ƒ t | j d | j d ƒ d  S(   NRL   i   (   R    R^   t   appendR   (   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR     s    c         C   sb   t  | j d d | j d d ƒ | j d d j d ƒ t | j d d | j d d ƒ d  S(   Ni    RL   i   (   R    R    R‚   R   (   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR€     s    #c         C   sg   t  | d d d | d d d ƒ | d d d j d ƒ t | d d d | d d d ƒ d  S(   Ni   i   RL   (   R    R‚   R   (   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR     s    %c         C   s$   |  j  | | ƒ |  j | | ƒ d  S(   N(   Rp   Rr   (   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   is_shallow_copy  s    c         C   s4   |  j  | | ƒ |  j | | ƒ |  j | | ƒ d  S(   N(   t   shallow_copy_graph_attrt   shallow_copy_node_attrt   shallow_copy_edge_attr(   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyRr   #  s    c         C   sN   t  | j d | j d ƒ | j d j d ƒ t  | j d | j d ƒ d  S(   NRL   i   (   R    R^   R‚   (   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR„   (  s    c         C   sb   t  | j d d | j d d ƒ | j d d j d ƒ t  | j d d | j d d ƒ d  S(   Ni    RL   i   (   R    R    R‚   (   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR…   -  s    #c         C   sg   t  | d d d | d d d ƒ | d d d j d ƒ t  | d d d | d d d ƒ d  S(   Ni   i   RL   (   R    R‚   (   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR†   2  s    %c         C   s¿   | d d d } d | j  d d d <t | j | j ƒ | | j  d d d <t | j | j ƒ | j d d } d | j d d <t | j | j ƒ | | j d d <t | j | j ƒ d  S(   Ni   i   RL   t   bazi    (   R   R    R?   R    (   R   Rs   R   t   old_foo(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   same_attrdict7  s    c         C   s¿   | d d d } d | j  d d d <t | j | j ƒ | | j  d d d <t | j | j ƒ | j d d } d | j d d <t | j | j ƒ | | j d d <t | j | j ƒ d  S(   Ni   i   RL   R‡   i    (   R   R   t   _adjR    R    t   _node(   R   Rs   R   Rˆ   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyRq   D  s    c         C   sm  t  | j | j ƒ t  | j | j ƒ t  | j | j ƒ t  | j | j ƒ | j ƒ  r¯ | j ƒ  r¯ t | j d d | j d d ƒ t | j d d | j d d ƒ nº | j ƒ  sÖ | j | _ | j | _ n  | j ƒ  sý | j | _ | j | _ n  t  | j | j ƒ t  | j | j ƒ t | j d d | j d d ƒ t | j d d | j d d ƒ d  S(   Ni   i   (	   R    RŠ   R‹   R^   Ra   t   is_directedR   t   _predt   _succ(   R   Rs   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyRp   Q  s"    #&#c         C   sn   |  j  } d | j d <t | j d d ƒ | j d =t | j i  ƒ |  j d d ƒ } t | j d d ƒ d  S(   Nt   barRL   (   R   R^   R    R8   (   R   R   Rs   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_graph_attre  s    	
c         C   s  |  j  } | j d d d ƒt | j ƒ  d d d g ƒ t | j d t ƒ d i  f d i d d 6f d i  f g ƒ d | j d d <t | j d t ƒ d i  f d i d d 6f d i  f g ƒ t | j d d ƒ d	 d
 d g ƒ t | j d d d d ƒ d d d g ƒ d  S(   Ni   RL   R   i    i   R   R‡   t   default(   i    N(   i   R‡   (   i   N(   i    R   (   i   R‡   (   i   R   (   R   Ro   RM   R    R"   t   None(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_node_attrn  s    	))c      	   C   s   |  j  } i d d 6} | j d |  t | j ƒ  d d d d g ƒ t | j d t ƒ d i  f d i  f d i  f d i d d 6f g ƒ d  S(   NR   RL   i   i    i   i   R   (   R   Ro   RM   R    R"   (   R   R   t   a(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_node_attr2|  s    	c         C   sA   |  j  ƒ  } | j d d d d ƒt | j d i d d 6ƒ d  S(   Ni   i   RL   R   (   i   i   (   R8   RD   R>   R?   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_edge_lookup„  s    c         C   sn   |  j  ƒ  } | j d d d d ƒt | j d t ƒ d d i d d 6f g ƒ t | j d d ƒ d g ƒ d  S(   Ni   i   RL   R   R   (   i   i   R   (   R8   RD   R>   R?   R"   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_edge_attr‰  s    ,c         C   s‡   |  j  ƒ  } | j d d g d d ƒt | j d t ƒ d d i d d 6f d d i d d 6f g ƒ t | j d d ƒ d	 d
 g ƒ d  S(   Ni   i   i   i   RL   R   (   i   i   (   i   i   (   i   i   RL   (   i   i   RL   (   R8   Ry   R>   R?   R"   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_edge_attr2  s    -c      	   C   s  |  j  ƒ  } | j d d i d d 6f d d i d d 6f g d d ƒt | j d	 t ƒ d d i d d 6d d 6f d d i d d 6d d 6f g ƒ | j d d g ƒ | j d d d	 d
 d d d d ƒt | j d	 t ƒ d d i d
 d	 6d d 6d d 6f g ƒ d  S(   Ni   i   i    RA   i   i   i@   RL   R   i   t   spamR   (   i   i   (   i   i   (   R8   Ry   R>   R?   R"   RW   RD   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_edge_attr3—  s     !"c      	   C   sÖ  |  j  ƒ  } | j d d d d d d d d ƒt | j d t ƒ d d i d d 6d d 6d d 6f g ƒ d | d d d <t | j d t ƒ d d i d d 6d d 6d d 6f g ƒ d	 | j d d d <t | j d t ƒ d d i d	 d 6d d 6d d 6f g ƒ d
 | j d d <t | j d t ƒ d d i d
 d 6d d 6d d 6f g ƒ d	 d g | j d d d <d	 | j d d d <i d
 d 6d d 6d d 6d	 d g d 6d	 d 6} t | j d t ƒ d d | f g ƒ d  S(   Ni   i   R   i   R™   R   RL   i
   i   i   iÈ   t   listdataRA   (   i   i   (   R8   RD   R>   R?   R"   R   (   R   R   t   dd(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_edge_attr4¤  s$    "((((c         C   se   |  j  } |  j | ƒ t j | ƒ } |  j | | ƒ |  j | | ƒ | j ƒ  } |  j | | ƒ d  S(   N(   R   R`   R   R8   Rƒ   Rq   t   to_undirectedR~   (   R   R   Rs   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_to_undirected¹  s    	c         C   se   |  j  } |  j | ƒ t j | ƒ } |  j | | ƒ |  j | | ƒ | j ƒ  } |  j | | ƒ d  S(   N(   R   R`   R   R	   Rƒ   Rq   Rg   R~   (   R   R   Rs   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_to_directedÂ  s    	c         C   sº   |  j  } |  j | ƒ | j d d d d g ƒ } |  j | | ƒ |  j | | ƒ |  j | | ƒ | j d ƒ } t | j i i  d 6ƒ | j g  ƒ } t | j i  ƒ t | j i  ƒ d  S(   Ni    i   i   i   (	   R   R`   Rh   Rp   R‰   Rr   R    R   R   (   R   R   Rs   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_subgraphË  s    	c         C   s–   |  j  j ƒ  } | j d d ƒ | j d d d d ƒt t j | d t ƒd d i  f d d i d d 6f g ƒ t t j | d d ƒd d g ƒ d  S(   Ni    i   RA   i   R   (   i    i    N(   i   i   i   (   R   R:   RD   R>   R   R   R"   R’   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_selfloops_attrÙ  s    &(#   R6   R7   R[   RG   R`   Re   Rn   Rt   Rv   R|   R~   R}   R   R€   R   Rƒ   Rr   R„   R…   R†   R‰   Rq   Rp   R   R“   R•   R–   R—   R˜   Rš   R   RŸ   R    R¡   R¢   (    (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR\   ¶   sB   																																			t	   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 d „  Z d „  Z d „  Z RS(   s;   Tests specific to dict-of-dict-of-dict graph data structurec         C   sê   t  j |  _ i  i  i  } } } i i | d 6| d 6d 6i | d 6| d 6d 6i | d 6| d 6d 6|  _ d d d g |  _ d d d g |  _ |  j ƒ  |  _ |  j |  j _ i  |  j _ i  |  j j d <i  |  j j d <i  |  j j d <d  S(   Ni   i   i    (   i    i   (   i    i   (   i   i   (   R   R8   t   k3adjt   k3edgesR!   R   RŠ   R‹   (   R   t   ed1t   ed2t   ed3(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   setUpæ  s    c         C   s`   |  j  } t j t j | d ƒ ƒ } |  j | | ƒ t j t j | ƒ ƒ } |  j | | ƒ d  S(   Niÿÿÿÿ(   R   t   picklet   loadst   dumpsRp   (   R   R   t   pg(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_pickleö  s
    	c         C   sî   |  j  i d g d 6d g d 6d d ƒ} t | j d ƒ t t | j j ƒ  ƒ d i i  d 6f d i i  d 6f g ƒ |  j  i d g d 6d g d 6d d ƒ} t | j d ƒ t t | j j ƒ  ƒ d i i  d 6f d i i  d 6f g ƒ d  S(   Ni   i   Ra   Rc   (   R8   R    Ra   R   R   t   items(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_data_inputý  s    )<)c         C   se   |  j  } t t | j ƒ  ƒ i i i  d 6i  d 6d 6i i  d 6i  d 6d 6i i  d 6i  d 6d 6ƒ d  S(   Ni   i   i    (   R   R    RF   t	   adjacency(   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_adjacency  s    	c         C   s^   |  j  } t | d i i  d 6i  d 6ƒ t t | j d ƒ t t t j f | j d g ƒ d  S(   Ni    i   i   t   jt   A(   R   R    R   R*   t   __getitem__t	   TypeErrorR   R+   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_getitem
  s    	c         C   s6  |  j  ƒ  } | j d ƒ t | j i i  d 6ƒ | j d d d ƒ| j d d d ƒ| j d d d ƒt | j d d d ƒ t | j d d d ƒ t | j d d d ƒ | j d d d ƒ| j d d d ƒ| j d d d ƒt | j d d d ƒ t | j d d d ƒ t | j d d d ƒ d  S(   Ni    i   t   ct   redi   t   bluei   (   R8   Ro   R    R   R    (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_add_node  s    c         C   s.  |  j  ƒ  } | j d d d g ƒ t | j i i  d 6i  d 6i  d 6ƒ | j d d d g d d ƒt | j d d d ƒ t | j d d d ƒ | j d | j d k	 s³ t ‚ | j d d d g d d ƒt | j d d d ƒ t | j d d d ƒ | j d | j d k	 st ‚ |  j  ƒ  } | j | j d t ƒ ƒ t | j d d d ƒ t | j d d d ƒ | j d | j d k	 s”t ‚ | j d d i d d 6f d	 i d
 d 6f g d d ƒt | j d d d ƒ t | j d d d ƒ t | j d d d ƒ t | j d	 d d
 ƒ d  S(   Ni    i   i   R¸   R¹   Rº   R   t   greeni   t   cyan(   R8   Rx   R    R   R    R   R"   (   R   R   Rs   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_add_nodes_from#  s*    %   6c         C   sb   |  j  } | j d ƒ t | j i i i  d 6d 6i i  d 6d 6ƒ t t t j f | j d ƒ d  S(   Ni    i   i   iÿÿÿÿ(   R   RX   R    R   R   R*   R   R+   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_remove_node?  s    	,c         C   sG   |  j  } | j d d g ƒ t | j i i  d 6ƒ | j d g ƒ d  S(   Ni    i   i   iÿÿÿÿ(   R   RY   R    R   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_remove_nodes_fromF  s    	c         C   s‘   |  j  ƒ  } | j d d ƒ t | j i i i  d 6d 6i i  d 6d 6ƒ |  j  ƒ  } | j d Œ  t | j i i i  d 6d 6i i  d 6d 6ƒ d  S(   Ni    i   (   i    i   (   R8   RD   R    R   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_add_edgeL  s    ,c         C   s™  |  j  ƒ  } | j d d d i d d 6f g ƒ t | j i i i  d 6i d d 6d 6d 6i i  d 6d 6i i d d 6d 6d 6ƒ |  j  ƒ  } | j d	 d d i d d 6f d d i d d 6f g d d ƒt | j i i i d d 6d 6i d d 6d d 6d 6d 6i i d d 6d 6i d d 6d 6d 6i i d d 6d d 6d 6i d d 6d 6d 6ƒ t t j | j d
 g ƒ t t j | j d g ƒ t t | j d g ƒ d  S(   Ni    i   i   i   RA   i   R   (   i    i   (   i    i   (   i    (   i    i   i   i   (   R8   Ry   R    R   R   R   R+   R¶   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_add_edges_fromT  s     #6 *#.		c         C   s}   |  j  } | j d d ƒ t | j i i i  d 6d 6i i  d 6d 6i i  d 6i  d 6d 6ƒ t t t j f | j d d ƒ d  S(   Ni    i   i   iÿÿÿÿ(   R   RV   R    R   R   R*   R   R+   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_remove_edgeh  s    	Ac         C   sn   |  j  } | j d g ƒ t | j i i i  d 6d 6i i  d 6d 6i i  d 6i  d 6d 6ƒ | j d g ƒ d  S(   Ni    i   i   (   i    i   (   i    i    (   R   RW   R    R   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_remove_edges_fromn  s    	Ac         C   s'   |  j  } | j ƒ  t | j i  ƒ d  S(   N(   R   t   clearR    R   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt
   test_cleart  s    	
c         C   sÅ   |  j  } d d i  f d d i  f d d i  f g } t | j d t ƒ | ƒ t | j d d t ƒd d i  f d d i  f g ƒ t | j d d g d t ƒ| ƒ t t t j f | j d t ƒ d  S(   Ni    i   i   R   iÿÿÿÿ(   R   R>   R?   R"   R   R*   R   R+   (   R   R   t	   all_edges(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_edges_datay  s    	*4"c         C   sŒ   |  j  } t | j d d ƒ i  ƒ t | d d i  ƒ t | j d d ƒ d  ƒ t | j d d ƒ d  ƒ t | j d d d d ƒd ƒ d  S(   Ni    i   i
   i   iÿÿÿÿR‘   (   R   R    t   get_edge_dataR’   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_get_edge_data  s    	c         C   sš  |  j  j ƒ  } | j d d d i d d 6f g d d d d	 i d d
 6f g ƒ d i  f d i  f d i  f d i  f d i d d 6f d i  f d i  f d	 i  f g } t t | j j ƒ  ƒ | ƒ | j ƒ  r;d d i  f d d i  f d d i  f d d i  f d d i  f d d i  f d d i  f d d	 i d d
 6f g } nI d d i  f d d i  f d d i  f d d i  f d d	 i d d
 6f g } t t | j j ƒ  ƒ | ƒ t | j	 i  ƒ |  j  j ƒ  } | j d d d	 i d d
 6f g d d i d d 6f g ƒ t t | j j ƒ  ƒ | ƒ t t | j j ƒ  ƒ | ƒ t | j	 i  ƒ |  j
 ƒ  } d | j	 d <| j d d d ƒ| j d d d
 d ƒ| j ƒ  } |  j
 ƒ  } | j | ƒ t | | ƒ | j | ƒ t | | ƒ |  j
 ƒ  } | j d d d g ƒ t | j d d h At g  ƒ ƒ t | j ƒ  d ƒ |  j
 ƒ  } | j d d g ƒ t t | j j ƒ  ƒ d d i  f g ƒ t | j ƒ  d ƒ t t j t j
 ƒ  j ƒ d  S(   NR    i   i   i   RI   R?   i   i   i   RA   i    i   R   RL   R   g      à?(   i   i   (   i   i   (   i   i   (   R   R:   t   updateR    R   R    R   RŒ   R?   R^   R8   Ro   RD   t   assert_graphs_equalRR   RI   R   R   R+   (   R   R   t   nlistt   elistt   GGRs   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_update‰  sL    "$10($%9 ((   R6   R7   R[   R©   R®   R°   R²   R·   R»   R¾   R¿   RÀ   RÁ   RÂ   RÃ   RÄ   RÆ   RÈ   RÊ   RÐ   (    (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR£   ã  s$   																t   TestEdgeSubgraphc           B   sV   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   s6   Unit tests for the :meth:`Graph.edge_subgraph` method.c         C   s”   t  j d ƒ } x. t d ƒ D]  } d j | ƒ | j | d <q Wd | j d d <d | j d d <d
 | j d <| |  _ | j d d g ƒ |  _	 d  S(   Ni   s   node{}Ra   t   edge01i    i   t   edge34i   i   R^   (   i    i   (   i   i   (   i    i   (   i   i   (
   R   t
   path_grapht   ranget   formatR    R?   R^   R   t   edge_subgraphRs   (   R   R   t   i(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   setupÁ  s    	c         C   s,   t  d d d d g t |  j j ƒ  ƒ ƒ d S(   s.   Tests that the subgraph has the correct nodes.i    i   i   i   N(   R    R   Rs   R    (   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_correct_nodesÎ  s    c         C   s,   t  d
 d g t |  j j d d ƒ ƒ ƒ d	 S(   s.   Tests that the subgraph has the correct edges.i    i   RÒ   i   i   RÓ   R   Ra   N(   i    i   RÒ   (   i   i   RÓ   (   R    R   Rs   R?   (   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_correct_edgesÒ  s    c         C   s<   |  j  j d ƒ t d d d d g t |  j j ƒ  ƒ ƒ d S(   sk   Tests that adding a node to the original graph does not
        affect the nodes of the subgraph.

        i   i    i   i   i   N(   R   Ro   R    R   Rs   R    (   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR»   ×  s    c         C   s9   |  j  j d ƒ t d d d g t |  j j ƒ  ƒ ƒ d S(   si   Tests that removing a node in the original graph does
        affect the nodes of the subgraph.

        i    i   i   i   N(   R   RX   R    R   Rs   R    (   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyR¿   ß  s    c         C   s£   x2 |  j  D]' } t |  j j | |  j  j | ƒ q
 Wd |  j j d d <t |  j j d |  j  j d ƒ d |  j  j d d <t |  j j d |  j  j d ƒ d S(   s`   Tests that the node attribute dictionary of the two graphs is
        the same object.

        RL   i    Ra   R   i   N(   Rs   R    R   R    (   R   t   v(    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_node_attr_dictç  s    %!c         C   sË   xJ |  j  j ƒ  D]9 \ } } t |  j j | | f |  j  j | | f ƒ q Wd |  j j d	 d <t |  j j d
 d |  j  j d d ƒ d |  j  j d d <t |  j j d d |  j  j d d ƒ d S(   s`   Tests that the edge attribute dictionary of the two graphs is
        the same object.

        RL   i    i   Ra   R   i   i   N(   i    i   (   i    i   (   i    i   (   i   i   (   i   i   (   i   i   (   Rs   R?   R    R   (   R   t   uRÜ   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_edge_attr_dictô  s    1c         C   s   t  |  j j |  j j ƒ d S(   sa   Tests that the graph attribute dictionary of the two graphs
        is the same object.

        N(   R   R   R^   Rs   (   R   (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   test_graph_attr_dict  s    (   R6   R7   R[   RÙ   RÚ   RÛ   R»   R¿   RÝ   Rß   Rà   (    (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyRÑ   ¾  s   							(   t
   nose.toolsR    R   R   R   R   Rª   R2   t   collectionst   networkxR   t   networkx.testing.utilsR   t   objectR   R\   R£   RÑ   (    (    (    s@   lib/python2.7/site-packages/networkx/classes/tests/test_graph.pyt   <module>   s   
	‘ÿ .Û