ó
ø¢TQc           @  sy  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z m Z d  d l m	 Z	 d  d l
 m Z d  d l m Z m Z m Z m Z m Z m Z m Z m Z 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  d  d	 l! m" Z" d  d
 l# m$ Z$ d  d l% m& Z& d  d l' m( Z( d  d l% m) Z) d e) j* e" f d „  ƒ  YZ+ d „  Z, d d „ Z- d S(   iÿÿÿÿ(   t   unicode_literalsN(   t   a2b_hext   b2a_hex(   t   BytesIO(   t
   memoryview(   t   GEOSExceptiont   GEOSIndexErrort   GEOSGeometryt   GeometryCollectiont   Pointt
   MultiPointt   Polygont   MultiPolygont
   LinearRingt
   LineStringt   MultiLineStringt   fromfilet   fromstrt   geos_version_info(   t   gdalt   numpyt   GEOSBase(   t   GEOS_PREPARE(   t   TestDataMixin(   t   force_bytes(   t   six(   t   xrange(   t   unittestt   GEOSTestc           B  sy  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 e j e j d ƒ 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! d „  Z" d „  Z# d „  Z$ d „  Z% d  „  Z& d! „  Z' d" „  Z( d# „  Z) d$ „  Z* d% „  Z+ d& „  Z, e j e j d ƒ d' „  ƒ Z- d( „  Z. e j e j d) ƒ d* „  ƒ Z/ e j e j d) ƒ d+ „  ƒ Z0 d, „  Z1 d- „  Z2 d. „  Z3 d/ „  Z4 d0 „  Z5 e j e6 d1 ƒ d2 „  ƒ Z7 d3 „  Z8 e j e6 d1 ƒ d4 „  ƒ Z9 e j e: ƒ  d5 d6 k d7 ƒ d8 „  ƒ Z; d9 „  Z< RS(:   c         C  s/   t  ƒ  } | d d k r' | d r' d Sd Sd S(   u‡   
        Returns the proper null SRID depending on the GEOS version.
        See the comments in `test_srid` for more details.
        u   versionu   3.0.0u   release_candidateiÿÿÿÿN(   R   t   None(   t   selft   info(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt	   null_srid   s    	c           s  d t  f d „  ƒ  Y} t j t j ƒ ‰  d t  f ‡  f d †  ƒ  Y} | ƒ  } | ƒ  } t j ƒ  | _ d | _ ˆ  t j d ƒ ƒ | _ d | _ x' | | f D] } |  j t | j	 ƒ qœ Wd t j
 d ƒ f } x: | D]2 } |  j t | j | ƒ |  j t | j | ƒ qÕ Wd S(	   u   Tests out the GEOSBase class.t	   FakeGeom1c           B  s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyR!   )   s   t	   FakeGeom2c             s   e  Z ˆ  Z RS(    (   R"   R#   t   ptr_type(    (   t	   c_float_p(    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyR$   .   s   gìQ¸…ë@i   t   foobarN(   R   t   ctypest   POINTERt   c_floatt   c_void_pt   ptrR   t   assertRaisesR   t   _get_ptrt   c_char_pt	   TypeErrort   _set_ptr(   R   R!   R$   t   fg1t   fg2t   fgt   bad_ptrst   bad_ptr(    (   R&   s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt	   test_base%   s    				c         C  s@   x9 |  j  j D]+ } t | j ƒ } |  j | j | j ƒ q Wd S(   u   Testing WKT output.N(   t
   geometriest   wkt_outR   t   wktt   assertEqualt   ewkt(   R   t   gt   geom(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_wktO   s    c         C  sF   x? |  j  j D]1 } t | j ƒ } |  j | j | j j ƒ  ƒ q Wd S(   u   Testing HEX output.N(   R8   t   hex_wktR   R:   R;   t   hext   decode(   R   R=   R>   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_hexU   s    c   	      C  ss  d } d } d } d } t  d d d d ƒ} t  d d d	 d d ƒ} |  j | | j ƒ |  j | | j ƒ |  j | | j ƒ t r³ |  j | | j ƒ |  j t t | ƒ j ƒ n. y | j } Wn t k
 rÓ n X|  j	 d
 ƒ |  j t
 t | ƒ ƒ | j ƒ t r(|  j t
 t | ƒ ƒ | j ƒ n. y | j } Wn t k
 rHn X|  j	 d ƒ |  j d t | ƒ j ƒ d S(   u   Testing (HEX)EWKB output.t*   01010000000000000000000000000000000000F03Ft:   01010000800000000000000000000000000000F03F0000000000000040t2   0101000020E61000000000000000000000000000000000F03FtB   01010000A0E61000000000000000000000000000000000F03F0000000000000040i    i   t   sridiæ  i   u!   Should have raised GEOSException.u    Should have raised GEOSExceptionN(   R	   R;   RA   t   hexewkbR   t   TrueR   t   haszR   t   failR   R   t   ewkbRH   (	   R   t   ogc_hext
   ogc_hex_3dt
   hexewkb_2dt
   hexewkb_3dt   pnt_2dt   pnt_3dRI   RM   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_hexewkb[   s4    "c         C  sX   xQ |  j  j D]C } t | j ƒ } t | d t ƒ } | r |  j | | j ƒ q q Wd S(   u   Testing KML output.u   kmlN(   R8   R9   R   R:   t   getattrt   FalseR;   t   kml(   R   t   tgR>   RW   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_kmlŒ   s
     c         C  sž   x? |  j  j D]1 } |  j t t f ƒ  t | j ƒ } Wd QXq W|  j t t t d ƒ ƒ d t	 f d „  ƒ  Y} |  j t
 t | ƒ  ƒ |  j t
 t d ƒ d S(   u   Testing the Error handlers.Nt   0t   NotAGeometryc           B  s   e  Z RS(    (   R"   R#   (    (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyR[      s   (   R8   t   errorsR-   R   t
   ValueErrorR   R:   R   R   t   objectR0   R   (   R   t   errt   _R[   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_errors“   s    c         C  sX   xQ |  j  j D]C } t | j ƒ } | j } |  j t | ƒ j ƒ  j ƒ  | j	 ƒ q Wd S(   u   Testing WKB output.N(
   R8   R@   R   R:   t   wkbR;   R   RB   t   upperRA   (   R   R=   R>   Rb   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_wkb¥   s    	c         C  sO   xH |  j  j D]: } t | j ƒ } t | j ƒ } |  j | j | j ƒ q Wd S(   u   Testing creation from HEX.N(   R8   R@   R   RA   R   R:   R;   (   R   R=   t   geom_ht   geom_t(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_create_hex¬   s    c         C  sg   x` |  j  j D]R } t t | j j ƒ  ƒ ƒ } t | ƒ } t | j ƒ } |  j	 | j | j ƒ q Wd S(   u   Testing creation from WKB.N(
   R8   R@   R   R   RA   t   encodeR   R   R:   R;   (   R   R=   Rb   Re   Rf   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_create_wkb´   s
    c         C  s–   d } x‰ | D] } xx |  j  j D]j } d | | j f } t | ƒ } |  j | | j ƒ |  j | | j j ƒ |  j | t | j ƒ j ƒ q  Wq Wd S(   u   Testing EWKT.iÿÿÿÿiŒ}  u
   SRID=%d;%sN(   iÿÿÿÿiŒ}  (   R8   t   polygonsR:   R   R;   RH   t   shellR<   (   R   t   sridsRH   t   pR<   t   poly(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt	   test_ewkt½   s    u   gdal is requiredc         C  s®   x§ |  j  j D]™ } t | j ƒ } t | d ƒ s„ |  j t j | j ƒ t j | j ƒ ƒ |  j t j | j ƒ t j | j ƒ ƒ n  |  j t | j ƒ t | j ƒ ƒ q Wd S(   u(   Testing GeoJSON input/output (via GDAL).u	   not_equalN(	   R8   t
   json_geomsR   R:   t   hasattrR;   t   jsont   loadst   geojson(   R   R=   R>   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt	   test_jsonÈ   s    (+c         C  sŽ   t  d ƒ } t ƒ  } | j t | j ƒ ƒ t ƒ  } | j t | j ƒ ƒ x= | | f D]/ } | j d ƒ t | ƒ } |  j	 | | ƒ qW Wd S(   u   Testing the fromfile() factory.u   POINT(5 23)i    N(
   R   R   t   writeR   R:   t   bytesRb   t   seekR   R;   (   R   t   ref_pntt   wkt_ft   wkb_ft   fht   pnt(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_fromfileÓ   s    		c         C  s°   t  d ƒ } |  j | | j ƒ |  j | d ƒ t  d ƒ } |  j | | j ƒ |  j | d ƒ xK | | f D]= } |  j | d ƒ |  j | i d d 6ƒ |  j | t ƒ qk Wd S(   u   Testing equivalence.u   POINT(5 23)u   foou   LINESTRING(0 0, 1 1, 5 5)u   barN(   R   R;   R:   t   assertNotEqualR   RV   (   R   Rm   t   lsR=   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_eqã   s    c   	      C  sŠ  t  d ƒ } xw|  j j D]i} t  | j ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j | j ƒ |  j | j | j ƒ |  j t	 | t  | j ƒ k ƒ |  j t
 | | k ƒ |  j | j | j d d ƒ |  j | j | j d d ƒ t | d ƒ rk|  j t	 | j ƒ |  j | j | j ƒ |  j | j | j d d ƒ | j | j | j f } d } d } nD |  j t
 | j ƒ |  j d | j ƒ | j | j f } d } d } |  j | j | j j ƒ t | ƒ } t | Œ  } |  j t	 | | k ƒ |  j t	 | | k ƒ d	 | _ d | _ |  j d	 | j ƒ |  j d | j ƒ | | _ |  j | | j ƒ | | _ |  j | | j ƒ | } q Wd S(   u   Testing Point objects.u
   POINT(0 0)u   Pointi    i	   i   u   zi   g®Gáz®@g…ëQ¸	@gìQ¸…ë@N(   g®Gáz®@g…ëQ¸	@gìQ¸…ë@(   gìQ¸…ë@g®Gáz®@g…ëQ¸	@(   g®Gáz®@g…ëQ¸	@(   g…ëQ¸	@g®Gáz®@(   R   R8   t   pointsR:   R;   t	   geom_typet   geom_typeidt   xt   yRJ   RV   t   assertAlmostEqualt   tupleRq   RK   t   zR   t   centroidR	   t   coords(	   R   t   prevRm   R}   t   tup_argst   set_tup1t   set_tup2t   pnt2t   pnt3(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_pointsò   sJ    					c         C  sM  xF|  j  j D]8} t | j ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j d | j j	 d d ƒ |  j | j d | j j	 d d ƒ |  j
 t | j t | ƒ ƒ |  j | j | j j	 ƒ |  j | j t	 d „  | Dƒ ƒ ƒ xZ | D]R } |  j | j d ƒ |  j | j d ƒ |  j | j t ƒ |  j | j t ƒ qï Wq Wd S(	   u   Testing MultiPoint objects.u
   MultiPointi   i    i	   i   c         s  s   |  ] } | j  Vq d  S(   N(   Rˆ   (   t   .0t   m(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pys	   <genexpr>5  s    u   PointN(   R8   t   multipointsR   R:   R;   Rƒ   R„   R‡   RŠ   Rˆ   R-   R   t   __getitem__t   lenR‹   t   emptyRV   t   validRJ   (   R   t   mpt   mpntRm   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_multipoints)  s    $$#c         C  sê  t  d ƒ } x×|  j j D]É} t  | j ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j t ƒ |  j | j	 t ƒ t
 | d ƒ r¥ |  j | j | j j ƒ n  t
 | d ƒ rÍ |  j | j | j ƒ n  |  j t | t  | j ƒ k ƒ |  j t | | k ƒ |  j t | j t | ƒ ƒ | } |  j | t | j ƒ ƒ |  j | t | j Œ  ƒ |  j | t g  | j D] } t | ƒ ^ qlƒ ƒ |  j | j t t d „  | j Dƒ ƒ Œ  j ƒ t r |  j | t t j | j ƒ ƒ ƒ q q Wd S(   u   Testing LineString objects.u
   POINT(0 0)u
   LineStringi   u   centroidu   tupc         s  s   |  ] } t  | ƒ Vq d  S(   N(   R	   (   R“   t   tup(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pys	   <genexpr>S  s    N(   R   R8   t   linestringsR:   R;   Rƒ   R„   R˜   RV   t   ringRq   RŠ   Rˆ   R   RJ   R-   R   R–   R—   R   t   listR   t   array(   R   RŒ   t   lR€   R   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_linestring<  s*    2/ c         C  s  t  d ƒ } x||  j j D]n} t  | j ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j d | j j	 d ƒ |  j | j d | j j
 d ƒ |  j t | t  | j ƒ k ƒ |  j t | | k ƒ | } xG | D]? } |  j | j d ƒ |  j | j d ƒ |  j | j t ƒ qÖ W|  j t | j t | ƒ ƒ |  j | j t t d „  | Dƒ ƒ Œ  j ƒ |  j | t t d	 „  | Dƒ ƒ Œ  ƒ q Wd
 S(   u    Testing MultiLineString objects.u
   POINT(0 0)u   MultiLineStringi   i    i	   i   u
   LineStringc         s  s   |  ] } | j  ƒ  Vq d  S(   N(   t   clone(   R“   t   s(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pys	   <genexpr>k  s    c         s  s   |  ] } t  | j ƒ Vq d  S(   N(   R   Rˆ   (   R“   R¥   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pys	   <genexpr>l  s    N(   R   R8   t   multilinestringsR:   R;   Rƒ   R„   R‡   RŠ   R…   R†   RJ   RV   R˜   R-   R   R–   R—   R   Rˆ   (   R   RŒ   R¢   t   mlR€   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_multilinestringV  s"      ,c         C  s  x|  j  j D]	} t | j ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j t | ƒ ƒ |  j t	 | j
 ƒ |  j t | j ƒ |  j | t | j ƒ ƒ |  j | t | j Œ  ƒ |  j | t g  | j D] } t | ƒ ^ qÏ ƒ ƒ t r |  j | t t j | j ƒ ƒ ƒ q q Wd S(   u   Testing LinearRing objects.u
   LinearRingi   N(   R8   t   linearringsR   R:   R;   Rƒ   R„   t   n_pR—   RJ   R™   RV   R˜   R   Rˆ   R    R   R¡   (   R   t   rrt   lrR   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_linearringn  s    2 c         C  s‚   d } t  j | ƒ } |  j | | j ƒ d } d d d | f } t  j | ƒ } | j d } |  j t | d	 ƒ t | d	 ƒ ƒ d
 S(   u!   Testing `from_bbox` class method.iLÿÿÿi¦ÿÿÿi´   iZ   g-DTû!	@i    i   iÿÿÿÿu   .13fN(   iLÿÿÿi¦ÿÿÿi´   iZ   (   R   t	   from_bboxR;   t   extentt   format(   R   t   bboxRm   R…   R†   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_polygons_from_bbox~  s    c         C  se  t  d ƒ } xR|  j j D]D} t  | j ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j t ƒ |  j | j	 t ƒ |  j | j
 | j ƒ |  j | j
 d t | ƒ ƒ |  j | j | j ƒ |  j | j | j d ƒ |  j | j d | j j d d ƒ |  j | j d | j j d d ƒ |  j t | t  | j ƒ k ƒ |  j t | | k ƒ |  j t | | k ƒ | j } |  j | j d ƒ |  j | j d ƒ | j rÚ|  j | j | j ƒ |  j | j | d j ƒ n  |  j t | j t | ƒ ƒ |  j t | j t | ƒ t ƒ |  j t | j d	 t | ƒ d ƒ x4 | D], } |  j | j d ƒ |  j | j d ƒ q@W|  j t t d d d d g ƒ |  j t t d
 ƒ t d „  | Dƒ ƒ } |  j | t | d | d ƒ ƒ t d „  | Dƒ ƒ } |  j | t | Œ  ƒ |  j | j t t d „  | Dƒ ƒ Œ  j ƒ |  j | j t t d „  | Dƒ ƒ Œ  j ƒ q Wd S(   u   Testing Polygon objects.u
   POINT(0 0)u   Polygoni   i   i	   i    u
   LinearRingi   iÿÿÿÿu   fooc         s  s   |  ] } | Vq d  S(   N(    (   R“   t   r(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pys	   <genexpr>»  s    c         s  s   |  ] } | j  Vq d  S(   N(   Rˆ   (   R“   R³   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pys	   <genexpr>¿  s    c         s  s   |  ] } | Vq d  S(   N(    (   R“   R³   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pys	   <genexpr>Ã  s    c         s  s   |  ] } t  | j ƒ Vq d  S(   N(   R   Rˆ   (   R“   R³   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pys	   <genexpr>Ä  s    N(   R   R8   Rj   R:   R;   Rƒ   R„   R˜   RV   RŸ   t   n_it   num_interior_ringsR—   Rª   t
   num_pointsR‡   t   areaRŠ   Rˆ   RJ   t   exterior_ringt   ext_ring_csR-   R   R–   t   __setitem__R0   R   (   R   RŒ   Rm   Rn   RŸ   R³   t   ringst   ring_tuples(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_polygons‹  sH    $$		$!,c         C  s  t  d d d d d f ƒ } t  d	 d
 d d f ƒ } |  j | | k ƒ |  j | | k  ƒ |  j | | k ƒ |  j | | k  ƒ t  d d d d d f ƒ } t  d d d d d f ƒ } |  j | | k  ƒ |  j | | k  ƒ |  j | | k ƒ |  j | | k ƒ 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    i   (   i   i   (   i   i    (   i    i    (   i    i    (   i    i   (   i   i   (   i   i    (   i    i    (   R   t
   assertTruet   assertFalse(   R   t   p1t   p2t   p3t   p4(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_polygon_comparisonÆ  s    c         C  sU  t  d ƒ } xB|  j j D]4} t  | j ƒ } |  j | j d ƒ |  j | j d ƒ |  j | j | j ƒ | j r |  j | j | j ƒ |  j | j	 | j
 ƒ |  j | j t | ƒ ƒ |  j t | j t | ƒ ƒ xG | D]? } |  j | j d ƒ |  j | j d ƒ |  j | j t ƒ qÛ W|  j | j t t d „  | Dƒ ƒ Œ  j ƒ q q Wd S(   u   Testing MultiPolygon objects.u   POINT (0 0)u   MultiPolygoni   u   Polygoni   c         s  s   |  ] } | j  ƒ  Vq d  S(   N(   R¤   (   R“   Rn   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pys	   <genexpr>ç  s    N(   R   R8   t   multipolygonsR:   R;   Rƒ   R„   R™   t   num_geomRª   t
   num_coordsR—   R-   R   R–   RJ   R   Rˆ   (   R   RŒ   Rš   t   mpolyRm   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_multipolygonsÕ  s     	c         C  sg   t  |  j j d j ƒ } | d } | d } ~ ~ | d } | d } ~ t | ƒ t | ƒ } } d S(   u1   Testing Geometry __del__() on rings and polygons.i   i    N(   R   R8   Rj   R:   t   str(   R   Rn   t   ring1t   ring2t   s1t   s2(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_memory_hijinksé  s    



c   	      C  s,  x%|  j  j D]} | j r t | j ƒ } | j j } |  j | j | j ƒ |  j t	 | j ƒ t	 | ƒ ƒ xµ t
 t	 | j ƒ ƒ D]› } | j | } | | } |  j | | ƒ t	 | ƒ d k rÊ d } n d } | | | <x@ t t	 | ƒ ƒ D], } | | | <|  j | | | | | ƒ qí Wq‚ Wq q Wd S(   u$   Testing Coordinate Sequence objects.i   i   i   i   N(   i   i   (   i   i   i   (   R8   Rj   R¹   R   R:   R¸   t	   coord_seqR;   Rˆ   R—   R   t   range(	   R   Rm   Rn   t   cst   it   c1t   c2t   tsett   j(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_coord_seq   s"    	
 	

c         C  sœ   t  d ƒ } |  j t | j d d ƒ xp |  j j D]b } t  | j ƒ } t  | j ƒ } |  j | j	 | j | | j
 ƒ ƒ |  j | j
 | j | ƒ ƒ q2 Wd S(   u&   Testing relate() and relate_pattern().u   POINT (0 0)i    u   invalid pattern, yoN(   R   R-   R   t   relate_patternR8   t   relate_geomst   wkt_at   wkt_bR;   t   resultt   patternt   relate(   R   R=   t   rgt   at   b(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_relate_pattern  s    "c         C  sØ   xÑ t  t |  j j ƒ ƒ D]· } t |  j j | j ƒ } t |  j j | j ƒ } t |  j j | j ƒ } |  j	 t
 | j | ƒ ƒ | j | ƒ } |  j	 | | ƒ |  j	 | | | @ƒ | | M} |  j	 | | ƒ q Wd S(   u(   Testing intersects() and intersection().N(   R   R—   R8   t   topology_geomsR   RÛ   RÜ   t   intersect_geomsR:   R;   RJ   t
   intersectst   intersection(   R   RÓ   Rá   Râ   t   i1t   i2(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_intersection%  s    
c         C  s¿   x¸ t  t |  j j ƒ ƒ D]ž } t |  j j | j ƒ } t |  j j | j ƒ } t |  j j | j ƒ } | j	 | ƒ } |  j
 | | ƒ |  j
 | | | Bƒ | | O} |  j
 | | ƒ q Wd S(   u   Testing union().N(   R   R—   R8   Rä   R   RÛ   RÜ   t   union_geomsR:   t   unionR;   (   R   RÓ   Rá   Râ   t   u1t   u2(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt
   test_union2  s    
c         C  s¿   x¸ t  t |  j j ƒ ƒ D]ž } t |  j j | j ƒ } t |  j j | j ƒ } t |  j j | j ƒ } | j	 | ƒ } |  j
 | | ƒ |  j
 | | | ƒ | | 8} |  j
 | | ƒ q Wd S(   u   Testing difference().N(   R   R—   R8   Rä   R   RÛ   RÜ   t
   diff_geomsR:   t
   differenceR;   (   R   RÓ   Rá   Râ   t   d1t   d2(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_difference>  s    
c         C  s¿   x¸ t  t |  j j ƒ ƒ D]ž } t |  j j | j ƒ } t |  j j | j ƒ } t |  j j | j ƒ } | j	 | ƒ } |  j
 | | ƒ |  j
 | | | Aƒ | | N} |  j
 | | ƒ q Wd S(   u   Testing sym_difference().N(   R   R—   R8   Rä   R   RÛ   RÜ   t   sdiff_geomsR:   t   sym_differenceR;   (   R   RÓ   Rá   Râ   Rò   Ró   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_symdifferenceJ  s    
c         C  sa  xZ|  j  j D]L} t | j ƒ } t | j ƒ } | j } | j } |  j t j	 | j
 | t | ƒ ƒ | j
 | | ƒ } |  j | j | j ƒ |  j t | ƒ t | ƒ ƒ x­ t t | ƒ ƒ D]™ } | | } | | }	 |  j t | ƒ t |	 ƒ ƒ x` t t | ƒ ƒ D]L }
 |  j | |
 d |	 |
 d d ƒ |  j | |
 d |	 |
 d d ƒ qWq¼ Wq Wd S(   u   Testing buffer().i    i	   i   N(   R8   t   buffer_geomsR   R:   t
   buffer_wktt   quadsegst   widthR-   R(   t   ArgumentErrort   buffert   floatR;   RÇ   R—   R   R‡   (   R   t   bgR=   t   exp_bufRú   Rû   t   bufR×   t   exp_ringt   buf_ringt   k(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_bufferV  s     		"

#c         C  s¿  t  d d d d ƒ} |  j d | j ƒ d | _ |  j d | j ƒ |  j t j | j d ƒ t |  j j	 d j
 d d ƒ} |  j d | j ƒ x! | D] } |  j d | j ƒ q– Wd | _ |  j d | j j ƒ t t  d d ƒ t d d d ƒ d d ƒ} |  j d | j ƒ x1 t t | ƒ ƒ D] } |  j d | | j ƒ q"Wd } t | ƒ } |  j d | j ƒ |  j } t | j ƒ }	 |  j | |	 j ƒ t | j d d ƒ}
 |  j d |
 j ƒ d S(   u&   Testing the SRID property and keyword.i   i   RH   iæ  i  u   4326i   i­  i    g      ø?i   i}  u2   0101000020E610000000000000000014400000000000003740iÿÿÿÿN(   i    i    (   g      ø?g      ø?(   i   i   (   R	   R;   RH   R-   R(   Rü   t   set_sridR   R8   Rj   R:   Rk   R   R   RÑ   R—   R    RA   (   R   R}   Rn   RŸ   t   gcRÓ   RA   RÀ   t   exp_sridRÁ   RÂ   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt	   test_sridr  s.    	 	* 	c      	   C  sË  xÙ |  j  j D]Ë } t | j ƒ } |  j t | j d t d d	 ƒ ƒ | j j	 } g  } x1 | D]) } | j
 | d d | d d f ƒ q] Wt t	 | ƒ Œ  } | | _ t | ƒ } |  j | j | ƒ |  j | d | ƒ q WxÉ |  j  j D]» } t | j ƒ }	 x£ t t |	 ƒ ƒ D] }
 |	 |
 } t t j d d ƒ t j d d ƒ ƒ } | |	 |
 <t | ƒ } |  j |	 |
 | ƒ |  j |	 |
 j | j ƒ |  j | |	 |
 ƒ qWqé Wx|  j  j D]} t | j ƒ } xö t t | ƒ ƒ D]â }
 | |
 } | |
 } xs t t | ƒ ƒ D]_ } | | } xB t t | ƒ ƒ D]. } | | d d | | d d f | | <q-W| | | <q
