
 ,[c           @   s   d  Z  d d l Z d d l Z d d l m Z d d l m Z d d l m Z d d l Z	 d e
 f d     YZ e e  d    Z d	 e
 f d
     YZ d e
 f d     YZ d S(   s   Unit tests for shp.
iN(   t   SkipTest(   t   assert_equal(   t   raisest   TestShpc           B   sh   e  Z e d     Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z RS(
   c         C   s8   y d d l  m a Wn t k
 r3 t d   n Xd  S(   Ni(   t   ogrs   ogr not available.(   t   osgeoR   t   ImportErrorR    (   t   cls(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt
   setupClass   s    c         G   s7   x0 | D]( } t  j j |  r | j |  q q Wd  S(   N(   t   ost   patht   existst   DeleteDataSource(   t   selft   drvt   pathst   p(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt	   deletetmp   s    c         C   s  t  j d  } t  j d  } t j j t j   d  } t j j t j   d  } t j j t j   d  } |  j | | | |  t j	 |  d d d d g |  _
 d d g d d g d d d g f |  _ d d d g |  _ d d g d d g d d g f |  _ d d d d g |  _ | j |  } | |  } x t |  j |  j
  D]{ \ } }	 t  j | j    }
 t  j t  j  } x | D] } | j |   qW|
 j |  |
 j d |	  | j |
  qJW| j |  } | | t  j  } t  j t  j  } xN |  j D]C } t  j t  j  } x | D] } | j |   q%W| j |  qWt  j | j    } | j |  | j d d  | j |  | |  _ | |  _ | |  _ | |  _ d  S(   Nc         S   sH   |  j  d d  |  } t j d t j  } | j d  | j |  | S(   Nt   edgest   Namei    (   t   CreateLayert   NoneR   t	   FieldDefnt	   OFTStringt   SetWidtht   CreateField(   t   drivert	   layerTypet   lyrt   namedef(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   createlayer   s
    s   ESRI Shapefilet   shpdirs
   tmpshp.shps   tmp_mshp.shpt   at   bt   cg      ?g       @g      @g?g      @R   (   g      ?g      ?(   g       @g       @(   g       @g       @(   g      @g      @(   g?g?(   g      @g?(   g      @g       @(   g      ?g      ?(   g       @g       @(   g       @g       @(   g      @g      @(   g?g?(   g      @g       @(   R   t   wkbLineStringt   GetDriverByNameR	   R
   t   joint   tempfilet
   gettempdirR   t   mkdirt   namesR   t   simplified_namest   simplified_pathst   multi_namest   CreateDataSourcet   zipt   Featuret   GetLayerDefnt   Geometryt   AddPoint_2Dt   SetGeometryt   SetFieldt   CreateFeaturet   wkbMultiLineStringt   AddGeometryt   shppatht   multi_shppatht   testdirR   (   R   R   R   R:   R8   R9   t   shpR   R
   t   namet   featt   gR   t	   multi_shpt	   multi_lyrt   multi_gt
   multi_feat(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   setUp   sT    				"			c         C   s   d   } t  j |  j  } | | |  j |  j  t  j |  j d t } | | |  j |  j  t  j |  j d t } | | |  j |  j	  d  S(   Nc         S   s   t  j   } x | D] } t  j | |  q Wt t | j  t |  j   t t | j    t |  j     g  |  j   D]" \ } } |  j | |  d ^ q~ } t | t |   d  S(   NR   (   t   nxt   DiGrapht   add_pathR   t   sortedt   nodesR   t   get_edge_data(   R>   R   R)   t   expectedR   t   st   et   g_names(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   compare_graph_paths_names^   s    %5t   simplify(
   RD   t   read_shpR8   R+   R*   t   FalseR   R)   R9   R,   (   R   RN   t   G(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   testload\   s    	

c         C   sa   | j    } g  } x/ | rC | j | j   j    | j    } q Wt t |  t |   d  S(   N(   t   GetNextFeaturet   appendt   GetGeometryReft   ExportToWktR   RG   (   R   R   RJ   t   featuret	   actualwkt(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt	   checkgeomt   s    	c         C   s  d } d } d } d } t  j j t j   d  } t j |  j  } t j | |  t	 j
 |  } |  j | j d  |  |  j | j d  |  t j |  j d t } t j | |  t	 j
 |  } |  j | j d  |  |  j | j d  |  d  S(   Ns   POINT (1 1)s   POINT (2 2)s   POINT (3 3)s   POINT (0.9 0.9)s   POINT (4 2)s   LINESTRING (1 1,2 2)s   LINESTRING (2 2,3 3)s    LINESTRING (0.9 0.9,4.0 0.9,4 2)s   POINT (4.0 0.9)s   LINESTRING (0.9 0.9,4.0 0.9)s   LINESTRING (4.0 0.9,4 2)R   RH   R   RO   (   s   POINT (1 1)s   POINT (2 2)s   POINT (3 3)s   POINT (0.9 0.9)s   POINT (4 2)(   s   LINESTRING (1 1,2 2)s   LINESTRING (2 2,3 3)s    LINESTRING (0.9 0.9,4.0 0.9,4 2)(   s   POINT (1 1)s   POINT (2 2)s   POINT (3 3)s   POINT (0.9 0.9)s   POINT (4.0 0.9)s   POINT (4 2)(   s   LINESTRING (1 1,2 2)s   LINESTRING (2 2,3 3)s   LINESTRING (0.9 0.9,4.0 0.9)s   LINESTRING (4.0 0.9,4 2)(   R	   R
   R%   R&   R'   RD   RP   R8   t	   write_shpR   t   OpenRZ   t   GetLayerByNameRQ   (   R   t   expectedpoints_simplet   expectedlines_simplet   expectedpointst   expectedlinest   tpathRR   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   test_geometryexport|   s:                  c         C   su   d   } t  j j t j   d  } t j |  j  } t j | |  t	 j
 |  } | j d  } | | |  d  S(   Nc         S   s   |  j    } x | r g  } | j   } | j   d } | j d  | j |  f } | j d  } t | j |   d |  |  j    } q Wd  S(   Ni   i    R   (   RT   RV   t   GetPointCountt   GetPoint_2Dt   GetFieldAsStringR   RI   (   R   t   graphRX   t   coordst   reft   lastt
   edge_nodesR<   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   testattributes   s    	R   R   (   R	   R
   R%   R&   R'   RD   RP   R8   R[   R   R\   R]   (   R   Rl   Rb   RR   R   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   test_attributeexport   s    	c   
      C   s   t  j j t j   d  } t j   } d } d	 } d
 } | j | |  | j | |  d } x* | j d t	  D] \ } } | | d <qr Wt j
 | |  t j |  }	 x1 |	 j d t	  D] \ } } t | d |  q Wd  S(   NR   i    i   i   t
   node_labelt   datat   label(   i    i    (   i   i   (   i   i   (   R	   R
   R%   R&   R'   RD   RE   t   add_edgeRH   t   TrueR[   RP   R   (
   R   Rb   RR   t   At   Bt   CRp   t   nt   dt   H(    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   test_nodeattributeexport   s    c         C   s   t  j   } t j j t j   d  } d } d } | j d d | d | j d d | d | j d d d | d y t  j	 | |  Wn% t
 k
 r } t s t |   n Xt j |  } |  j | j d	  |  |  j | j d
  |  d  S(   NR   s   POINT (0.9 0.9)s   POINT (4 2)s   LINESTRING (0.9 0.9,4 2)i   t   Wkti    i   RH   R   (   s   POINT (0.9 0.9)s   POINT (4 2)(   s   LINESTRING (0.9 0.9,4 2)(   RD   RE   R	   R
   R%   R&   R'   t   add_nodeRq   R[   t	   ExceptionRQ   t   AssertionErrorR   R\   RZ   R]   (   R   RR   Rb   t   pointst   lineRL   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   test_wkt_export   s     c         C   s    |  j  |  j |  j |  j  d  S(   N(   R   R   R:   R8   (   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   tearDown   s    (   t   __name__t
   __module__t   classmethodR   R   RC   RS   RZ   Rc   Rm   Ry   R   R   (    (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR      s   		A			,			c          C   sG   y d d l  m }  Wn t k
 r3 t d   n Xt j d  } d  S(   Ni(   R   s   ogr not available.t)   hopefully_this_file_will_not_be_available(   R   R   R   R    RD   RP   (   R   RR   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   test_read_shp_nofile   s
    t   TestMissingGeometryc           B   s\   e  Z e d     Z d   Z d   Z d   Z d   Z d   Z e	 e
 j  d    Z RS(   c         C   s8   y d d l  m a Wn t k
 r3 t d   n Xd  S(   Ni(   R   s   ogr not available.(   R   R   R   R    (   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   setup_class   s    c         C   s"   |  j    |  j   |  j   d  S(   N(   t
   setup_patht   delete_shapedirt   create_shapedir(   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyRC      s    

c         C   s   |  j    d  S(   N(   R   (   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR      s    c         C   s"   t  j j t j   d  |  _ d  S(   Nt   missing_geometry(   R	   R
   R%   R&   R'   (   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR     s    c         C   sv   t  j d  } | j |  j  } | j d d  t  j  } t  j | j    } | j	 d   | j
 |  | j   d  S(   Ns   ESRI ShapefileRH   (   R   R$   R-   R
   R   R   t   wkbPointR/   R0   R3   R5   t   Destroy(   R   R   R;   R   RX   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR     s    c         C   s;   t  j d  } t j j |  j  r7 | j |  j  n  d  S(   Ns   ESRI Shapefile(   R   R$   R	   R
   R   R   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR     s    c         C   s   t  j |  j  } d  S(   N(   RD   RP   R
   (   R   RR   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   test_missing_geometry  s    (   R   R   R   R   RC   R   R   R   R   R   RD   t   NetworkXErrorR   (    (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR      s   						t   TestMissingAttrWritec           B   sD   e  Z e d     Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   s8   y d d l  m a Wn t k
 r3 t d   n Xd  S(   Ni(   R   s   ogr not available.(   R   R   R   R    (   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR     s    c         C   s   |  j    |  j   d  S(   N(   R   R   (   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyRC   !  s    
c         C   s   |  j    d  S(   N(   R   (   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR   %  s    c         C   s"   t  j j t j   d  |  _ d  S(   Nt   missing_attributes(   R	   R
   R%   R&   R'   (   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR   (  s    c         C   s;   t  j d  } t j j |  j  r7 | j |  j  n  d  S(   Ns   ESRI Shapefile(   R   R$   R	   R
   R   R   (   R   R   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR   +  s    c   	      C   s   t  j   } d } d } d	 } | j | | d d | j | |  t  j | |  j  t  j |  j  } x{ | j d t  D]g \ } } } | | k r | | k r t | d d  n  | | k r| | | k r| t | d d   q| q| Wd  S(
   Ni    i   i   t   fooid   Ro   (   i    i    (   i   i   (   i   i   (
   RD   RE   Rq   R[   R
   RP   R   Rr   R   R   (	   R   RR   Rs   Rt   Ru   Rx   t   ut   vRw   (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   test_missing_attributes0  s    "(	   R   R   R   R   RC   R   R   R   R   (    (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyR     s   				(   t   __doc__R	   R&   t   noseR    t
   nose.toolsR   R   t   networkxRD   t   objectR   t   RuntimeErrorR   R   R   (    (    (    s@   lib/python2.7/site-packages/networkx/readwrite/tests/test_shp.pyt   <module>   s   	'