ó
 ,µ[c           @   sâ   d  d l  m Z m Z m Z d  d l  m Z m Z d  d l  m Z m Z m Z d  d l	 Z
 d  d l m Z m Z d e f d „  ƒ  YZ 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_int   assert_not_int   assert_equal(   t	   assert_ist   assert_is_not(   t   assert_raisest   assert_truet   assert_falseN(   t   assert_edges_equalt   assert_nodes_equalt   TestReverseViewc           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s7   t  j d d t  j ƒ  ƒ|  _ t  j |  j ƒ |  _ d  S(   Ni	   t   create_using(   t   nxt
   path_grapht   DiGrapht   Gt   reverse_viewt   rv(   t   self(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   setup   s    c         C   sm   d d  l  } |  j } | j | j | d ƒ ƒ } t | j | j ƒ t | j | j ƒ t | j | j ƒ d  S(   Niÿÿÿÿ(   t   pickleR   t   loadst   dumpsR   t   _nodet   _adjt   graph(   R   R   R   t   prv(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_pickle   s    	c         C   sP   t  d |  j j ƒ t d |  j j ƒ t d |  j j ƒ t  d |  j j ƒ d  S(   Ni   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R    R   t   edgesR   R   (   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_contains   s    c         C   s9   t  d „  |  j j Dƒ ƒ } t t  |  j j ƒ | ƒ d  S(   Nc         s   s!   |  ] } t  t | ƒ ƒ Vq d  S(   N(   t   tuplet   reversed(   t   .0t   e(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pys	   <genexpr>   s    (   t   sortedR   R   R   R   (   R   t   expected(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt	   test_iter   s    c         C   s)   t  j } t t  j | j t  j ƒ  ƒ d  S(   N(   R   t
   graphviewsR   t   NetworkXNotImplementedR   t   Graph(   R   t   nxg(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_exceptions"   s    	c            s¤   d t  j f ‡  f d †  ƒ  Y‰  ˆ  ƒ  } | j d d ƒ t  j | ƒ } d | j f GH| j ƒ  } d | j f GH| j GHt | j d d ƒ ƒ t	 | j
 ƒ  d ƒ d  S(   Nt   MyGraphc              s    e  Z d  „  Z ‡  f d †  Z RS(   c         S   s   d S(   Nt   me(    (   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt	   my_method(   s    c            s   ˆ  ƒ  S(   N(    (   R   (   R*   (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   to_directed_class*   s    (   t   __name__t
   __module__R,   R-   (    (   R*   (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR*   '   s   	i   i   s   RM classs	   RMC classR+   (   R   R   t   add_edgeR   t	   __class__t   copyR   R   t   has_edgeR   R,   (   R   t   Mt   RMt   RMC(    (   R*   sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_subclass&   s    	(   R.   R/   R   R   R   R$   R)   R7   (    (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR
      s   					t   TestMultiReverseViewc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sJ   t  j d d t  j ƒ  ƒ|  _ |  j j d d ƒ t  j |  j ƒ |  _ d  S(   Ni	   R   i   i   (   R   R   t   MultiDiGraphR   R0   R   R   (   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR   9   s    c         C   sm   d d  l  } |  j } | j | j | d ƒ ƒ } t | j | j ƒ t | j | j ƒ t | j | j ƒ d  S(   Niÿÿÿÿ(   R   R   R   R   R   R   R   R   (   R   R   R   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR   >   s    	c         C   sv   t  d |  j j ƒ t d |  j j ƒ t d	 |  j j ƒ t  d
 |  j j ƒ t  d |  j j ƒ t d |  j j ƒ d  S(   Ni   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   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR   F   s    c         C   s9   t  d „  |  j j Dƒ ƒ } t t  |  j j ƒ | ƒ d  S(   Nc         s   s'   |  ] \ } } } | | | f Vq d  S(   N(    (   R    t   ut   vt   k(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pys	   <genexpr>O   s    (   R"   R   R   R   R   (   R   R#   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR$   N   s    c         C   s5   t  j } t  j |  j ƒ } t t  j | j | ƒ d  S(   N(   R   R%   t
   MultiGraphR   R   R&   R   (   R   R(   t   MG(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR)   R   s    	(   R.   R/   R   R   R   R$   R)   (    (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR8   8   s
   				t   TestToDirectedc           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s^   t  j d ƒ |  _ t  j |  j ƒ |  _ t  j d d t  j ƒ  ƒ|  _ t  j |  j ƒ |  _ d  S(   Ni	   R   (   R   R   R   t   to_directedt   dvR=   R>   t   Mdv(   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR   Y   s    c         C   s*   t  |  j j ƒ  ƒ t |  j j ƒ  ƒ d  S(   N(   R   R   t   is_directedR   RA   (   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_directed_   s    c         C   sT   t  j |  j ƒ } t  j |  j ƒ } t | j |  j j ƒ t | j |  j j ƒ d  S(   N(   R   R@   RA   RB   R   R   (   R   t   ddt   Mdd(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_already_directedc   s    c         C   s€   d d  l  } |  j } | j | j | d ƒ ƒ } t | j | j ƒ t | j | j ƒ t | j | j ƒ t | j | j ƒ d  S(   Niÿÿÿÿ(	   R   RA   R   R   R   R   t   _succt   _predR   (   R   R   RA   t   pdv(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR   i   s    	c         C   sP   t  d |  j j ƒ t  d |  j j ƒ t  d |  j j ƒ t  d |  j j ƒ d  S(   Ni   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R    R   R   RA   (   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR   r   s    c         C   sd   g  |  j  j D] } t t | ƒ ƒ ^ q } t t |  j  j ƒ | ƒ } t t |  j j ƒ | ƒ d  S(   N(   R   R   R   R   R"   t   listR   RA   (   R   R!   t   revdR#   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR$   x   s    +c         C   s?   t  j } t t  j | j |  j ƒ t t  j | j |  j ƒ d  S(   N(   R   R%   R   t   NetworkXErrort   DiGraphViewR>   t   MultiDiGraphViewR   (   R   R(   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR)   }   s    	(	   R.   R/   R   RD   RG   R   R   R$   R)   (    (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR?   X   s   							t   TestToUndirectedc           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sj   t  j d d t  j ƒ  ƒ|  _ t  j |  j ƒ |  _ t  j d d t  j ƒ  ƒ|  _ t  j |  j ƒ |  _ d  S(   Ni	   R   (	   R   R   R   t   DGt   to_undirectedt   uvR9   t   MDGt   Muv(   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR   „   s    c         C   s*   t  |  j j ƒ  ƒ t |  j j ƒ  ƒ d  S(   N(   R   RQ   RC   R   RS   (   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyRD   Š   s    c         C   sT   t  j |  j ƒ } t  j |  j ƒ } t | j |  j j ƒ t | j |  j j ƒ d  S(   N(   R   RR   RS   RU   R   R   (   R   t   uut   Muu(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyRG   Ž   s    c         C   s€   d d  l  } |  j } | j | j | d ƒ ƒ } t | j | j ƒ t | j | j ƒ t | j | j ƒ t t	 | d ƒ ƒ d  S(   Niÿÿÿÿt   _graph(
   R   RS   R   R   R   R   R   R   R   t   hasattr(   R   R   RS   t   puv(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR   ”   s    	c         C   sP   t  d |  j j ƒ t d |  j j ƒ t  d |  j j ƒ t  d |  j j ƒ d  S(   Ni   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R    RQ   R   R   RS   (   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR      s    c         C   s/   t  |  j j ƒ } t t  |  j j ƒ | ƒ d  S(   N(   R"   RQ   R   R   RS   (   R   R#   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR$   £   s    c         C   s?   t  j } t t  j | j |  j ƒ t t  j | j |  j ƒ d  S(   N(   R   R%   R   RM   t	   GraphViewRT   t   MultiGraphViewRQ   (   R   R(   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR)   §   s    	(	   R.   R/   R   RD   RG   R   R   R$   R)   (    (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyRP   ƒ   s   							t   TestChainsOfViewsc           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 RS(   c      
   C   sW  t  j d ƒ |  _ t  j d d t  j ƒ  ƒ|  _ t  j d d t  j ƒ  ƒ|  _ t  j d d t  j ƒ  ƒ|  _ t  j	 |  j ƒ |  _
 t  j |  j ƒ |  _ t  j	 |  j ƒ |  _ t  j |  j ƒ |  _ |  j j ƒ  |  _ |  j j ƒ  |  _ |  j |  j |  j |  j |  j
 |  j |  j |  j |  j |  j g
 |  _ x' |  j D] } | j | j | j f q3Wd  S(   Ni	   R   (   R   R   R   R   RQ   R=   R>   R9   RT   RR   t   GvR@   t   DGvt   MGvt   MDGvt   reverset   Rvt   MRvt   graphsR   t   nodest   degree(   R   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   setUp®   s    c         C   se   d d  l  } xR |  j D]G } | j | j | d ƒ ƒ } t | j | j ƒ t | j | j ƒ q Wd  S(   Niÿÿÿÿ(   R   Re   R   R   R   R   R	   Rf   (   R   R   R   t   H(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR   ¿   s
    c         C   s  t  j |  j t d d ƒ ƒ } t  j |  j t d d ƒ ƒ } t  j |  j t d d ƒ ƒ } t  j |  j t d d ƒ ƒ } x“ |  j | | | | g D]x } t  j | d d d g ƒ } t	 t
 | ƒ d d d g ƒ | j d d g ƒ } t	 t
 | ƒ d g ƒ t | j | ƒ q’ Wd  S(   Ni   i   i   i   i   (   R   t   subgraphR   t   rangeRQ   R>   RT   Re   t   induced_subgraphR   RK   R   RX   (   R   t   SGvt   SDGvt   SMGvt   SMDGvR   t   SGt   SSG(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_subgraph_of_subgraphÆ   s     c   
      C   sn  d d d g } d g } t  j |  j | | ƒ } d d d d d g } t  j | | ƒ } | j | ƒ } t | j |  j ƒ t | j |  j ƒ t | j | ƒ t | j | j ƒ |  j j	 ƒ  } | j
 | ƒ | j | ƒ t | j | ƒ | j ƒ | j
 d d d	 d g ƒ t | j | j ƒ |  j j | ƒ } t  j | | | ƒ }	 t |	 j |  j ƒ t |	 j | j ƒ d
 S(   s'   Test subgraph chains that both restrict and show nodes/edges.

        A restricted_view subgraph should allow induced subgraphs using
        G.subgraph that automagically without a chain (meaning the result
        is a subgraph view of the original graph not a subgraph-of-subgraph.
        i   i   i   i   i   i   i    i   i   N(   i   i   (   R   t   restricted_viewR   Rl   Rj   R   RX   R   R   R2   t   remove_nodes_fromt   remove_edges_fromR   (
   R   t
   hide_nodest
   hide_edgest   RGRf   Rq   Rr   t   CGt   SSSGt   RSG(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt'   test_restricted_induced_subgraph_chainsÓ   s(    	c         C   sd   x] |  j  D]R } t j | ƒ } | j d d d g ƒ } | j ƒ  } t t | ƒ t | ƒ ƒ q
 Wd  S(   Ni   i   i   (   Re   R   t   OrderedGraphRj   R2   R   t   type(   R   t   origGR   Rq   Ri   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_subgraph_copyñ   s
    c         C   sl   t  j |  j d d d g ƒ } | j ƒ  } t t | ƒ d d d g ƒ t t | j ƒ d d d d g ƒ d  S(   Ni   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   Rl   R   R@   R   R"   R   (   R   Rq   Rr   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_subgraph_todirectedø   s    c         C   sf   t  j |  j d d d g ƒ } | j ƒ  } t t | ƒ d d d g ƒ t t | j ƒ d d g ƒ d  S(   Ni   i   i   (   i   i   (   i   i   (   R   Rl   R   RR   R   RK   R"   R   (   R   Rq   Rr   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_subgraph_toundirectedþ   s    c         C   su   |  j  j d t ƒ } | j d d d g ƒ } | j ƒ  } t t | ƒ d d d g ƒ t t | j ƒ d d g ƒ d  S(   NR2   i   i   i   (   i   i   (   i   i   (	   RQ   Rb   t   FalseRj   RR   R   RK   R"   R   (   R   R   Rq   Rr   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt"   test_reverse_subgraph_toundirected  s
    c         C   sª   |  j  j d t ƒ } | j d t ƒ } t | j |  j  j ƒ t | j |  j  j ƒ |  j j d t ƒ } | j d t ƒ } t | j |  j j ƒ t | j |  j j ƒ d  S(   NR2   (   RQ   Rb   R„   t   TrueR   Rf   R   RT   (   R   R   Ri   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_reverse_reverse_copy  s    c         C   s~   |  j  j ƒ  } | j d d d g ƒ } | j d d g ƒ } | j ƒ  } t t | ƒ d d g ƒ t t | j ƒ d g ƒ d  S(   Ni   i   i   (   i   i   (   i   i   (   i   i   (	   R   R2   Rj   t   edge_subgraphRR   R   RK   R"   R   (   R   R   Rq   Rr   t   USSG(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt'   test_subgraph_edgesubgraph_toundirected  s    c         C   su   |  j  j ƒ  } | j d d d g ƒ } | j d t ƒ } | j d t ƒ } t t | d ƒ ƒ t t | d ƒ ƒ d  S(   Ni   i   i   t   as_viewRX   (   R   R2   Rj   R†   R„   R   RY   R   (   R   R   Rq   t   CSGt   DCSG(    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_copy_subgraph  s    c         C   su   |  j  j ƒ  } | j d d d g ƒ } | j d t ƒ } | j d t ƒ } t t | d ƒ ƒ t t | d ƒ ƒ d  S(   Ni   i   i   R‹   RX   (   RQ   R2   Rj   R†   R„   R   RY   R   (   R   R   Rq   RŒ   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_copy_disubgraph%  s    c         C   su   |  j  j ƒ  } | j d d d g ƒ } | j d t ƒ } | j d t ƒ } t t | d ƒ ƒ t t | d ƒ ƒ d  S(   Ni   i   i   R‹   RX   (   RT   R2   Rj   R†   R„   R   RY   R   (   R   R   Rq   RŒ   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_copy_multidisubgraph-  s    c         C   su   |  j  j ƒ  } | j d d d g ƒ } | j d t ƒ } | j d t ƒ } t t | d ƒ ƒ t t | d ƒ ƒ d  S(   Ni   i   i   R‹   RX   (   R>   R2   Rj   R†   R„   R   RY   R   (   R   R   Rq   RŒ   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_copy_multisubgraph5  s    c         C   sN   t  j |  j ƒ } t | j j d ƒ | j d t ƒ } t | j j d ƒ d  S(   Nt   OrderedMultiGraphR‹   (   R   R’   R`   R   R1   R.   R2   R†   (   R   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   test_copy_of_view=  s    c            s©   d t  j f ‡  f d †  ƒ  Y‰  xƒ |  j D]x } ˆ  | ƒ } | j d d d g ƒ } | j ƒ  } t | j ƒ  d ƒ t | j ƒ  d ƒ t d | k p d | k ƒ q) Wd  S(   NR*   c              s    e  Z d  „  Z ‡  f d †  Z RS(   c         S   s   d S(   NR+   (    (   R   (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR,   E  s    c            s   ˆ  ƒ  S(   N(    (   R   (   R*   (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR-   G  s    (   R.   R/   R,   R-   (    (   R*   (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR*   D  s   	i   i   i   R+   i   (   R   R   Re   Rj   R2   R   R,   R   (   R   R€   R   Rq   Ri   (    (   R*   sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR7   C  s    (   R.   R/   Rh   R   Rs   R}   R   R‚   Rƒ   R…   R‡   RŠ   RŽ   R   R   R‘   R“   R7   (    (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyR]   ­   s    									
						(   t
   nose.toolsR    R   R   R   R   R   R   R   t   networkxR   t   networkx.testingR   R	   t   objectR
   R8   R?   RP   R]   (    (    (    sE   lib/python2.7/site-packages/networkx/classes/tests/test_graphviews.pyt   <module>   s   - +*