o
    Jf                     @   s   d dl Zd dlZd dlZd dlmZmZmZ d dlm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d Zdd Zejddd Zdd  ZG d!d" d"Zd#d$ Zd%d& ZdS )'    N)
LinearRing
LineStringPoint)CoordinateSequencec                  C   sb   t ddg} t| jdksJ | jd d  ddgksJ t ddg} | jd d  ddgks/J d S )N      ?       @      @      @   )r   lencoordsline r   r/home/deployuser/azure_apps/autowriter/venv/lib/python3.10/site-packages/shapely/tests/geometry/test_linestring.pytest_from_coordinate_sequence	   s
   r   c                  C   s4   t ddg} | jsJ | jd d  ddgksJ d S )Nr   r   r
   )r
   r         @)r   has_zr   r   r   r   r    test_from_coordinate_sequence_3D   s   
r   c                  C   sh   t tddtddg} | jd d  ddgksJ t tddtddg} | jd d  ddgks2J d S Nr   r   r
   r   r   r	   r   r   r   r   r   r   r   test_from_points   s   r   c                  C   s8   t tdddtddg} | jd d  g dksJ d S )Nr   r   r   r
   r
   r   )r   r   r	   r   r   r   r   r   test_from_mix"      r   c                  C   s@   t ddg} t | }|jd d  ddgksJ |jdksJ d S )Nr   r	   r   r   r   	geom_type)r   copyr   r   r   test_from_linestring(   s   r!   c                  C   s@   g d} t | }t|}|jd d  | ksJ |jdksJ d S )N)        r#   )r   r#   r   r   r"   r   )r   r   r   r   )r   ringr    r   r   r   test_from_linearring0   
   r&   c                  C   s@   ddg} t | }t |}|jd d  | ksJ |jdksJ d S )Nr   )r   r   g      @r   r   )r   r   r    r   r   r   test_from_linestring_z8   r'   r(   c                  C   s4   dd dD } t | }|jd d  ddgksJ d S )Nc                 s   s    | ]}|V  qd S Nr   ).0coordr   r   r   	<genexpr>A   s    z&test_from_generator.<locals>.<genexpr>r   r	   r   r	   )r   r   )genr   r   r   r   test_from_generator@   s   r/   c                  C   sr   t  } | jsJ t| jtsJ | jd d  g ksJ t g } | js$J t| jts,J | jd d  g ks7J d S r)   )r   is_empty
isinstancer   r   r   r   r   r   test_from_emptyF   s   

r2   c                  C   s8   t tddgddgg} | jd d  ddgksJ d S r   )r   nparrayr   r   r   r   r   test_from_numpyR   r   r5   c                  C   s&   t g } t| j}|jdksJ d S )N)r   r   )r   r3   asarrayr   shape)r   lar   r   r   "test_numpy_empty_linestring_coordsX   s   r9   c                  C   s:   t ddg} tdt}| g|d d < |d | ksJ d S )Nr"   )r#   r      r   )r   r3   emptyobject)geomarr   r   r   test_numpy_object_array`   s   r?   z8ignore:Creating an ndarray from ragged nested sequences:c                  C   s4  t tj tdg W d    n1 sw   Y  t ttf tddg W d    n1 s3w   Y  t ttf tddg W d    n1 sPw   Y  d} t jt| dd tdd	g W d    n1 srw   Y  t jt| d
d tddg W d    d S 1 sw   Y  d S )N)r:   r   )r:   r      )      )r@   rA   rB   z8The ordinate \(last\) dimension should be 2 or 3, got {}rA   )match)r:   r   r@   rA   )rA   rB         r:   )r:   )rA   )pytestraisesshapelyGEOSExceptionr   
ValueError	TypeErrorformat)msgr   r   r   test_from_invalid_dimg   s    "rN   c                  C   sJ   ddgg} t tj t| }|j W d   dS 1 sw   Y  dS )zTest for issue #486gS^g8tB@N)rF   rG   rH   rI   r   r   )r   lsr   r   r   test_from_single_coordinate}   s
   
"rP   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestLineStringc                 C   s   t ddg}t|jdksJ |jd d  ddgksJ |jdks#J t|jdks,J |jd dks5J |jd dks>J tt |jd  W d    n1 sSw   Y  |jddd	ksbJ d S )
Nr   r	   r   )r   r   r
   r   r-   r   r:   r   )typecoordinates)	r   r   r   boundstuplerF   rG   
IndexError__geo_interface__)selfr   r   r   r   test_linestring   s   zTestLineString.test_linestringc                 C   s&   t  }|jdks
J |jdksJ d S )NzLINESTRING EMPTYr#   )r   wktlength)rX   l_nullr   r   r   test_linestring_empty   s   z$TestLineString.test_linestring_emptyc                 C   s   d}t |}t|}||du sJ ||du sJ ||kdu s$J ||kdu s,J t |}t|}||du s=J ||du sFJ ||kdu sNJ ||kdu sVJ dS )zz
        Test equals predicate functions correctly regardless of the order
        of the inputs. See issue #317.
        )r   r   )r:   r   )r:   r:   r^   FTN)r   r   __eq__)rX   r   rO   lrls_clonelr_cloner   r   r   test_equals_argument_order   s   z)TestLineString.test_equals_argument_orderc                 C   sH   ddl m} tddg}tddgddgg}t|j}||| d S )	Nr   )assert_array_equalr   r	   r   r   r
   r   )numpy.testingrd   r   r3   r4   r6   r   )rX   rd   r   expectedr8   r   r   r   test_numpy_linestring_coords   s
   z+TestLineString.test_numpy_linestring_coordsN)__name__
__module____qualname__rY   r]   rc   rg   r   r   r   r   rQ      s
    rQ   c                  C   sz   t ddg} tt ddg| _W d    n1 sw   Y  tt d| jd< W d    d S 1 s6w   Y  d S )Nr   r	   )      rk   r$   r   )r   rF   rG   AttributeErrorr   rK   r   r   r   r   test_linestring_immutable   s   "rm   c                  C   sZ   t ddg} t| }|jdksJ |jdksJ |jtdks#J | | ks+J d S )Nr   r	   r   r:   r<   )r   r3   r4   ndimsizedtypeitem)r   arrr   r   r   test_linestring_array_coercion   s   
rs   )numpyr3   rF   rH   r   r   r   shapely.coordsr   r   r   r   r   r!   r&   r(   r/   r2   r5   r9   r?   markfilterwarningsrN   rP   rQ   rm   rs   r   r   r   r   <module>   s.    
	

?
