
    (&hC,                         d dl Z d dlZd dlm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  G d de j                  Z G d de          Z G d	 d
e          Z G d de          Z G d de          ZdS )    N)GeometryTypeError)
LineStringMultiLineString
MultiPointMultiPolygonPointPolygon)	linemergesplitunary_unionc                       e Zd Zd Zd ZdS )TestSplitGeometryc                 h   t          ||          }|j        dk    sJ t          |j                  |k    sJ |dk    r|j        d         j        dk    rJ|                     t          |                              d                              |                     d S |j        d         j        dk    rMt          |                              d          }|                    |          sJ |j	        |j	        k    sJ d S t          |dk    r"|j        d                             |          sJ d S d S )NGeometryCollection   r   r   gư>r	   )r   	geom_typelengeoms
assertTruer
   simplifyequalsr   area
ValueError)selfgeomsplitterexpected_chunkssunions         Z/var/www/html/reinick/venv/lib/python3.11/site-packages/shapely/tests/legacy/test_split.pyhelperzTestSplitGeometry.helper   s8   $!!{2222217||....Q wqz#|33	! 5 5h ? ? F Ft L LMMMMM%22#A//99||D)))))zTY......  !!71:$$T***** "!**    c                 v    t          g d          }t          dd          }|                     ||d           d S )N)r   r   r   r   r   r   r   r   r$   r   r   )r   r   r!   )r   lsr   s      r    !test_split_closed_line_with_pointz3TestSplitGeometry.test_split_closed_line_with_point&   sA     @@@AAA;;B!$$$$$r"   N)__name__
__module____qualname__r!   r)    r"   r    r   r      s2        + + +&% % % % %r"   r   c                   \    e Zd Z eg d          Z eg dg dg          Zd Zd Zd ZdS )TestSplitPolygonr$      r   r2   r2   r   r2   r$         ?r7   )r7         ?r8   r8   )r8   r7   r6   c                    t          ddg          }|                     | j        |d           |                     | j        |d           t          g d          }|                     | j        |d           |                     | j        |d           t          ddg          }|                     | j        |d           |                     | j        |d           t          g d	          }|                     | j        |d           |                     | j        |d           t          g d
          }|                     | j        |d           |                     | j        |d           d S )Nr      r   r2   )r;   r=   333333?r>   r@   r<   r<   r4      r2   r   ))皙?rD   r@   r@   r<   r2   )r   r<   r<   r<   )r<   r   )r   r!   poly_simple	poly_holer   r   s     r    test_split_poly_with_linez*TestSplitPolygon.test_split_poly_with_line5   se   vw/00D$h222DNHa000 DDDEED$h222DNHa000 vv.//D$h222DNHa000 >>>??D$h222DNHa000 66677D$h222DNHa00000r"   c                    t          ddgddgg          }|                     | j        |d           |                     | j        |d           t          ddgddgg          }|                     | j        |d           |                     | j        |d           t          ddgd	d
gg          }|                     | j        |d           |                     | j        |d           t          ddgg dg          }|                     | j        |d           |                     | j        |d           t          ddgg dg          }|                     | j        |d           |                     | j        |d           d S )N)rD   r<   )rD   r>   r?   rA   r<   )r>   r   r<   r      r4   rB   r2   ))333333?rP   rE   rF   rG   )r   r!   rI   rJ   rK   s     r    test_split_poly_with_multilinez/TestSplitPolygon.test_split_poly_with_multilineO   s   "Xy$9Ix;P#QRRD$h222DNHa000 #Xy$9GV;L#MNND$h222DNHa000 #Xy$9FF;K#LMMD$h222DNHa000 #	"$D$D$DE
 
 	D$h222DNHa000 #Xy$9;S;S;S#TUUD$h222DNHa00000r"   c                    t          j        t                    5  t          | j        t          dd                     d d d            n# 1 swxY w Y   t          j        t                    5  t          | j        t          ddg                     d d d            n# 1 swxY w Y   t          j        t                    5  t          | j        | j                   d d d            d S # 1 swxY w Y   d S )Nr   r&   r<   rO   )pytestraisesr   r   rI   r   r   rJ   )r   s    r    test_split_poly_with_otherz+TestSplitPolygon.test_split_poly_with_otherk   s   ],-- 	1 	1$"E!QKK000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1],-- 	B 	B$"J/?$@$@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B],-- 	4 	4$"DN333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s5   $A

