o
    Jf=                      @   s^   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 G dd dejZdS )    N)parseString)
LineStringMultiLineString
MultiPointMultiPolygonPointPolygon)GeometryCollectionc                   @   sL   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S )SvgTestCasec                    s  |j di  }zt| W n ty   tdt| w | }zt|}W n ty7   tdt| w d}|r|j}|jrF|d7 }|jsM|d7 } r_|dd	 fdd	 D  7 }t
j	||d
 }	t|	d}
|
|  W d   n1 sw   Y  ||ksJ dS )z*Helper function to check XML and debug SVGz"XML is not valid for SVG element: z#XML is not valid for SVG document: N_empty_invalid_,c                 3   s(    | ]}t |d  t  |  V  qdS )=N)str).0kkwrds i/home/deployuser/azure_apps/autowriter/venv/lib/python3.10/site-packages/shapely/tests/legacy/test_svg.py	<genexpr>'   s   & z(SvgTestCase.assertSVG.<locals>.<genexpr>z.svgwr   )svgparse_xml_string	ExceptionAssertionErrorr   
_repr_svg_	geom_typeis_emptyis_validjoinospathopenwritetoprettyxml)selfgeomexpectedr   svg_elemsvg_docdocsvg_output_dirfnamesvg_pathfpr   r   r   	assertSVG   s4    zSvgTestCase.assertSVGc                 C   s8   |  t d tdd}|  |d | j |ddd d S )N<g />      ze<circle cx="6.0" cy="7.0" r="3.0" stroke="#555555" stroke-width="1.0" fill="#66cc99" opacity="0.6" />zf<circle cx="6.0" cy="7.0" r="15.0" stroke="#555555" stroke-width="5.0" fill="#66cc99" opacity="0.6" />   scale_factor)r1   r   r'   gr   r   r   
test_point-   s   

zSvgTestCase.test_pointc                 C   s:   |  t d tddg}|  |d | j |ddd d S )Nr2   r3   r4         z<g><circle cx="6.0" cy="7.0" r="3.0" stroke="#555555" stroke-width="1.0" fill="#66cc99" opacity="0.6" /><circle cx="3.0" cy="4.0" r="3.0" stroke="#555555" stroke-width="1.0" fill="#66cc99" opacity="0.6" /></g>z<g><circle cx="6.0" cy="7.0" r="15.0" stroke="#555555" stroke-width="5.0" fill="#66cc99" opacity="0.6" /><circle cx="3.0" cy="4.0" r="15.0" stroke="#555555" stroke-width="5.0" fill="#66cc99" opacity="0.6" /></g>r5   r6   )r1   r   r8   r   r   r   test_multipoint>   s   
zSvgTestCase.test_multipointc                 C   sN   |  t d tg d}|  |d | j |ddd |  tddgd d S )	Nr2   ))r5      )i  i)i     zq<polyline fill="none" stroke="#66cc99" stroke-width="2.0" points="5.0,8.0 496.0,-6.0 530.0,20.0" opacity="0.8" />zr<polyline fill="none" stroke="#66cc99" stroke-width="10.0" points="5.0,8.0 496.0,-6.0 530.0,20.0" opacity="0.8" />r5   r6   r   r   zc<polyline fill="none" stroke="#ff3333" stroke-width="2.0" points="0.0,0.0 0.0,0.0" opacity="0.8" />)r1   r   r8   r   r   r   test_linestringS   s   
zSvgTestCase.test_linestringc                 C   sJ   |  t d |  tddgddggd |  tddgddggd d S )	Nr2   r;   r<   )   r@   )	      z<g><polyline fill="none" stroke="#66cc99" stroke-width="2.0" points="6.0,7.0 3.0,4.0" opacity="0.8" /><polyline fill="none" stroke="#66cc99" stroke-width="2.0" points="2.0,8.0 9.0,1.0" opacity="0.8" /></g>)rD   r=   z<g><polyline fill="none" stroke="#ff3333" stroke-width="2.0" points="2.0,3.0 2.0,3.0" opacity="0.8" /><polyline fill="none" stroke="#ff3333" stroke-width="2.0" points="2.0,8.0 9.0,1.0" opacity="0.8" /></g>)r1   r   r'   r   r   r   test_multilinestringj   s   z SvgTestCase.test_multilinestringc                 C   sV   |  t d tg dg dg}|  |d | j |ddd |  tg dd	 d S )
Nr2   )#   
   )-   rL   )   (   )rK   rA   rI   )rA      )rJ   rJ   rP   rA   rO   z<path fill-rule="evenodd" fill="#66cc99" stroke="#555555" stroke-width="2.0" opacity="0.6" d="M 35.0,10.0 L 45.0,45.0 L 15.0,40.0 L 10.0,20.0 L 35.0,10.0 z M 20.0,30.0 L 35.0,35.0 L 30.0,20.0 L 20.0,30.0 z" />z<path fill-rule="evenodd" fill="#66cc99" stroke="#555555" stroke-width="10.0" opacity="0.6" d="M 35.0,10.0 L 45.0,45.0 L 15.0,40.0 L 10.0,20.0 L 35.0,10.0 z M 20.0,30.0 L 35.0,35.0 L 30.0,20.0 L 20.0,30.0 z" />r5   r6   r   rN   rB   rN   rN   )rN   r   rS   z<path fill-rule="evenodd" fill="#ff3333" stroke="#555555" stroke-width="2.0" opacity="0.6" d="M 0.0,40.0 L 0.0,0.0 L 40.0,40.0 L 40.0,0.0 L 0.0,40.0 z" />)r1   r   r8   r   r   r   test_polygon~   s$   	
