ó
 ,µ[c           @   s~   d  d l  m Z d  d l m Z m Z m Z d  d l Z d  d l m	 Z	 d  d l
 m Z m Z m Z d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   SkipTest(   t   assert_raisest   assert_truet   raisesN(   t   assert_graphs_equal(   t   barbell_grapht   cycle_grapht
   path_grapht   TestConvertNumpyc           B   sò   e  Z e 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 e e j ƒ d „  ƒ Z e e j ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s[   y7 d d  l  a d d  l a d d  l j a t j j a Wn t	 k
 rV t
 d ƒ ‚ n Xd  S(   Niÿÿÿÿs#   SciPy sparse library not available.(   t   numpyt   npt   scipyt   spt   scipy.sparset   sparset   testingt   assert_equalt   np_assert_equalt   ImportErrorR    (   t   cls(    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt
   setupClass
   s    c         C   s^   t  d d ƒ |  _ t d d t j ƒ|  _ |  j t j ƒ  ƒ |  _ |  j t j ƒ  ƒ |  _	 d  S(   Ni
   i   t   create_using(
   R   t   G1R   t   nxt   DiGrapht   G2t   create_weightedt   Grapht   G3t   G4(   t   self(    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   __init__   s    c         C   s0   d t  f d „  ƒ  Y} t t j t j | ƒ d  S(   Nt   Gc           B   s   e  Z d  Z RS(   N(   t   __name__t
   __module__t   Nonet   format(    (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyR       s   (   t   objectR   R   t   NetworkXErrort   to_networkx_graph(   R   R    (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_exceptions   s    c         C   sœ   t  d ƒ } t | j ƒ  ƒ } g  | D] \ } } | ^ q% } g  | D] \ } } | ^ qD } g  | D] } | d ^ qc }	 t | | |	 ƒ }
 | j |
 ƒ | S(   Ni   i
   (   R   t   listt   edgest   zipt   add_weighted_edges_from(   R   R    t   gt   et   ut   vt   sourcet   destt   st   weightt   ex(    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyR   "   s    c         C   s   t  t j | | ƒ ƒ d  S(   N(   R   R   t   is_isomorphic(   R   R   R   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   assert_isomorphic,   s    c         C   sŒ  t  j | d | ƒ} |  j | | ƒ t  j | d | ƒ} |  j | | ƒ t  j d | ƒ j | ƒ } |  j | | ƒ | j ƒ  } t  j d | ƒ j | ƒ } |  j | | ƒ | j ƒ  } t  j d | ƒ j | ƒ } |  j | | ƒ | j ƒ  }	 t  j d | ƒ j |	 ƒ } |  j | | ƒ | j	 ƒ  }
 t  j d | ƒ j |
 ƒ } |  j | | ƒ | j
 ƒ  } t  j d | ƒ j | ƒ } |  j | | ƒ d  S(   NR   i    (   R   t   from_scipy_sparse_matrixR7   R'   t   empty_grapht	   __class__t   tocsrt   tocoot   tocsct   todenset   toarray(   R   R    t   AR   t   GGt   GWt   GIt   ACSRt   ACOOt   ACSCt   ADt   AA(    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   identity_conversion/   s*    c         C   sD   t  j j d d d g d d d g g ƒ } t t j t j | ƒ d S(   s(   Conversion from non-square sparse array.i   i   i   i   i   i   N(   R   R   t
   lil_matrixR   R   R&   R8   (   R   R@   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt
   test_shapeM   s    *c         C   s2   t  j |  j ƒ } |  j |  j | t  j ƒ  ƒ d S(   s0   Conversion from graph to sparse matrix to graph.N(   R   t   to_scipy_sparse_matrixR   RI   R   (   R   R@   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_identity_graph_matrixR   s    c         C   s2   t  j |  j ƒ } |  j |  j | t  j ƒ  ƒ d S(   s4   Conversion from digraph to sparse matrix to digraph.N(   R   RL   R   RI   R   (   R   R@   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_identity_digraph_matrixW   s    c         C   s2   t  j |  j ƒ } |  j |  j | t  j ƒ  ƒ d S(   sB   Conversion from weighted graph to sparse matrix to weighted graph.N(   R   RL   R   RI   R   (   R   R@   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt#   test_identity_weighted_graph_matrix\   s    c         C   s2   t  j |  j ƒ } |  j |  j | t  j ƒ  ƒ d S(   sF   Conversion from weighted digraph to sparse matrix to weighted digraph.N(   R   RL   R   RI   R   (   R   R@   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt%   test_identity_weighted_digraph_matrixa   s    c         C   s   t  d ƒ } t  d ƒ } t | j ƒ  ƒ } t j | d | ƒ} t j | ƒ } |  j | | ƒ | | d g 7} t t j t j	 | d | ƒd S(   s>   Conversion from graph to sparse matrix to graph with nodelist.i   i   t   nodelisti    N(
   R   R)   t   nodesR   RL   R   R7   R   R&   t   to_numpy_matrix(   R   t   P4t   P3RQ   R@   t   GA(    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_nodelistf   s    c         C   sÂ   t  j ƒ  } | j d „  t d ƒ Dƒ ƒ t d ƒ } t  j | ƒ } t | j ƒ  t  j | d d  ƒj ƒ  ƒ t d | j ƒ  t  j | ƒ j ƒ  ƒ t d | j ƒ  t  j | d d ƒj ƒ  ƒ d  S(   Nc         s   s1   |  ]' } | | d  t  d d d d ƒ f Vq d S(   i   R4   g      à?t   otherg333333Ó?N(   t   dict(   t   .0t   n(    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pys	   <genexpr>v   s   i   i   R4   g      à?g333333Ó?RX   (	   R   R   t   add_edges_fromt   rangeR   RL   R   R>   R#   (   R   t   WP4RT   R@   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_weight_keywordt   s    c         C   sä  t  j ƒ  } | j d „  t d ƒ Dƒ ƒ t d ƒ } t  j | d d ƒ} t | j ƒ  t  j | d d  ƒj ƒ  ƒ t  j | d d ƒ} t | j ƒ  t  j | d d  ƒj ƒ  ƒ t  j | d d ƒ} t | j ƒ  t  j | d d  ƒj ƒ  ƒ t  j | d d	 ƒ} t | j ƒ  t  j | d d  ƒj ƒ  ƒ t  j | d d
 ƒ} t | j ƒ  t  j | d d  ƒj ƒ  ƒ t  j | d d ƒ} t | j ƒ  t  j | d d  ƒj ƒ  ƒ t  j | d d ƒ} t | j ƒ  t  j | d d  ƒj ƒ  ƒ d  S(   Nc         s   s1   |  ]' } | | d  t  d d d d ƒ f Vq d S(   i   R4   g      à?RX   g333333Ó?N(   RY   (   RZ   R[   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pys	   <genexpr>ƒ   s   i   i   R$   t   csrR4   t   csct   coot   bsrt   lilt   diat   dok(	   R   R   R\   R]   R   RL   R   R>   R#   (   R   R^   RT   R@   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_format_keyword   s2    c         C   sL   t  j ƒ  } | j d „  t d ƒ Dƒ ƒ t d ƒ } t  j | d d ƒd  S(   Nc         s   s1   |  ]' } | | d  t  d d d d ƒ f Vq d S(   i   R4   g      à?RX   g333333Ó?N(   RY   (   RZ   R[   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pys	   <genexpr>¥   s   i   i   R$   t	   any_other(   R   R   R\   R]   R   RL   (   R   R^   RT   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_format_keyword_raise¢   s
    c         C   s   t  j t  j ƒ  ƒ d  S(   N(   R   RL   R   (   R   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_null_raiseª   s    c         C   sN   t  j ƒ  } | j d ƒ t  j | ƒ } t | j ƒ  t j d g g ƒ ƒ d  S(   Ni   i    (   R   R   t   add_nodeRL   R   R>   R
   t   matrix(   R   R    t   M(    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt
   test_empty®   s    c         C   sž   t  j ƒ  } | j d d ƒ | j d d ƒ | j d d ƒ t  j | d d d d g ƒ} t | j ƒ  t j d d d g d d d g d d d g g ƒ ƒ d  S(   Ni   i   i   RQ   i    (   R   R   t   add_edgeRL   R   R>   R
   Rl   (   R   R    Rm   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_ordering´   s    c         C   sG   t  j d g ƒ } t  j | ƒ } t | j ƒ  t j d g g ƒ ƒ d  S(   Ni   (   i   i   (   R   R   RL   R   R>   R
   Rl   (   R   R    Rm   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_selfloop_graph¼   s    c         C   sG   t  j d g ƒ } t  j | ƒ } t | j ƒ  t j d g g ƒ ƒ d  S(   Ni   (   i   i   (   R   R   RL   R   R>   R
   Rl   (   R   R    Rm   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_selfloop_digraphÁ   s    c         C   s¼  t  j d d g d d g g ƒ } t j ƒ  } d d	 d
 g } | j g  | D] \ } } | | d f ^ qI ƒ | j d d d d ƒt j | d t d t j ƒ} t | | ƒ t j | d t	 d t j ƒ} t | | ƒ d d d d d g } t j
 ƒ  } | j g  | D] \ } } | | d f ^ qƒ t j | d t d t j
 ƒ} t | | ƒ t j
 ƒ  } | j t | ƒ d d ƒd | d d d d <t j | d t	 d t j
 ƒ} t | | ƒ d S(   s²   Tests that the :func:`networkx.from_scipy_sparse_matrix` function
        interprets integer weights as the number of parallel edges when
        creating a multigraph.

        i   i   i    R4   t   parallel_edgesR   N(   i    i    (   i    i   (   i   i    (   i    i    (   i    i   (   i   i    (   i   i   (   i   i   (   R   t
   csr_matrixR   R   R,   Ro   R8   t   TrueR   t   Falset   MultiDiGraphR\   t   set(   R   R@   t   expectedR*   R/   R0   t   actual(    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt,   test_from_scipy_sparse_matrix_parallel_edgesÆ   s.    !//c         C   sl   t  j d d g d d g g ƒ } t j | d t j ƒ} t j ƒ  } | j d d d d ƒt | | ƒ d S(   s£   Tests that a symmetric matrix has edges added only once to an
        undirected multigraph when using
        :func:`networkx.from_scipy_sparse_matrix`.

        i    i   R   R4   N(   R   Rt   R   R8   t
   MultiGraphRo   R   (   R   R@   R    Ry   (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   test_symmetricê   s
    !(   R!   R"   t   classmethodR   R   R(   R   R7   RI   RK   RM   RN   RO   RP   RW   R_   Rg   R   R   R&   Ri   Rj   Rn   Rp   Rq   Rr   R{   R}   (    (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyR   	   s,   			
										!					$(   t   noseR    t
   nose.toolsR   R   R   t   networkxR   t   networkx.testingR   t   networkx.generators.classicR   R   R   R%   R   (    (    (    s@   lib/python2.7/site-packages/networkx/tests/test_convert_scipy.pyt   <module>   s
   