
J~Pc           @   sn  d  d l  Z  d  d l Z d  d l m Z m Z m Z m Z m Z m Z d  d l	 m
 Z
 m Z m Z d  d l m Z m Z m Z e d d d d d	 d
 d d d d d d i e
 d 6e d 6e d 6d dA d d d i g  e d d  D] Z e e  ^ q d 6e e d d   d 6g  e d d  D] Z e e  ^ qd 6d e d  
e d d d  d d	 d d	 d
 d d d! d d" d i e d# 6e d$ 6e d% 6d dB d i d* d+ d, g d# 6d- d. d/ g d$ 6d0 d1 d2 g d% 6d e d d3  
e d4 d d	 d d	 d
 d5 d d	 d d d i e
 d6 6e d 6e d 6d dC d d f Z e d;  f Z d< e j f d=     YZ d>   Z d? d@  Z d S(D   iN(   t
   DataSourcet   Envelopet   OGRGeometryt   OGRExceptiont   OGRIndexErrort   GDAL_VERSION(   t   OFTRealt
   OFTIntegert	   OFTString(   t   get_ds_filet   TestDSt	   TEST_DATAt
   test_pointt   nfeati   t   nfldi   t   geomt   POINTt   gtypei   t   drivers   ESRI Shapefilet   fieldst   dblt   intt   strt   extentg|
guS?g; ^gJ^b?t   srs_wkts   GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]t   field_valuesi   t   fidst   test_vrtt   extt   vrtt   Point25Dt   VRTt   POINT_Xt   POINT_Yt   NUMg      ?g       @g      Y@g     \@s   1.0s   5.0s   100.0s   2.0s   23.0s   523.5t   5t   17t   23i   t	   test_polyt   POLYGONt   floatgs=gD$g OZ?g^iN?t   foot   DataSourceTestc           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   x t  D] } t | j  } |  j d t |   |  j | j | j  |  j | j t | j   y | t |  Wn t k
 r q X|  j	 d  q Wd S(   s$   Testing valid SHP Data Source files.i   s   Expected an IndexError!N(
   t   ds_listR    t   dst   assertEqualt   lent   nameR   R   R   t   fail(   t   selft   sourceR,   (    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   test01_valid_shp    s    c         C   s+   x$ t  D] } |  j t t | j  q Wd S(   s.   Testing invalid SHP files for the Data Source.N(   t   bad_dst   assertRaisesR   R    R,   (   R1   R2   (    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   test02_invalid_shp8   s    c      
   C   si  xbt  D]Z} t | j  } xB| D]:} |  j t |  | j  |  j | j | j  |  j | j t | j   | j	 d k r t
 d k r t
 d k  r n |  j t t | j t   |  j | j d | j j d  |  j | j d | j j d  |  j | j d | j j d  |  j | j d | j j d  | j } x' | D] } |  j t | | j k  qJW|  j t | j d  |  j t | j d	  t | d
  r# | j j   } x. | D]& } |  j | j | | j |   qWxr t | j  D]^ \ } }	 | |	 }
 |  j |	 |
 j  x2 | D]* } |  j | j | | |
 j |   q(WqWq# q# Wq Wd S(   s   Testing Data Source Layers.R   i   i   i    i   i   i   iiP  R   N(   i   i   i    (   i   i   i   (   R+   R    R,   R-   R.   R   R   t
   num_fieldsR   R   R   t   Truet
   isinstanceR   R   t   assertAlmostEqualt   min_xt   min_yt   max_xt   max_yR5   R   t   __getitem__t   hasattrR   t   keyst
   get_fieldst	   enumerateR   t   fidt   get(   R1   R2   R,   t   layert   fldst   ft	   fld_namest   fld_namet   iRD   t   feat(    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   test03a_layers=   s6    '    	 $
c   	      C   s   t  d } t | j  } t d d  } | d | } xX | d j D]I } g  | D] } | j |  ^ qQ } | j | | } |  j | |  qD Wd S(   s$   Test indexing and slicing on Layers.i    i   i   N(   R+   R    R,   t   sliceR   RE   R   R-   (	   R1   R2   R,   t   slt   featsRJ   RL   t	   test_valst   control_vals(    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   test03b_layer_slicep   s    
"c            sv   t  d     f d   } |   } |  j   j t |   |  j   j | j j  |  j t | d d  d  d S(   sS   
        Ensure OGR objects keep references to the objects they belong to.
        i    c             s   t    j  }  |  d S(   Ni    (   R    R,   (   R,   (   R2   (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt	   get_layer   s    R   t   1N(   R+   R-   R   R.   R   t	   geom_typet   numR   (   R1   RT   t   lyr(    (   R2   s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   test03c_layer_references   s    
	c      	   C   s   x t  D] } t | j  } x | D] } x | D] } |  j | j t t |    |  j | j | j  x: | j	 j
   D]) \ } } |  j t t | | |   q{ Wx0 | D]( } |  j t | j | j	 j   k  q Wq0 Wq# Wq Wd S(   s   Testing Data Source Features.N(   R+   R    R,   R-   R   R.   t   listR   RV   R   t   itemsR8   R9   R/   RA   (   R1   R2   R,   RF   RL   t   kt   vt   fld(    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   test04_features   s    !c         C   s   x t  D] } t | j  } x | D] } xz | D]r } | j } |  j | j | j  |  j | j | j  t | d  r0 |  j | j	 | j
 j j d d   q0 q0 Wq# Wq Wd S(   s-   Testing Geometries from Data Source Features.R   s   SPHEROID["WGS_84"s   SPHEROID["WGS_1984"N(   R+   R    R,   R   R-   t	   geom_nameR   RV   R@   R   t   srst   wktt   replace(   R1   R2   R,   RF   RL   t   g(    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   test05_geometries   s    	c         C   sx  t  t d d   } | d } |  j d | j  |  j t | j d  |  j t | j t	 t
 d    d } d | _ |  j t j |  | j  g  | D] } | ^ q } |  j d
 t |   |  j d | d j d   t d  } | | _ |  j | | j  g  | D] } | ^ q} |  j d
 t |   |  j d | d j d   d | _ |  j d t |   d S(   s*   Testing the Layer.spatial_filter property.t   citiest   shpi    R)   i   grfZgAmߣB@grYgAmߣC@i   t   Pueblot   Namess   POLYGON((-96.363151 28.763374,-94.363151 28.763374,-94.363151 30.763374,-96.363151 30.763374,-96.363151 28.763374))t   Houstoni   N(   grfZgAmߣB@grYgAmߣC@(   grfZgAmߣB@grYgAmߣC@(   R    R	   R-   t   Nonet   spatial_filterR5   t	   TypeErrort   _set_spatial_filtert
   ValueErrorRZ   t   rangeR   t	   from_bboxR.   RE   (   R1   R,   RX   t   filter_extentRL   RP   t   filter_geom(    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   test06_spatial_filter   s&    
"			c         C   sF   t  t j j t d   } | d d } |  j d | j d   d S(   sD   Testing that OFTReal fields, treated as OFTInteger, do not overflow.s	   texas.dbfi    IH   t   ALAND10N(   R    t   ost   patht   joinR   R-   RE   (   R1   R,   RL   (    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   test07_integer_overflow   s    (   t   __name__t
   __module__R3   R6   RM   RS   RY   R_   Re   Rt   Ry   (    (    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyR*      s   			3					#c          C   s&   t  j   }  |  j t  j t   |  S(   N(   t   unittestt	   TestSuitet   addTestt	   makeSuiteR*   (   t   s(    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   suite   s    i   c         C   s    t  j d |   j t    d  S(   Nt	   verbosity(   R|   t   TextTestRunnert   runR   (   R   (    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyR      s    (   g|
guS?g; ^gJ^b?(   g      ?g       @g      Y@g     \@(   gs=gD$g OZ?g^iN?(   Rv   R|   t   django.contrib.gis.gdalR    R   R   R   R   R   t   django.contrib.gis.gdal.fieldR   R   R   t%   django.contrib.gis.geometry.test_dataR	   R
   R   Rp   RK   R(   RZ   R   R+   R4   t   TestCaseR*   R   R   (    (    (    s>   ../Django//lib/python/django/contrib/gis/gdal/tests/test_ds.pyt   <module>   s0   .'n-6!	