zSvgTestCase.test_polygonc                 C   sb   |  t d |  ttg dtg dg dggd |  ttg dtg dgd d S )	Nr2   )rT   )rA   rL   )rL   rP   rT   )rA   rJ   )rK   rP   )rK   rK   )rP   r5   )rL   rA   rV   )rQ   )rA   rM   )rA      rQ   av  <g><path fill-rule="evenodd" fill="#66cc99" stroke="#555555" stroke-width="2.0" opacity="0.6" d="M 40.0,40.0 L 20.0,45.0 L 45.0,30.0 L 40.0,40.0 z" /><path fill-rule="evenodd" fill="#66cc99" stroke="#555555" stroke-width="2.0" opacity="0.6" d="M 20.0,35.0 L 10.0,30.0 L 10.0,10.0 L 30.0,5.0 L 45.0,20.0 L 20.0,35.0 z M 30.0,20.0 L 20.0,15.0 L 20.0,25.0 L 30.0,20.0 z" /></g>)   rY   )x      )r[      rX   rR   a<  <g><path fill-rule="evenodd" fill="#ff3333" stroke="#555555" stroke-width="2.0" opacity="0.6" d="M 140.0,140.0 L 120.0,145.0 L 145.0,130.0 L 140.0,140.0 z" /><path fill-rule="evenodd" fill="#ff3333" stroke="#555555" stroke-width="2.0" opacity="0.6" d="M 0.0,40.0 L 0.0,0.0 L 40.0,40.0 L 40.0,0.0 L 0.0,40.0 z" /></g>)r1   r   r   rG   r   r   r   test_multipolygon   s(   
	

zSvgTestCase.test_multipolygonc                 C   sT   |  t d |  ttddtddggd |  tddtddgd d S )Nr2   r4   r=   )r>   rD   )r@   r>   z<g><circle cx="7.0" cy="3.0" r="3.0" stroke="#555555" stroke-width="1.0" fill="#66cc99" opacity="0.6" /><polyline fill="none" stroke="#66cc99" stroke-width="2.0" points="4.0,2.0 8.0,4.0" opacity="0.8" /></g>z<g><circle cx="7.0" cy="3.0" r="3.0" stroke="#555555" stroke-width="1.0" fill="#ff3333" opacity="0.6" /><polyline fill="none" stroke="#ff3333" stroke-width="2.0" points="4.0,2.0 4.0,2.0" opacity="0.8" /></g>)r1   r	   r   r   unionrG   r   r   r   test_collection   s   zSvgTestCase.test_collectionN)__name__
__module____qualname__r1   r:   r?   rC   rH   rU   r]   r_   r   r   r   r   r
      s    &r
   )r"   unittestxml.dom.minidomr   r   shapely.geometryr   r   r   r   r   r   shapely.geometry.collectionr	   TestCaser
   r   r   r   r   <module>   s    