AA.%BB#&B#C++C/2C/N)	r*   r+   r,   r	   rI   rJ   rL   rQ   rV   r-   r"   r    r/   r/   .   s}        'BBBCCK000	E	E	EF I
1 1 141 1 184 4 4 4 4r"   r/   c                   L    e Zd Z eg d          Zd Zd Zd Zd Zd Z	d Z
dS )	TestSplitLine)r$   r9   )g      @g      @c                 f   t          dd          }|                     | j        |d           t          dd          }|                     | j        |d           t          dd          }|                     | j        |d           t          dd          }|                     | j        |d           d S )Nr   r2   r8   r<   rO   )r   r!   r(   rK   s     r    test_split_line_with_pointz(TestSplitLine.test_split_line_with_pointw   s    A;;DGXq))) c??DGXq))) A;;DGXq))) A;;DGXq)))))r"   c                    t          g d          }|                     | j        |d           t          ddg          }|                     | j        |d           t          g d          }|                     | j        |d           d S )N)r&   r9   r6   rO   r&   rS   r2   )r&   r9   r&   r<   )r   r!   r(   rK   s     r    test_split_line_with_multipointz-TestSplitLine.test_split_line_with_multipoint   s    >>>??DGXq))) vv.//DGXq))) :::;;DGXq)))))r"   c                    t          ddg          }|                     | j        |d           t          g d          }|                     | j        |d           t          ddg          }t          j        t
                    5  |                     | j        |d           d d d            n# 1 swxY w Y   t          dd	g          }|                     | j        |d           t          d
