o
    Jf0                     @   sp   d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
mZ G dd de jZG dd	 d	e jZdS )
    N)pi)affinity)Point)loadsc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
AffineTestCasec                 C   s   t d}tt t|d  W d    n1 sw   Y  tt t|g d W d    n1 s7w   Y  tt td g d W d    d S 1 sUw   Y  d S )NLINESTRING(2.4 4.1, 2.4 3, 3 3))	                        	   )r   r	   r
   r   r   r   )load_wktpytestraises	TypeErrorr   affine_transform
ValueErrorAttributeError)selfg r   n/home/deployuser/azure_apps/autowriter/venv/lib/python3.10/site-packages/shapely/tests/legacy/test_affinity.pytest_affine_params   s   "z!AffineTestCase.test_affine_paramsc           	         s   d dt d}t| jsJ d fdd	}t d}t d}||| t d}t d	}||| t d
}t d}||| |t d |t d |t d |t d |t d d S )N)r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   zMULTIPOLYGON EMPTYc                    sh   | j rJ t|  }|j rJ | |sJ |d ur2|j s J t|}|j s+J ||s2J d S N)has_zr   r   equals)g2g3a2a3matrix2dmatrix3dr   r   	test_geom#   s   



z8AffineTestCase.test_affine_geom_types.<locals>.test_geomzPOINT(12.3 45.6)zPOINT(12.3 45.6 7.89)z#LINESTRING(0.9 3.4, 0.7 2, 2.5 2.7)z/LINESTRING(0.9 3.4 3.3, 0.7 2 2.3, 2.5 2.7 5.5)z,LINEARRING(0.9 3.4, 0.7 2, 2.5 2.7, 0.9 3.4)z<LINEARRING(0.9 3.4 3.3, 0.7 2 2.3, 2.5 2.7 5.5, 0.9 3.4 3.3)zwPOLYGON((0.9 2.3, 0.5 1.1, 2.4 0.8, 0.9 2.3), (1.1 1.7, 0.9 1.3, 1.4 1.2, 1.1 1.7), (1.6 1.3, 1.7 1, 1.9 1.1, 1.6 1.3))z<MULTIPOINT ((-300 300), (700 300), (-800 -1100), (200 -300))zFMULTILINESTRING((0 0, -0.7 -0.7, 0.6 -1), (-0.5 0.5, 0.7 0.6, 0 -0.6))zjMULTIPOLYGON(((900 4300, -1100 -400, 900 -800, 900 4300)), ((1200 4300, 2300 4400, 1900 1000, 1200 4300)))zkGEOMETRYCOLLECTION(POINT(20 70), POLYGON((60 70, 13 35, 60 -30, 60 70)), LINESTRING(60 70, 50 100, 80 100))r   )r   r   r   is_empty)	r   empty2dr'   pt2dpt3dls2dls3dlr2dlr3dr   r$   r   test_affine_geom_types   sJ   


z%AffineTestCase.test_affine_geom_typesc                 C   sh   t d}t d}d}t||}||dsJ |jrJ d}t||}||ds-J |jr2J d S )Nr   )LINESTRING(-0.2 14.35, -0.2 11.6, 1 11.6)r	   r   r         @ffffff@ư>)r	   r   r   r   r3   r   r   r   
   r4   r5   d   )r   r   r   equals_exactr   )r   r   
expected2dr%   r"   r&   r#   r   r   r   test_affine_2dV   s   
zAffineTestCase.test_affine_2dc                 C   s  t d}t d}d}d}t||}t||}t||}t||}|jr)J |jr.J |js3J |js8J t d}	t d}
t d}||	dsLJ ||	dsTJ t|j|jD ]\}}t||D ]
\}}| || qdq[t|j|
jD ]\}}t||D ]
\}}| || qqwd S )	Nr   z1LINESTRING(2.4 4.1 100.2, 2.4 3 132.8, 3 3 128.6)r2   )r	   r   r   r   r3   r   r   r   gׁ?r4   r5   r8   r1   zGLINESTRING(-0.2 14.35 130.54096, -0.2 11.6 140.47744, 1 11.6 139.19728)z;LINESTRING(-0.2 14.35 100.2, -0.2 11.6 132.8, 1 11.6 128.6)r6   )r   r   r   r   r9   zipcoordsassertAlmostEqual)r   r    r!   r%   r&   a22a23a32a33r:   
expected3d
expected32aeapepr   r   r   test_affine_3dd   s<   



zAffineTestCase.test_affine_3dN)__name__
__module____qualname__r   r0   r;   rI   r   r   r   r   r      s
    =r   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TransformOpsTestCasec                 C   s   t d}t|d}t d}||sJ tj|ddd}||s$J tj|t d dd}t d	}||s:J tj|dd