W|  j | |
 | ƒ | | |
 <t | ƒ } |  j | |
 | ƒ |  j | |
 | ƒ qÝWqµWd S(
   u<   Testing the mutability of Polygons and Geometry Collections.i    i   i   g     @@i   id   N(   i   i   (   i   i   (   R8   Rj   R   R:   R-   R0   Rº   R   Rk   Rˆ   t   appendR   R¸   RÊ   R;   R•   RÑ   R—   R	   t   randomt   randintR   RÅ   R   (   R   Rm   Rn   t	   shell_tupt
   new_coordst   pointt	   new_shellR¥   RX   Rš   RÓ   R}   t   newRÈ   t   old_polyR×   R³   R  (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_mutable_geometries˜  sJ    " '	
'



 ,
c         C  sº   t  d d d ƒ } |  j d | j ƒ |  j t | j d ƒ d | _ |  j d | j ƒ t d d ƒ } |  j d d f | j ƒ |  j t | j d d ƒ d | d <|  j d | d ƒ d S(   u%   Testing three-dimensional geometries.i   i   i   g       @g      @g       @g      ð?g      I@g     @o@g     @]Ài    N(   g       @g      @g       @(   g      ð?g       @(   g      ð?g       @g      @(   g      ð?g       @g      @(   g       @g      @g       @(   g      I@g     @o@g     @]À(   g       @g      @g       @(   g      I@g     @o@g     @]À(   g      ð?g       @(   g      ð?g       @g      @(   g      ð?g       @g      @(	   R	   R;   R‹   R-   R0   t
   set_coordsR   Rˆ   Rº   (   R   R}   R€   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_threedØ  s    	
c         C  s¹   t  d d ƒ } |  j d | j t  d d ƒ ƒ ƒ |  j d | j t  d d ƒ ƒ ƒ |  j d | j t  d d ƒ ƒ d ƒ t d d d ƒ } t d d d ƒ } |  j d | j | ƒ ƒ d S(   u    Testing the distance() function.i    g        g      ð?i   gZfž ö?i   i   i   i   i   i   N(   i    i    (   i   i   (   i   i   (   i   i   (   i   i   (   i   i    (   R	   R;   t   distanceR‡   R   (   R   R}   t   ls1t   ls2(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_distanceè  s    ""%c         C  s¤   t  d d ƒ } |  j d | j ƒ t d	 d
 ƒ } |  j d | j d ƒ t t d d d d d ƒ ƒ } |  j d | j ƒ t | j ƒ  | ƒ } |  j d | j ƒ d S(   u   Testing the length property.i    g        i   gZfž ö?i   g      @g       @N(   i    i    (   i   i   (   i    i    (   i    i   (   i   i   (   i   i    (   i    i    (	   R	   R;   t   lengthR   R‡   R   R   R   R¤   (   R   R}   R€   Rn   RÈ   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_lengthú  s    c         C  s  t  g  ƒ } t d ƒ } t d ƒ } t d ƒ } t d ƒ } t d ƒ } t d ƒ } t d ƒ } x | | | | | | | | g D]€}	 |  j t |	 j ƒ t |	 t ƒ rí |  j d t |	 ƒ ƒ |  j d |	 j	 ƒ |  j d t |	 d ƒ ƒ nj t |	 t
 t f ƒ r.|  j d |	 j	 ƒ |  j d t |	 ƒ ƒ n) |  j d |	 j	 ƒ |  j d t |	 ƒ ƒ t |	 t
 ƒ r||  j t |	 j ƒ q t |	 t ƒ ré|	 j }
 |  j d	 |
 j ƒ |  j d t |
 ƒ ƒ |  j t |
 j ƒ |  j t |
 j d ƒ q |  j t |	 j d ƒ q Wd
 S(   u)   Testing empty geometries and collections.u   GEOMETRYCOLLECTION EMPTYu   POINT EMPTYu   LINESTRING EMPTYu   POLYGON EMPTYu   MULTILINESTRING EMPTYu   MULTIPOLYGON EMPTYi   i    u   LINEARRING EMPTYN(    (   R   R   R   R;   RJ   R˜   t
   isinstanceR   R—   RÆ   R	   R   R-   R   t   get_xRk   R:   R–   (   R   t   gc1t   gc2R}   R€   Rn   t   mlst   mpoly1t   mpoly2R=   R¬   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_emptyCollections  s8    %	c         C  sõ   g  |  j  j D] } | j r | j ^ q } | j g  |  j  j D] } | j ^ q> ƒ | j g  |  j  j D] } | j ^ qg ƒ | j g  |  j  j D] } | j ^ q ƒ d d j | ƒ } t	 | ƒ } t
 t d „  | Dƒ ƒ Œ  } |  j | | ƒ d S(   u9   Testing GeometryCollection handling of other collections.u   GEOMETRYCOLLECTION(%s)u   ,c         s  s   |  ] } | Vq d  S(   N(    (   R“   R=   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pys	   <genexpr>@  s    N(   R8   RÅ   R™   R:   t   extendR¦   Rj   R•   t   joinR   R   Rˆ   R;   (   R   Rš   t   collR   Rm   t   gc_wktR  R  (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_collections_of_collections2  s    +)))c         C  sä   t  d ƒ } |  j | j t j ƒ |  j | j ƒ t rs t  d ƒ } |  j | j t j ƒ |  j | j j	 d ƒ n  t  d d d ƒ} |  j | j t j ƒ |  j | j t j
 ƒ |  j | j | j j ƒ |  j d | j j ƒ d S(	   u#   Testing `ogr` and `srs` properties.u   POINT(5 23)u   POINT(5 23 8)i   u   LINESTRING(0 0, 5 5, 23 23)RH   iæ  u   WGS 84N(   R   t   assertIsInstancet   ogrR   t   OGRGeometryt   assertIsNonet   srsR   R;   R‰   t   SpatialReferenceRA   t   name(   R   t   g1t   g1_3dt   g2(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt	   test_gdalE  s    c         C  sf   d d l  } t d ƒ } | j  | ƒ } | j | ƒ } |  j | j | j ƒ |  j | j | j ƒ d S(   u*   Testing use with the Python `copy` module.iÿÿÿÿNuE   POLYGON((0 0, 0 23, 23 23, 23 0, 0 0), (5 5, 5 10, 10 10, 10 5, 5 5))(   t   copyR   t   deepcopyR   t   _ptr(   R   R4  Rn   t   cpy1t   cpy2(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt	   test_copyW  s    u(   gdal is required to transform geometriesc         C  s8  t  d d ƒ } t  d d ƒ } | j ƒ  | j ƒ  | j ƒ  } } } | j | j ƒ | j t j d ƒ ƒ t j t j d ƒ t j d ƒ ƒ } | j | ƒ | j ƒ  } | j | j d t ƒ} |  j | | ƒ |  j	 | | ƒ d }	 xL | | | | f D]8 }
 |  j
 | j |
 j |	 ƒ |  j
 | j |
 j |	 ƒ qø Wd	 S(
   u   Testing `transform` method.u   POINT (-104.609 38.255)iæ  u%   POINT (992385.4472045 481455.4944650)iÖ
  u	   EPSG:2774u   WGS84R¤   i   N(   R   R¤   t	   transformRH   R   R.  t   CoordTransformRJ   R;   R   R‡   R…   R†   (   R   t   origt   transt   t1t   t2t   t3t   ctt   k1t   k2t   precRm   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_transform`  s    &$c         C  sL   t  d d ƒ } | j d ƒ t r8 |  j | j d ƒ n |  j | j ƒ d  S(   Nu   POINT (5 23 100)iæ  iÖ
  id   (   R   R:  R   R;   R‰   R,  (   R   t   p3d(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_transform_3dy  s
    c         C  s  t  j rº t d d ƒ } | j } | j d ƒ |  j | j | ƒ |  j | j d ƒ t d d ƒ } | j d d t ƒ} |  j | j | j ƒ |  j | j d ƒ |  j | | k	 d ƒ n  t  j } z» t	 t  _ t d d ƒ } | j } | j d ƒ |  j | j | ƒ |  j | j d ƒ t d d ƒ } | j d d t ƒ} |  j | j | j ƒ |  j | j d ƒ |  j | | k	 d ƒ Wd | t  _ Xd S(   u)    Testing `transform` method (SRID match) u   POINT (-104.609 38.255)iæ  R¤   u   Clone didn't happenN(
   R   t   HAS_GDALR   Rˆ   R:  R;   RH   RJ   R¾   RV   (   R   R=   t   gtR0  t   old_has_gdal(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_transform_noop‚  s2    					c         C  s°   t  d d d ƒ} |  j t | j d ƒ t  d d d ƒ} |  j t | j d d t ƒt  d d d ƒ} |  j t | j d ƒ t  d d d ƒ} |  j t | j d d t ƒd S(   u7    Testing `transform` method (no SRID or negative SRID) u   POINT (-104.609 38.255)RH   iÖ
  R¤   iÿÿÿÿN(   R   R   R-   R   R:  RJ   (   R   R=   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_transform_nosrid¥  s    c         C  sw   t  j } z] t t  _ t d d ƒ } |  j t | j d ƒ t d d ƒ } |  j t | j d d t ƒWd | t  _ Xd S(   u1    Testing `transform` method (GDAL not available) u   POINT (-104.609 38.255)iæ  iÖ
  R¤   N(   R   RH  RV   R   R-   R   R:  RJ   (   R   RJ  R=   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_transform_nogdal´  s    		 c         C  sì   t  t d d ƒ t d d ƒ t d d ƒ ƒ } |  j d | j ƒ t d	 d
 ƒ } |  j d | j ƒ t |  j j d j ƒ } | j } | j	 | j
 } } t | ƒ t | ƒ } } t | ƒ t | ƒ }	 }
 |  j | | |	 |
 f | j ƒ d S(   u   Testing `extent` method.i   i   i    i
   i2   g        g      $@g      I@gìQ¸…ë@gÍÌÌÌÌÌ1@i   N(   g        g        g      $@g      I@(   gìQ¸…ë@gÍÌÌÌÌÌ1@gìQ¸…ë@gÍÌÌÌÌÌ1@(   R
   R	   R;   R¯   R   R8   Rj   R:   Rk   R…   R†   t   mint   max(   R   Rš   R}   Rn   RŸ   R…   R†   t   xmint   ymint   xmaxt   ymax(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_extentÂ  s    -	c         C  s6  d d l  m } d d l } d d „ } | |  j j ƒ } | j | |  j j d ƒ ƒ | j | |  j j d ƒ ƒ | j | |  j j	 d ƒ ƒ |  j
 d k } x’ | D]Š } | j | ƒ | j | ƒ } } | j | ƒ | j | ƒ }	 }
 xC |	 |
 f D]5 } |  j | | ƒ | sõ |  j | j | j ƒ qõ qõ Wq¤ Wd S(   u(   Testing pickling and unpickling support.iÿÿÿÿ(   t   cPickleNc         S  s#   g  |  D] } t  | j | ƒ ^ q S(   N(   R   R:   (   t   lstRH   RX   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt	   get_geomsÚ  s    iæ  i  i1¿ (   t   django.utils.six.movesRU  t   pickleR   R8   R‚   R$  R¦   Rj   RÅ   R    t   dumpsRs   R;   RH   (   R   RU  RY  RW  t   tgeomst   no_sridR>   RÍ   RÎ   R0  R2  t   tmpg(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_pickleÒ  s     u   geos >= 3.1.0 is requiredc         C  sÏ   t  d ƒ } | j } t d d ƒ t d d ƒ t d d ƒ g } t t t g } xz t | | ƒ D]i \ } } |  j | j | ƒ | j | ƒ ƒ |  j | j | ƒ | j | ƒ ƒ |  j | | j	 | ƒ ƒ q^ Wd S(   u!   Testing PreparedGeometry support.uA   MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))i   g      @g      @N(
   R   t   preparedR	   RJ   RV   t   zipR;   t   containsRæ   t   covers(   R   RÈ   t   prept   pntsRb  R}   t   c(    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_preparedê  s    	*""c         C  sg   t  d ƒ t  d ƒ f } t  d ƒ t  d ƒ f } x0 t | | ƒ D] \ } } |  j | | j ƒ q@ Wd S(   u   Testing line merge supportu   LINESTRING(1 1, 1 1, 3 3)u'   MULTILINESTRING((1 1, 3 3), (3 3, 4 2))u   LINESTRING(1 1, 3 3)u   LINESTRING (1 1, 3 3, 4 2)N(   R   R`  R;   t   merged(   R   t	   ref_geomst
   ref_mergedR>   Rg  (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_line_mergeú  s    		c         C  s”   t  d ƒ } |  j | j ƒ |  j | j t j ƒ |  j | j d ƒ t  d ƒ } |  j | j ƒ |  j | j t j ƒ |  j | j j	 d ƒ ƒ d S(   u   Testing IsValidReason supportu
   POINT(0 0)u   Valid Geometryu   LINESTRING(0 0, 0 0)u$   Too few points in geometry componentN(
   R   R¾   R™   R)  t   valid_reasonR   t   string_typesR;   R¿   t
   startswith(   R   R=   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_valid_reason  s    u   versionu   3.2.0u   geos >= 3.2.0 is requiredc         C  sx  t  d ƒ } t  d ƒ } |  j | j t d d ƒ ƒ d ƒ |  j | j t d d ƒ ƒ d ƒ |  j | j t d d ƒ ƒ d	 d
 ƒ |  j | j d ƒ t d d ƒ ƒ |  j | j d ƒ t d d ƒ ƒ |  j | j d	 d
 ƒ t d d ƒ ƒ |  j | j t d d ƒ ƒ d ƒ |  j | j t d d ƒ ƒ d ƒ |  j | j d ƒ t d d ƒ ƒ |  j | j d ƒ t d d ƒ ƒ d S(   u   Testing linear referencingu"   LINESTRING(0 0, 0 10, 10 10, 10 0)u+   MULTILINESTRING((0 0, 0 10), (10 0, 10 10))i    i   g      $@i   i   i   g      ð?i   i
   i   i	   i   N(   R   R;   t   projectR	   t   project_normalizedt   interpolatet   interpolate_normalized(   R   R€   R   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_linearref  s    ""&""&"""c         C  s˜   d d l  m } d d d d g } xo | D]g \ } } } | j | ƒ } |  j | d d | ƒ|  j | j d ƒ | ƒ |  j | j d ƒ | ƒ q) Wd S(   u,   Testing the GEOS version regular expression.iÿÿÿÿ(   t   version_regexu   3.0.0rc4-CAPI-1.3.3u   3.0.0u   1.3.3u   3.0.0-CAPI-1.4.1u   1.4.1u   3.4.0dev-CAPI-1.8.0u   3.4.0u   1.8.0u   3.4.0dev-CAPI-1.8.0 r0t   msgu'   Unable to parse the version string '%s'u   versionu   capi_versionN(   u   3.0.0rc4-CAPI-1.3.3u   3.0.0u   1.3.3(   u   3.0.0-CAPI-1.4.1u   3.0.0u   1.4.1(   u   3.4.0dev-CAPI-1.8.0u   3.4.0u   1.8.0(   u   3.4.0dev-CAPI-1.8.0 r0u   3.4.0u   1.8.0(   t   django.contrib.gis.geos.libgeosRt  t   matchR¾   R;   t   group(   R   Rt  t   versionst   v_initt   v_geost   v_capiR”   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   test_geos_version)  s    	(=   R"   R#   t   propertyR    R7   R?   RC   RT   RY   Ra   Rd   Rg   Ri   Ro   R   t
   skipUnlessR   RH  Ru   R~   R   R’   Rœ   R£   R¨   R­   R²   R½   RÄ   RÉ   RÏ   RØ   Rã   Rê   Rï   Rô   R÷   R  R	  R  R  R  R  R#  R(  R3  R9  RE  RG  RK  RL  RM  RT  R^  R   Rf  Rj  Rn  R   Rs  R}  (    (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyR      sh   	*			1										7						;					
						&	@				&					#					(c          C  s&   t  j ƒ  }  |  j t  j t ƒ ƒ |  S(   N(   R   t	   TestSuitet   addTestt	   makeSuiteR   (   R¥   (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   suite7  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/geos/tests/test_geos.pyR†  <  s    (.   t
   __future__R    R(   Rr   R  t   binasciiR   R   t   ioR   t   django.contrib.gisR   t   django.contrib.gis.geosR   R   R   R   R	   R
   R   R   R   R   R   R   R   R   t   django.contrib.gis.geos.baseR   R   R   Rv  R   t%   django.contrib.gis.geometry.test_dataR   t   django.utils.encodingR   t   django.utilsR   RX  R   R   t   TestCaseR   Rƒ  R†  (    (    (    s@   ../Django//lib/python/django/contrib/gis/geos/tests/test_geos.pyt   <module>   s*   ^ÿ ÿ ÿ ÿ $	