dg          }|                    | j                  sJ |                     | j        |d           t          ddg          }|                    | j                  sJ |                     | j        |d           d S )Nr%   r'   r2   )r%   r'   r   r2   r<   r$   )   r_   r   r4   )r   )r   r`   r&   )r   r!   r(   rT   rU   r   touchesrK   s     r    test_split_line_with_linez'TestSplitLine.test_split_line_with_line   s   vv.//DGXq))) 66677DGXq))) vx011]:&& 	. 	.KK1---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. vv.//DGXq))) w011(((((DGXq))) vv.//(((((DGXq)))))s   B..B25B2c                 R   t          ddgddgg          }|                     | j        |d           t          ddgddgg          }|                     | j        |d           t          ddgg d	g          }|                     | j        |d
           t          ddgddgg          }t          j        t
                    5  |                     | j        |d           d d d            n# 1 swxY w Y   t          ddgddgg          }|                     | j        |d           d S )Nr%   r'   r$   )r2   r2   r4   r1   r<   )r4   r1   )g@g	@rO   r9   rS   r   )r   r!   r(   rT   rU   r   rK   s     r    test_split_line_with_multilinez,TestSplitLine.test_split_line_with_multiline   s{   "VV$4vw6G#HIIDGXq))) #VV$4vv6F#GHHDGXq))) #VV$46R6R6R#STTDGXq))) #VZ$8:v:N#OPP]:&& 	. 	.KK1---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. #VV$4vv6F#GHHDGXq)))))s   C++C/2C/c                    t          g d          }|                     | j        |d           t          g d          }|                     | j        |d           t          g dg dg          }|                     | j        |d           d S )N)r'   r^   r3   r1   r'   r<   )r$   r^   r3   r'   r$   r2   r0   r5   rO   )r	   r!   r(   rK   s     r    test_split_line_with_polygonz*TestSplitLine.test_split_line_with_polygon   s    CCCDDDGXq))) CCCDDDGXq))) 444IIIJ
 
 	DGXq)))))r"   c                     t          g d          }t          g d          }t          g d          }t          |||g          }|                     | j        |d           d S )Nr0   r5   )r$   )r   rd   )rd   rd   )rd   r   r$   rO   )r	   r   r!   r(   )r   poly1poly2poly3r   s        r    !test_split_line_with_multipolygonz/TestSplitLine.test_split_line_with_multipolygon   s|    444
 
 HHH
 
 DDDEEu 566DGXq)))))r"   N)r*   r+   r,   r   r(   rZ   r\   rb   re   rg   rl   r-   r"   r    rX   rX   t   s        	444	5	5B* * *"* * ** * *8* * *,* * *"	* 	* 	* 	* 	*r"   rX   c                   H    e Zd Z eddgddgddgddgddgg          Zd ZdS )TestSplitClosedRingr   r   c                    t          ddg          }|                     | j        |d           t          ddg          }|                     | j        |d           t          | j        |          }|j        d         j        d d          ddgk    sJ |j        d         j        d d          g dk    sJ t          ddg          }|                     | j        |d           t          | j        |          }|j        d         j        d d          g d	k    sJ |j        d         j        d d          d
dgk    sJ t          ddg          }|                     | j        |d           d S )N        r   r7   r2   r   r$   rp   r7   )rq   r%   r&   r'   r$   )r$   r%   r&   r'   r7   r   rr   g       @)r   r!   r(   r   r   coords)r   r   results      r    !test_split_closed_ring_with_pointz5TestSplitClosedRing.test_split_closed_ring_with_point   st   #s$$DGXq)))#s$$DGXq)))tw))|A%aaa(VZ,@@@@@|A%aaa(,X,X,XXXXX #s$$DGXq)))tw))|A%aaa(,V,V,VVVVV|A%aaa(Xv,>>>>>#s$$DGXq)))))r"   N)r*   r+   r,   r   r(   ru   r-   r"   r    rn   rn      sQ        	aVaVaVaVaV<	=	=B* * * * *r"   rn   c                        e Zd Zd Zd Zd ZdS )TestSplitMultic                     t          ddg          }t          ddg          }t          ||g          }t          d          }|                     ||d           d S )Nr%   r2   r   r'   r^   r&   rO   )r   r   r   r!   r   l1l2mlr   s        r    test_split_multiline_with_pointz.TestSplitMulti.test_split_multiline_with_point   s`     ())())b"X&&==B!$$$$$r"   c                     t          ddg          }t          ddg          }t          ||g          }t          g d          }|                     ||d           d S )Nr%   rN   r'   r^   )r&   ry   )rO   r2   rC   )r   r   r   r!   rz   s        r    $test_split_multiline_with_multipointz3TestSplitMulti.test_split_multiline_with_multipoint  si     ())())b"X&&66677B!$$$$$r"   c                 r   t          g d          }t          g d          }t          ||g          }t          ddg          }|                     ||d           t          g d          }t          g d          }t          ||g          }t          ddg          }|                     ||d           d S )	N)r$   r'   r&   r%   r$   )r&   r^   r3   ry   r&   )r`   r`   rH   rO   )
   r   )r      )r   r   )r   r   r   )r   )r   )r   r   )r   r   r   r2   )r	   r   r   r!   )r   ri   rj   mpolyr(   s        r    !test_split_multipolygon_with_linez0TestSplitMulti.test_split_multipolygon_with_line  s    @@@AA@@@AAeU^,,6*++E2q!!! JJJKKTTTUUeU^,,6*++E2q!!!!!r"   N)r*   r+   r,   r~   r   r   r-   r"   r    rw   rw      sA        % % %% % %" " " " "r"   rw   )unittestrT   shapely.errorsr   shapely.geometryr   r   r   r   r   r	   shapely.opsr
   r   r   TestCaser   r/   rX   rn   rw   r-   r"   r    <module>r      s     , , , , , ,                6 5 5 5 5 5 5 5 5 5% % % % %) % % %:C4 C4 C4 C4 C4( C4 C4 C4Lm* m* m* m* m*% m* m* m*`* * * * *+ * * *0!" !" !" !" !"& !" !" !" !" !"r"   