d}t d}||sMJ tj|d|jd d}t d}||scJ tj|dtddd}t d}||syJ d S )N%LINESTRING(240 400, 240 300, 300 300)Z   %LINESTRING(220 320, 320 320, 320 380)center)geomangleoriginr	   Tuse_radiansz%LINESTRING(320 380, 220 380, 220 320)centroidrT   z+LINESTRING(182.5 320, 282.5 320, 282.5 380)r   z%LINESTRING(140 300, 240 300, 240 360)r   z(LINESTRING(-400 240, -300 240, -300 300))r   r   rotater   r   r=   r   )r   lsrlselsr   r   r   test_rotate   s$   z TransformOpsTestCase.test_rotatec                 C   s*   t tdd}td}||sJ d S )NLINESTRING EMPTYrO   )r   rY   r   r   )r   r[   r\   r   r   r   test_rotate_empty   s   z&TransformOpsTestCase.test_rotate_emptyc                 C   s   t d}t d}td}t||}| dksJ ||s"J ttd }tj||dd}| td ks;J ||sBJ d S )NrN   rP   g     V@r	   TrU   )r   nparrayr   rY   itemr   r   )r   rZ   r\   thetar[   r   r   r   test_rotate_angle_array   s   
z,TransformOpsTestCase.test_rotate_angle_arrayc              	   C   sh  t d}t|}||sJ t|ddd}t d}||s#J t|j|jD ]\}}t||D ]
\}}| || q3q*tj|ddddd}||sPJ tj|ddddd	}t d
}||seJ tj|ddd|jd d	}t d}||s}J tj|dddtdddd	}t d}||sJ t|j|jD ]\}}t||D ]
\}}||ksJ qqd S )N.LINESTRING(240 400 10, 240 300 30, 300 300 20)r	   r
   g      ?z-LINESTRING(210 500 5, 210 200 15, 330 200 10)rQ   )rR   xfactyfactzfactrT   rW   rX   z4LINESTRING(228.75 537.5, 228.75 237.5, 348.75 237.5)r   z%LINESTRING(240 600, 240 300, 360 300)r8      i  z1LINESTRING(380 800 505, 380 500 515, 500 500 510))r   r   scaler   r<   r=   assertEqualr   )r   rZ   slsr\   rE   brG   bpr   r   r   
test_scale   s4   
zTransformOpsTestCase.test_scalec                 C   (   t td}td}||sJ d S Nr^   )r   rj   r   r   r   rl   r\   r   r   r   test_scale_empty      z%TransformOpsTestCase.test_scale_emptyc                 C   s$  t d}t|}||sJ t|dd}t d}||ds#J tj|td t d dd	}||ds9J tj|ddd
dd}||dsKJ tj|dddd}t d}||ds`J tj|dd|jd d}t d}||dsxJ tj|ddtddd}t d}||dsJ d S )Nre      i~LINESTRING (253.39745962155615 417.3205080756888, 226.60254037844385 317.3205080756888, 286.60254037844385 282.67949192431126)r6      r   TrU   rQ   F)rR   xsysrT   rV   rW   rX   zLINESTRING(258.42150697963973 406.49519052838332, 231.6265877365273980 306.4951905283833185, 291.6265877365274264 271.8541743770057337)r   zGLINESTRING(266.7949192431123038 400, 240 300, 300 265.3589838486224153)r   zLINESTRING(347.179676972449101 261.435935394489832, 320.3847577293367976 161.4359353944898317, 380.3847577293367976 126.7949192431122754))r   r   skewr   r9   r   r=   r   )r   rZ   rl   r\   r   r   r   	test_skew   s6   
zTransformOpsTestCase.test_skewc                 C   rp   rq   )r   rz   r   r   rr   r   r   r   test_skew_empty	  rt   z$TransformOpsTestCase.test_skew_emptyc                 C   s   t d}t d}tddg}t||d |d }|d dks"J |d dks*J ||d	s2J ttd
 t d g}tj||d |d dd}|d td
 ksUJ |d t d ks`J ||d	shJ d S )Nre   rv   g      .@g      >)r   .)r   .r   r   r6   rw   r   TrU   )r   r`   ra   r   rz   r9   r   )r   rZ   r\   xs_ysrl   r   r   r   test_skew_xs_ys_array  s   z*TransformOpsTestCase.test_skew_xs_ys_arrayc                 C   s   t d}t|}||sJ t|ddd}t d}||s#J t|j|jD ]\}}t||D ]
\}}||ks=J q3q*tj|dddd}||sOJ d S )Nre   r8   i  iz-LINESTRING(340 800 0, 340 700 20, 400 700 10))rR   xoffyoffzoff)r   r   	translater   r<   r=   )r   rZ   tlsr\   rE   rm   rG   rn   r   r   r   test_translate"  s   
z#TransformOpsTestCase.test_translatec                 C   s8   t td}td}| || ||sJ d S rq   )r   r   r   
assertTruer   )r   r   r\   r   r   r   test_translate_empty3  s   z)TransformOpsTestCase.test_translate_emptyN)rJ   rK   rL   r]   r_   rd   ro   rs   r{   r|   r~   r   r   r   r   r   r   rM      s    "+rM   )unittestmathr   numpyr`   r   shapelyr   shapely.geometryr   shapely.wktr   r   TestCaser   rM   r   r   r   r   <module>   s    |