o
    A+ i=                      @   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/app/PaddleOCR-VL-test/.venv_paddleocr/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_Z	geom_typeZis_emptyZis_validjoinospathopenwriteZtoprettyxml)selfZgeomexpectedr   Zsvg_elemZsvg_docdocZsvg_output_dirfnameZ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" />   Zscale_factor)r(   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 )Nr)   r*   r+         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>r,   r-   )r(   r   r.   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 )	Nr)   ))r,      )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" />r,   r-   r   r   zc<polyline fill="none" stroke="#ff3333" stroke-width="2.0" points="0.0,0.0 0.0,0.0" opacity="0.8" />)r(   r   r.   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 )	Nr)   r1   r2   )   r6   )	      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>)r:   r3   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>)r(   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 )
Nr)   )#   
   )-   rB   )   (   )rA   r7   r?   )r7      )r@   r@   rF   r7   rE   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" />r,   r-   r   rD   r8   rD   rD   )rD   r   rI   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" />)r(   r   r.   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 )	Nr)   )rJ   )r7   rB   )rB   rF   rJ   )r7   r@   )rA   rF   )rA   rA   )rF   r,   )rB   r7   rL   )rG   )r7   rC   )r7      rG   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>)   rO   )x      )rQ      rN   rH   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>)r(   r   r   r=   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 )Nr)   r+   r3   )r4   r:   )r6   r4   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>)r(   r	   r   r   unionr=   r   r   r   test_collection   s   zSvgTestCase.test_collectionN)__name__
__module____qualname__r(   r0   r5   r9   r>   rK   rS   rU   r   r   r   r   r
      s    &r
   )r   ZunittestZxml.dom.minidomr   r   Zshapely.geometryr   r   r   r   r   r   Zshapely.geometry.collectionr	   ZTestCaser
   r   r   r   r   <module>   s    