ó
 ,µ[c           @   s¿   d  d l  m Z m Z m Z m Z m Z d  d l Z d e f d „  ƒ  YZ	 d e	 f d „  ƒ  YZ
 d e	 f d „  ƒ  YZ d	 e e
 f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   assert_equalt   assert_not_equalt	   assert_ist   assert_truet   assert_raisesNt   TestSubGraphViewc           B   st   e  Z e e j j ƒ Z e j Z e e j	 j
 ƒ Z e e j	 j ƒ Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s4   t  j d d |  j ƒ  ƒ|  _ d d d	 h |  _ d  S(
   Ni	   t   create_usingi   i   i   i   (   i   i   (   i   i   (   i   i   (   t   nxt
   path_grapht   grapht   Gt   hide_edges_w_hide_nodes(   t   self(    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   setUp   s    c         C   s‚  d d d g } t  j j | ƒ } |  j } | GH| |  j d | ƒ} t |  j j | j d d h ƒ t |  j j | j |  j ƒ | j	 ƒ  rÁ t t
 | d ƒ g  ƒ t t
 | d ƒ d g ƒ n7 t t
 | d ƒ d g ƒ t t | d ƒ d d h ƒ t t | j d ƒ t t | j d ƒ t t | j d ƒ t | j d ƒ | j ƒ  rRd n d ƒ t | j ƒ  | j ƒ  rwd	 n d ƒ d  S(
   Ni   i   io   t   filter_nodei   i   i   ip   i   (   R   t   filterst
   hide_nodest   gviewR
   R    t   nodest   edgesR   t   is_directedt   listt   setR   t   KeyErrort   __getitem__t   degreet   is_multigrapht   size(   R   R   t
   nodes_goneR   R
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_hidden_nodes   s"    	 (c         C   s†  d d d g } |  j  | ƒ } |  j } | |  j d | ƒ} t |  j j | j ƒ | j ƒ  rß t |  j j | j d h ƒ t t | d ƒ g  ƒ t t | j d ƒ g  ƒ t t | j d ƒ d g ƒ t | j	 ƒ  d ƒ nM t |  j j | j d d h ƒ t t | d ƒ d g ƒ t | j	 ƒ  d	 ƒ t t | d ƒ d
 g ƒ t
 t | j d ƒ t
 t | j d ƒ t | j d ƒ d ƒ d  S(   Ni   i   i   i   iÞ   iß   t   filter_edgei   i   i   iÝ   (   i   i   (   i   i   (   iÞ   iß   (   i   i   (   i   i   (   i   i   (   t   hide_edges_filterR   R
   R    R   R   R   R   t   predR   R   R   R   R   (   R   t
   hide_edgest
   edges_goneR   R
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_hidden_edges%   s$    	 c         C   s9  t  j j d d d g ƒ } |  j } | |  j d | ƒ} t t | j ƒ d d h ƒ | j ƒ  r{ t t	 | d ƒ g  ƒ n t t	 | d ƒ d g ƒ t t	 | d ƒ d g ƒ t
 t | j d ƒ t
 t | j d ƒ t
 t | j d ƒ t | j d ƒ | j ƒ  r	d n d ƒ t | j ƒ  | j ƒ  r.d n d ƒ d  S(   Ni   i   io   R   i   ip   i   (   R   R   t
   show_nodesR   R
   R    R   R   R   R   R   R   R   R   R   R   (   R   t   induced_subgraphR   R
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_shown_node:   s    	(c         C   s†  d
 d d g } |  j  | ƒ } |  j |  j d | ƒ} t |  j j | j ƒ | j ƒ  ré t | j d h ƒ t t | d ƒ g  ƒ t t | d ƒ d g ƒ t t | j d ƒ d g ƒ t t | j d ƒ g  ƒ t | j	 ƒ  d ƒ n] t | j d d h ƒ t t | d ƒ d g ƒ t t | d ƒ d g ƒ t | j	 ƒ  d ƒ t
 t | j d	 ƒ t
 t | j d ƒ t | j d ƒ d ƒ d  S(   Ni   i   i   i   iÞ   iß   R   i   iÝ   (   i   i   (   i   i   (   iÞ   iß   (   i   i   (   i   i   (   i   i   (   t   show_edges_filterR   R
   R    R   R   R   R   R    R   R   R   R   R   (   R   t
   show_edgest   edge_subgraphR
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_shown_edgesJ   s$    (   t   __name__t
   __module__t   staticmethodR   t
   graphviewst   SubGraphR   t   GraphR	   R   R!   R   R(   R'   R   R   R#   R&   R*   (    (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyR      s   					t   TestSubDiGraphViewc           B   sƒ   e  Z e e j j ƒ Z e j Z e e j	 j
 ƒ Z e e j	 j ƒ Z d d d g Z d d d d h Z d	 „  Z d
 „  Z d „  Z RS(   i   i   i   i   iÞ   iß   i   i   i   c         C   s‰   |  j  |  j ƒ } d d d g } t j j | ƒ } |  j |  j | | ƒ } t |  j j | j |  j	 ƒ t |  j j
 | j
 |  j	 ƒ d  S(   Ni   i   io   (   R   R!   R   R   R   R   R
   R    t   in_edgest   excludedt	   out_edges(   R   R"   R   R   R
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_inoutedgesh   s    c         C   s†   |  j  |  j ƒ } d d d g } t j j | ƒ } |  j |  j | | ƒ } t t | j	 d ƒ d g ƒ t t | j	 d ƒ g  ƒ d  S(   Ni   i   io   i   i   i   (
   R   R!   R   R   R   R   R
   R    R   R    (   R   R"   R   R   R
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt	   test_predq   s    c         C   s¤   |  j  |  j ƒ } d d d g } t j j | ƒ } |  j |  j | | ƒ } t | j d ƒ d ƒ t | j	 d ƒ d ƒ t | j
 d ƒ d ƒ t | j ƒ  d ƒ d  S(   Ni   i   io   i   i   i    (   R   R!   R   R   R   R   R
   R    R   t
   out_degreet	   in_degreeR   (   R   R"   R   R   R
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_inout_degreez   s    (   i   i   (   i   i   (   iÞ   iß   (   i   i   (   i   i   (   i   i   (   i   i   (   R+   R,   R-   R   R.   t
   SubDiGraphR   t   DiGraphR	   R   t   hide_diedgesR   t   show_diedgesR'   R!   R3   R5   R6   R9   (    (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyR1   `   s   					t   TestMultiGraphViewc           B   sb   e  Z e e j j ƒ Z e j Z e e j	 j
 ƒ Z e e j	 j ƒ Z d  „  Z d „  Z d „  Z RS(   c         C   sP   t  j d d |  j ƒ  ƒ|  _ d	 d
 h } |  j j | ƒ d d d h |  _ d  S(   Ni	   R   i   i   i   i   i    i   (   i   i   i   (   i   i   i   (   i   i   i    (   i   i   i    (   i   i   i    (   R   R   R	   R
   t   add_edges_fromR   (   R   t
   multiedges(    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyR      s    c         C   s©  d d d d g } |  j  | ƒ } |  j |  j d	 | ƒ} t |  j j | j ƒ | j ƒ  rü t |  j j | j d h ƒ t t | d ƒ d g ƒ t t | d ƒ d g ƒ t t | j d ƒ d g ƒ t t | j d ƒ d
 g ƒ t | j	 ƒ  d ƒ nm t |  j j | j d d h ƒ t t | d ƒ d d g ƒ t t | d ƒ d
 d g ƒ t | j	 ƒ  d ƒ t | j
 d ƒ d ƒ t t | j d ƒ t t | j d ƒ d  S(   Ni   i   i   i   i   i    iÞ   iß   R   i   i	   iÝ   (   i   i   i   (   i   i   i   (   i   i   i    (   iÞ   iß   i    (   i   i   i   (   i   i   i   (   i   i   i    (   R   R   R
   R    R   R   R   R   R    R   R   R   R   R   (   R   R!   R"   R
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyR#   “   s$     c         C   so  d d d d g } |  j  | ƒ } |  j |  j d	 | ƒ} t |  j j | j ƒ | j ƒ  rÒ t | j d h ƒ t t | d ƒ g  ƒ t t | j d ƒ d g ƒ t t | j d ƒ g  ƒ t | j	 ƒ  d
 ƒ nC t | j d d h ƒ t | j	 ƒ  d ƒ t t | d ƒ d g ƒ t | j
 d ƒ d
 ƒ t t | d ƒ d g ƒ t t | j d ƒ t t | j d ƒ d  S(   Ni   i   i   i   i   i    iÞ   iß   R   i   iÝ   (   i   i   i   (   i   i   i   (   i   i   i    (   iÞ   iß   i    (   i   i   i   (   i   i   i   (   i   i   i    (   R'   R   R
   R    R   R   R   R   R    R   R   R   R   R   (   R   R(   R)   R
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyR*   ¨   s"    (   R+   R,   R-   R   R.   t   SubMultiGraphR   t
   MultiGraphR	   R   t   hide_multiedgesR   t   show_multiedgesR'   R   R#   R*   (    (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyR>   ‡   s   			t   TestMultiDiGraphViewc           B   sq   e  Z e e j j ƒ Z e j Z e e j	 j
 ƒ Z e e j	 j ƒ Z d d d g Z d d d d h Z d
 „  Z RS(   i   i   i    i   i   iÞ   iß   i   i   i   c         C   s¤   |  j  |  j ƒ } d d d g } t j j | ƒ } |  j |  j | | ƒ } t | j d ƒ d ƒ t | j	 d ƒ d ƒ t | j
 d ƒ d ƒ t | j ƒ  d ƒ d  S(   Ni   i   io   i   i   i   i   (   R   R!   R   R   R   R   R
   R    R   R7   R8   R   (   R   R"   R   R   R
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyR9   Æ   s    (   i   i   i    (   i   i   i    (   iÞ   iß   i    (   i   i   i    (   i   i   i    (   i   i   i    (   i   i   i    (   R+   R,   R-   R   R.   t   SubMultiDiGraphR   t   MultiDiGraphR	   R   t   hide_multidiedgesR   t   show_multidiedgesR'   R!   R3   R9   (    (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyRE   ¾   s   	t   TestInducedSubGraphc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sz   t  j d ƒ |  _ } g  | j d <g  | j d d <| j d d ƒ g  } | j d d d | ƒ| j d d d | ƒd  S(   Ni   t   fooi    i   i   (   R   t   complete_grapht   K3R	   R   t   remove_edget   add_edge(   R   R
   t   ll(    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyR   Ô   s    c         C   s^   |  j  } t j | d d d d g ƒ } t | j | j ƒ |  j | | ƒ |  j | | ƒ d  S(   Ni    i   i   i   (   RM   R   R%   R    t   namet   graphs_equalt   same_attrdict(   R   R
   t   H(    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_full_graphÝ   s
    	c         C   s£   |  j  } t j | d ƒ } t t | j ƒ i i  d 6ƒ t t | j ƒ i i  d 6ƒ t j | d d g ƒ } t t | j ƒ i i i  d 6d 6i i  d 6d 6ƒ d  S(   Ni    i   (   RM   R   R%   R    t   dictt   adjR   (   R   R
   RT   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_partial_subgraphä   s    	c         C   s·   | d d d } d | j  d d <t | j  | j  ƒ | | j  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   RK   t   bazi    (   i   i   (   i   i   (   R   R    R   (   R   RT   R
   t   old_foo(    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyRS   í   s    c         C   sy  t  | j | j ƒ t  | j | j ƒ t  | j | j ƒ t  | j | j ƒ | j ƒ  rµ | j ƒ  rµ t | j d d | j d d k ƒ t | j d d | j d d k ƒ nÀ | j ƒ  sÜ | j | _ | j | _ n  | j ƒ  s| j | _ | j | _ n  t  | j | j ƒ t  | j | j ƒ t | j d d | j d d k ƒ t | j d d | j d d k ƒ d  S(   Ni   i   (	   R    t   _adjt   _nodeR	   RQ   R   R   t   _predt   _succ(   R   RT   R
   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyRR   ù   s"    &)&(   R+   R,   R   RU   RX   RS   RR   (    (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyRJ   Ó   s
   						t   TestEdgeSubGraphc           B   sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   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 <t  j | d d g ƒ |  _	 d  S(   Ni   s   node{}RQ   t   edge01i    i   t   edge34i   i   R	   (   i    i   (   i   i   (   i    i   (   i   i   (
   R   R   R
   t   ranget   formatR   R   R	   R)   RT   (   R   R
   t   i(    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.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    t   sortedRT   R   (   R   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.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   Ra   t   dataRQ   N(   i    i   R`   (   i   i   Ra   (   R    Rf   RT   R   (   R   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_correct_edges   s    c         C   sI   |  j  j d ƒ t d d d d g t |  j j ƒ ƒ |  j  j d ƒ 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
   t   add_nodeR    Rf   RT   R   t   remove_node(   R   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_add_node%  s    %c         C   sI   |  j  j d ƒ t d d d g t |  j j ƒ ƒ |  j  j d d ƒ d S(   se   Tests that removing a node in the original graph
        removes the nodes of the subgraph.

        i    i   i   i   N(   R
   Rk   R    Rf   RT   R   RO   (   R   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_remove_node.  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.

        RK   i    RQ   t   bari   N(   RT   R    R
   R   (   R   t   v(    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_node_attr_dict7  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.

        RK   i    i   RQ   Rn   i   i   N(   i    i   (   i    i   (   i    i   (   i   i   (   i   i   (   i   i   (   RT   R   R    R
   (   R   t   uRo   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_edge_attr_dictD  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	   RT   (   R   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_graph_attr_dictS  s    c         C   sn   t  t j |  j j d ƒ t  t j |  j j d ƒ t  t j |  j j d d ƒ t  t j |  j j d d ƒ d S(   s9   Tests that the subgraph cannot change the graph structurei   i    i   i   N(   R   R   t   NetworkXErrorRT   Rj   Rk   RO   RN   (   R   (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   test_readonlyZ  s    (   R+   R,   Re   Rg   Ri   Rl   Rm   Rp   Rr   Rs   Ru   (    (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyR_     s   										(   t
   nose.toolsR    R   R   R   R   t   networkxR   t   objectR   R1   R>   RE   RJ   R_   (    (    (    sH   lib/python2.7/site-packages/networkx/classes/tests/test_subgraphviews.pyt   <module>   s   (Y'7<