o
    h                     @   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'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   a/var/www/html/scripts/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_z   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    "rO   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)rG   rH   rI   rJ   r   r   )r   lsr   r   r   test_from_single_coordinate   s
   
"rQ   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tuplerG   rH   
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)rY   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__)rY   r   rP   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.testingre   r   r3   r4   r6   r   )rY   re   r   expectedr8   r   r   r   test_numpy_linestring_coords   s
   z+TestLineString.test_numpy_linestring_coordsN)__name__
__module____qualname__rZ   r^   rd   rh   r   r   r   r   rR      s
    rR   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	   )      rl   r$   r   )r   rG   rH   AttributeErrorr   rL   r   r   r   r   test_linestring_immutable   s   "rn   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   
rt   c                  C   s   t ddg} tjdd | dd W d    n1 sw   Y  tjdd | ddd W d    n1 s:w   Y  tjd	d | dddd
 W d    d S 1 sYw   Y  d S )Nr   r	   z@positional argument `quad_segs` for `offset_curve` is deprecatedrC   r      zSpositional arguments `quad_segs` and `join_style` for `offset_curve` are deprecatedroundzcpositional arguments `quad_segs`, `join_style`, and `mitre_limit` for `offset_curve` are deprecatedr   )r   rG   deprecated_calloffset_curve)line_stringr   r   r   &test_offset_curve_deprecate_positional   s    "rz   )numpyr3   rG   rI   r   r   r   shapely.coordsr   r   r   r   r   r!   r&   r(   r/   r2   r5   r9   r?   markfilterwarningsrO   rQ   rR   rn   rt   rz   r   r   r   r   <module>   s0    
	

>

