o
    j                     @   sn   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZ d dlmZ G dd de jZdS )    N)geos_version)TopologicalError)GeometryCollection
LineString
MultiPointPointPolygon)loadsc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )OperationsTestCasec                 C   s  t dd}|jdksJ |jdksJ |t ddtdks"J t|jt s*J |t ddj	s5J t|
dts?J t|j
dddtsKJ td}td	}|jdd
d}||dsbJ td}td}|jddd}||dsyJ t|jt sJ t|t ddt sJ t|t ddtsJ t|jtsJ t|t ddtsJ t| t sJ t| t sJ | | ksJ t|jt sJ d S )Ng        g      g;f?g      $@    )Z	quad_segszRPOLYGON ((120 120, 140 199, 160 200, 180 199, 220 120, 122 122, 121 121, 120 120))z@POLYGON ((120 120, 140 199, 160 200, 180 199, 220 120, 120 120))F)Zpreserve_topologygMbP?ziPOLYGON ((80 200, 240 200, 240 60, 80 60, 80 200),(120 120, 220 120, 180 199, 160 200, 140 199, 120 120))T   )r   ZarealengthdistancepytestZapprox
isinstanceenvelopeintersectionis_emptybufferr   r	   simplifyZequals_exactZconvex_hull
differencesymmetric_differencer   boundaryr   unionZrepresentative_pointZpoint_on_surfaceZcentroid)selfpointpexpecteds r    e/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/shapely/tests/legacy/test_operations.pytest_operations   sB   
z"OperationsTestCase.test_operationsc                 C   s   t ddt dddksJ td}|jrJ tdk r<tttj	f || W d    d S 1 s5w   Y  d S ||dksEJ d S )Nr   r   Z	FF0FFF0F2zUPOLYGON ((40 100, 80 100, 80 60, 40 60, 40 100), (60 60, 80 60, 80 40, 60 40, 60 60)))      r   Z	2FFF1FFF2)
r   Zrelater	   Zis_validr   r   raisesr   shapelyZGEOSException)r   Zinvalid_polygonr    r    r!   test_relateK   s   
"zOperationsTestCase.test_relatec                 C   s<   t dd}tg d}||}||t ddksJ d S )Nr   ))   r   )r(      )r#   r)   r#   r)   )r   r   Zhausdorff_distancer   )r   r   liner   r    r    r!   test_hausdorff_distance[   s   

z*OperationsTestCase.test_hausdorff_distancec                 C   s   t ddg}tdd}|jddd}||ksJ td}|js!J |jddd}|js-J td	}tjtd
d |jddd W d    d S 1 sKw   Y  d S )N)r   r   )r   r(   r   g      ?g      ?T)
normalizedzLINESTRING EMPTYzPOLYGON EMPTYzincorrect geometry type)match)r   r   Zinterpolater	   r   r   r%   	TypeError)r   Z	test_lineZknown_pointZinterpolated_pointZ
empty_lineZpolygonr    r    r!   test_interpolateb   s   


"z#OperationsTestCase.test_interpolatec                 C   sF   t dd}| }||ksJ td}| }td}||ks!J d S )Nr   z(MULTILINESTRING ((1 1, 0 0), (1 1, 1 2))z(MULTILINESTRING ((1 1, 1 2), (0 0, 1 1)))r   	normalizer	   )r   r   resultr*   r   r    r    r!   test_normalizet   s   
z!OperationsTestCase.test_normalizeN)__name__
__module____qualname__r"   r'   r+   r/   r2   r    r    r    r!   r
      s    >r
   )Zunittestr   r&   r   Zshapely.errorsr   Zshapely.geometryr   r   r   r   r   Zshapely.wktr	   ZTestCaser
   r    r    r    r!   <module>   s    