
    ]jh                     P    d dl Z d dlZd dlT  G d de j                  Zd Zd ZdS )    N)*c                   .   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1S )2TestElementShapec                     dddddddd}t          |          }t          d	d
dddd          }|                     ||           |dz  }t                      }|                     ||           d S )Nrect4250512010)tagrxryxywidthheight2   3      
         ztranslate(2))RectassertEqualassertNotEqualselfvaluesee2e3s        J/home/agentuser/manim-venv/lib/python3.11/site-packages/test/test_shape.pytest_rect_dictzTestElementShape.test_rect_dict	   s    
 
 LL"b"b!Q''B
nVVAr"""""    c                    dddddd}t          |          }t          dddd          }t          dddd          }|                     ||           |                     ||           t                      }|                     ||           d S )	Nr   0100)r   x1y1x2y2r   0px100pxd   )
SimpleLiner   r   r   r    r!   r"   r#   e4s         r$   test_line_dictzTestElementShape.test_line_dict   s    
 
 v5'7331c3''BB\\Ar"""""r&   c                     dddddd}t          |          }t          ddd	d
          }|                     ||           t                      }|                     ||           d S )Nellipse4.0z8.022.433.33)r   r   r   cxcyffffff6@
ףp=@@r      )Ellipser   r   r   s        r$   test_ellipse_dictz"TestElementShape.test_ellipse_dict*   sx    
 
 FOOT5!Q''BYYAr"""""r&   c                 6   ddddd}t          |          }t          ddd          }|                     ||           t                      }|                     ||           |                                }|                     t	          |          d	           d S )
Ncircler7   r8   r9   )r   rr:   r;   r<   r=   r   zcM26.4,33.33A4,4 0 0,1 22.4,37.33 A4,4 0 0,1 18.4,33.33 A4,4 0 0,1 22.4,29.33 A4,4 0 0,1 26.4,33.33Z)Circler   r   dPath)r   r    r!   r"   r#   circle_ds         r$   test_circle_dictz!TestElementShape.test_circle_dict8   s    	
 
 6NND%##BXXAr"""3355h~	@ 	@ 	@ 	@ 	@r&   c           
      <   ddd}t          |          }t          dddddddd          }|                     ||           t                      }|                     ||           |                                }|                     t	          |          d	           d S )
Npolyline0,100 50,25 50,75 100,0r   pointsr   r0   r      K   zM 0,100 L 50,25 L 50,75 L 100,0)Polyliner   r   rE   rF   )r   r    r!   r"   r#   
polyline_ds         r$   test_polyline_dictz#TestElementShape.test_polyline_dictH   s    /
 
 Vab"b"c155BZZAr"""SSUU
j))+LMMMMMr&   c           
      <   ddd}t          |          }t          dddddddd          }|                     ||           t                      }|                     ||           |                                }|                     t	          |          d	           d S )
NrJ   rK   rL   r   r0   r   rN   rO   z!M 0,100 L 50,25 L 50,75 L 100,0 Z)Polygonr   r   rE   rF   )r   r    r!   r"   r#   	polygon_ds         r$   test_polygon_dictz"TestElementShape.test_polygon_dictU   s    /
 
 FOOQRRS!44BYYAr"""CCEE	i*MNNNNNr&   c                 v    |                      t          ddd          t          dd          k               d S )Nr   r   r   )centerr   r   0,0      $@rY   rC   )
assertTruer?   rD   r   s    r$   test_circle_ellipse_equalz*TestElementShape.test_circle_ellipse_equalb   s<    v"<<<eW[@\@\@\\]]]]]r&   c                 R   t          dd          }|t                              t                              d                    z  }|                                 |dz  }|                                 |dz  }|                                 |dz  }|                                 |dz  }|                                 |                     t          t                      t                               |                     t          t                      t                                d S )	NrZ   r[   r\   r   ztranslate(10,1)zscale(10,1)zrotate(10deg)z	skewy(10))	rD   Matrixskew_xAngledegreesreifyassertFalse
isinstancer?   )r   cps      r$    test_transform_circle_to_ellipsez1TestElementShape.test_transform_circle_to_ellipsee   s    %4(((emmB//000				!!												O				FHHg66777GIIv6677777r&   c                    t                      }t          |                                          }|                     |d           |dz  }t          |                                          }|                     |d           |dz  }t          |                                          }|                     |d           d S )NzIM 1,0 A 1,1 0 0,1 0,1 A 1,1 0 0,1 -1,0 A 1,1 0 0,1 0,-1 A 1,1 0 0,1 1,0 Zz
scale(2,1)zIM 2,0 A 2,1 0 0,1 0,1 A 2,1 0 0,1 -2,0 A 2,1 0 0,1 0,-1 A 2,1 0 0,1 2,0 Zzscale(0.5,1))rD   rF   rE   r   )r   rB   rh   s      r$   test_circle_decompz#TestElementShape.test_circle_decompt   s    ghhh,ghhh. ghhhhhr&   c                 4   t                      }|dz  }|                     |j        d           |                     |j        d           |                     |j        t
                              d                     |                     |j        d           d S )N+translate(40,40) rotate(15deg) scale(2,1.5)g       @      ?   )(   rq   )	rD   assertAlmostEqualimplicit_rximplicit_ryrotationrc   rd   r   implicit_centerr   shapes     r$   test_circle_implicitz%TestElementShape.test_circle_implicit   s    >>u0#666u0#666u~u}}R/@/@AAA.99999r&   c                    t                      }|dz  }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        t          
                    d                     d S )Nrn   rq   r   ro   r   rp   )r   rr   
implicit_x
implicit_yimplicit_widthimplicit_heightrs   rt   ru   rc   rd   rw   s     r$   test_rect_implicitz#TestElementShape.test_rect_implicit   s    >>u/444u/444u3Q777u4c:::u0!444u0!444u~u}}R/@/@AAAAAr&   c                    t          dddd          }|dz  }|                     |j        d           |                     |j        d           t	          dd          dz  }|                     |j        d|d         z              |                     |j        d|d         z              |                     |j        t          	                    d                     d S )Nr      rn   rq   zrotate(15deg) scale(2,1.5)rp   )
r1   rr   implicit_x1implicit_y1Pointimplicit_x2implicit_y2ru   rc   rd   )r   rx   ri   s      r$   test_line_implicitz#TestElementShape.test_line_implicit   s    1aA&&>>u0"555u0"555!QKK66u0"qt)<<<u0"qt)<<<u~u}}R/@/@AAAAAr&   c                     t          d          }t                                          dd          dz  }|                     ||           |                                 |                     ||           d S )Nr   )rC   vector-effectnon-scaling-strokescale(2))rD   setr   re   r   shape1shape2s      r$   %test_circle_equals_transformed_circlez6TestElementShape.test_circle_equals_transformed_circle   sk    !o/CDDzQ((((((((r&   c                     t          dddd          }t          dddd                              dd          dz  }|                     ||           |                                 |                     ||           d S )Nr   r   )r   r   r   r   r   r   r   r   r   r   r   re   r   s      r$   !test_rect_equals_transformed_rectz2TestElementShape.test_rect_equals_transformed_rect   s    Qa222aAq!!%%o7KLLzY((((((((r&   c                    t          dddddd          }t          dddddd                              dd          dz  }|                     ||           |                                 |                     ||           d S )Nr   r   r   g      ?r   r   r   r   r   s      r$   #test_rrect_equals_transformed_rrectz4TestElementShape.test_rrect_equals_transformed_rrect   s    aAq!Q''aAq#s++//AUVVYcc((((((((r&   c                     t          dddd          }t          dddd                              dd          dz  }|                     ||           |                                 |                     ||           d S Nr   r   r   r   r   r   )r1   r   r   re   r   s      r$   !test_line_equals_transformed_linez2TestElementShape.test_line_equals_transformed_line   s~    Aq!Q''Aq!Q''++O=QRRU__((((((((r&   c                     t          dddd          }t          dddd                              dd          dz  }|                     ||           |                                 |                     ||           d S r   rP   r   r   re   r   s      r$   )test_polyline_equals_transformed_polylinez:TestElementShape.test_polyline_equals_transformed_polyline   ~    !Q1%%!Q1%%))/;OPPS]]((((((((r&   c                     t          dddd          }t          dddd                              dd          dz  }|                     ||           |                                 |                     ||           d S r   r   r   s      r$   'test_polygon_equals_transformed_polygonz8TestElementShape.test_polygon_equals_transformed_polygon   r   r&   c                     t          dddd          }t          dddd          dz  }|                     ||           d S )Nr   r   r   r   )rP   rT   r   r   s      r$   +test_polyline_not_equal_transformed_polygonz<TestElementShape.test_polyline_not_equal_transformed_polygon   sI    !Q1%%Aq!$$z1FF+++++r&   c                     t          t          dddd                    dz   }t          dddd                              dd          dz  }|                     ||           d S )Nr   r   zr   r   r   r   )rF   rP   rT   r   r   r   s      r$   /test_polyline_closed_equals_transformed_polygonz@TestElementShape.test_polyline_closed_equals_transformed_polygon   sh    hq!Q**++c1Aq!$$((:NOOR\\(((((r&   c                 z    t          d          }|t          dddd          z  }|                     |d           d S )NzM 0,0 zr   r   zM0,0zM0,0h1v1h-1z)rF   r   r   )r   paths     r$   test_path_plus_shapez%TestElementShape.test_path_plus_shape   sB    IQ1a   233333r&   c                     t                      }t          d          }|                     ||           t                      }t          d          }|                     ||           d S )Nred)strokefill)rD   r   r   s      r$    test_circle_not_equal_red_circlez1TestElementShape.test_circle_not_equal_red_circle   sf    u%%%FF+++U###FF+++++r&   c                    t                      t          d          t          dd          t          ddd          t          dddd          t          dd          t          ddd          t          dddd          t          dddd          t          dddddd          t          dddddd          f}|D ]}|                     |d         |           d S )Nr   r   )r   )r   r   )r   r   r   )r   r   r   r   r   r   )r   r   r   shapesss      r$   test_rect_initializez%TestElementShape.test_rect_initialize   s    FFGGAJJAqMMAq!aLLLaq!!!aq+++qa1---Aq!Q""Aq!a(((
  	+ 	+AVAY****	+ 	+r&   c                 \   t                      t          dd          t          dd          t          ddd          t          dddd          t          dddd          t          dddd          t          t                                t          dddd	          t          dddd
          t          dddd          t          ddddd          t          t                                t          t                                f}|D ]}|                     |d         |           d S )Nr   rX   r   r\   r.   r(   r   )r   )r:   r;   rC   )r:   r;   r   )r:   r;   r         ?)r:   r;   r   r   )rD   r?   r   r   s      r$   test_circle_initializez'TestElementShape.test_circle_initialize   s.   HH1aLL&A&&&5%##Ca##Cq)))Aq!"""688!11--..1AQ//001AQ//001AQc::;;799FHH
   	+ 	+AVAY****	+ 	+r&   c                    t          dddd          t          dd          t          d          t          dd          t          dd          t          dt          dd                    t          d	d
i          t          t          dddd                    t          d          t          dddd          f
}|D ]}|                     |d         |           d S )Nr   r   rX   r   r   rX   r   rM   rZ   1,1rM   0,0,1,1zM0,0L1,1)rP   r   rF   r1   r   r   s      r$   test_polyline_initializez)TestElementShape.test_polyline_initialize  s    Q1a  VV$$,---UE""UF##UE!QKK((h	*++XaAq))**q!Q""
  	+ 	+AVAY****	+ 	+r&   c                    t          dddd          t          dd          t          d          t          dd          t          dd          t          dt          dd                    t          d	d
i          t          t          dddd                    t          d
          t          d          f
}|D ]}|                     |d         |           d S )Nr   r   rX   r   r   r   rZ   r   rM   r   z	M0,0L1,1z)rT   r   rP   rF   r   r   s      r$   test_polygon_initializez(TestElementShape.test_polygon_initialize  s    Aq!QFF##+,,,E5!!E6""E5A;;''Xy)**HQ1a(())I
  	+ 	+AVAY****	+ 	+r&   c                    t          d          }|                     t          |          d           t          d          }|                     t          |          d           t	          d          }|                     t          |          d           t          d          }|                     t          |          d           t          d          }|                     t          |          d           t          d          }|                     t          |          d           t          d          }|                     t          |          d	           d S )
Nr   r   z'Rect(width=1, height=1, fill='#ff0000')z(Ellipse(cx=0, cy=0, r=1, fill='#ff0000')z'Circle(cx=0, cy=0, r=1, fill='#ff0000')z:SimpleLine(x1=0.0, y1=0.0, x2=0.0, y2=0.0, fill='#ff0000')z"Polygon(points='', fill='#ff0000')z#Polyline(points='', fill='#ff0000')zPath(fill='#ff0000'))	r   r   reprr?   rD   r1   rT   rP   rF   r   r   s     r$   test_shapes_reprz!TestElementShape.test_shapes_repr"  sC   ea"KLLLa"LMMMa"KLLLE"""a"^___a"FGGG%   a"GHHHea"899999r&   c                 b   t                      dz  }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           t	                      dz  }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           t                      dz  }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           t                      dz  }|                     |                    d          d            |                     |                    d          d            |                     |                    d          d           |                     |                    d          d           t                      dz  }|                     |                    d          d            |                     |                    d          d            |                     |                    d          d           |                     |                    d          d           t          d	          dz  }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           t          d	          dz  }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           t          d
d
dd          dz  }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           d S )Nz	scale(20)F)r   r   r   r   T)r   r   r   r   )r   r   r   )r   r   r   )r   r   r   r   z0,0 0,1 1,1 1,0 0,0r   r   )	r   r   bboxr   rD   r?   rT   rP   r1   r   s     r$   test_shape_bboxz TestElementShape.test_shape_bbox2  s   FF[ 555~666AFF5MM>:::AFF4LL,777HH{"777'9:::AFF5MM+=>>>AFF4LL.999II#777'9:::AFF5MM+=>>>AFF4LL.999II#---t,,,AFF5MM<888AFF4LL,777JJ$---t,,,AFF5MM<888AFF4LL,777)**[8555~666AFF5MM>:::AFF4LL,777*++k9555~666AFF5MM>:::AFF4LL,777q!Q""[0555~666AFF5MM>:::AFF4LL,77777r&   c                    t          dddd          }|                                }t          |                                          }|                     ||           t          |                                          dz                                  }|dz                                  }|                     ||           d S )Nr   r>   r   zrotate(0.5turns))r   rE   rF   r   )r   rC   abs       r$   $test_rect_rot_equal_rect_path_rotatez5TestElementShape.test_rect_rot_equal_rect_path_rotate\  s    RACCEEGGIIKKA!##%%[[--0022##&&((Ar&   c           	          t          | t                                 t          | t          dddd                     t                      dz  }t          dddd          }|dz  }|                     ||           dS )	zReifying a rotated rect.r   r   rotate(-90) translate(20,0)r   r   r   zrotate(-90, 0, -20)N)reification_checksr   r   )r   rx   ts      r$   test_rect_reifyz TestElementShape.test_rect_reifye  s}    4(((4aAq!1!122266CA	""E"""""r&   c           	      ~    t          | t                                 t          | t          dddd                     dS )zReifying a rotated circle.r   r   N)r   rD   r^   s    r$   test_circle_reifyz"TestElementShape.test_circle_reifyo  s:    4***41a!3!344444r&   c           	          t          | t          dd                     t          | t          dddd                     dS )zReifying a rotated ellipse.r   r   r      r>   N)r   r?   r^   s    r$   test_ellipse_reifyz#TestElementShape.test_ellipse_reifyt  sC    4A!!4!4!45554Aq!!4!455555r&   c                 z    t          | t          d                     t          | t          d                     dS )zReifying a rotated polyline.0,0 1,1 2,20,0 1,1 2,0N)r   rP   r^   s    r$   test_polyline_reifyz$TestElementShape.test_polyline_reifyy  s8    4-!8!89994-!8!899999r&   c                 z    t          | t          d                     t          | t          d                     dS )zReifying a rotated polygon.r   r   N)r   rT   r^   s    r$   test_polygon_reifyz#TestElementShape.test_polygon_reify~  s8    4!7!78884!7!788888r&   c           	          t          | t          dddd                     t          | t          dddd                     dS )zReifying a rotated line.r   r   r   N)r   r1   r^   s    r$   test_line_reifyz TestElementShape.test_line_reify  sD    4Aq!Q!7!78884Aq!Q!7!788888r&   c                 z    t          | t          d                     t          | t          d                     dS )zReifying a path.zM0,0L1,1L1,0zzM100,100L70,70L45,0zN)r   rF   r^   s    r$   test_path_reifyz TestElementShape.test_path_reify  s9    4o!6!67774&<!=!=>>>>>r&   c                    |                      t          dddd                                          d           |                      t          dddd                                          d           |                      t          ddd                                          d           |                      t	          dddd                                          d           |                      t	          dddd                                          d           |                      t          d                                          d           dS )zTesting Degenerate Shapesr   r0    r   N)r   r   rE   rD   r?   rT   r^   s    r$   test_shapes_degeneratez'TestElementShape.test_shapes_degenerate  s!   aAs++--//444aC++--//4441a**,,b1111Qs++--//444AsA..0022B777+++--//44444r&   c                    t          j        d          }t                              |          }|d         }t	          d          D ]}|                                }|                     |j        d           |d         }t	          d          D ]}|                                }|                     |j        d           dS )zTesting Issue 95 stroke-widtha  <?xml version="1.0" encoding="utf-8" ?>
                        <svg>
                        <ellipse style="stroke:#fc0000;stroke-width:1;fill:none" cx="0" cy="0" rx="1" ry="1" transform="scale(100) rotate(-90,0,0)"/>
                        <rect style="stroke:#fc0000;stroke-width:1;fill:none" x="0" y="0" width="10" height="10" transform="scale(100) rotate(-90,0,0)"/>
                        </svg>r   r   r   r   N)ioStringIOSVGparserangere   r   stroke_width)r   qmr6   ir   s         r$   test_issue_95zTestElementShape.test_issue_95  s    K " # #
 IIaLLA$q 	& 	&AmmooGG-s333tq 	  	 A::<<DD*C00000r&   c                    t          j        d          }t                              |d          }t	          |d                   }t	          |d                   }|                     ||           |                                 t          |          }t          |          }|                     ||           |                                 |                                 |                     ||           dS )z.Test Issue of inverted circle reified locationa  <?xml version="1.0" encoding="utf-8" ?>
                        <svg
                            width="82.475mm"
                            height="35.215mm"
                            viewBox="24.766026 -242.607513 82.475082 35.214996"
                            version="1.1"
                        >
                        <circle
                            transform="scale(1,-1)"
                            style="opacity:0.99;fill:none;stroke:#ff0000;stroke-width:0.0264584;stroke-miterlimit:4;stroke-dasharray:none"
                            r="2"
                            cx="100.41245"
                            cy="211.59723"
                            id="circle2" /></svg>
        Fre   r   Nr   r   r   r   copyr   re   rF   r   r   r   rC   s       r$   test_issue_99zTestElementShape.test_issue_99      K    IIauI%%1JJ1JJA				GGGGA								Ar&   c                    t          j        d          }t                              |d          }t	          |d                   }t	          |d                   }|                     ||           |                                 t          |          }t          |          }|                     ||           |                                 |                                 |                     ||           dS )z5Test Issue of double inverted circle reified locationa  <?xml version="1.0" encoding="utf-8" ?>
                        <svg
                            width="82.475mm"
                            height="35.215mm"
                            viewBox="24.766026 -242.607513 82.475082 35.214996"
                            version="1.1"
                        >
                        <circle
                            transform="scale(-1,-1)"
                            style="opacity:0.99;fill:none;stroke:#ff0000;stroke-width:0.0264584;stroke-miterlimit:4;stroke-dasharray:none"
                            r="2"
                            cx="100.41245"
                            cy="211.59723"
                            id="circle2" /></svg>
        Fr   r   Nr   r   s       r$   test_issue_99bzTestElementShape.test_issue_99b  r   r&   c                    t          j        d          }t                              |d          }t	          |d                   }t	          |d                   }|                     ||           |                                 t          |          }t          |          }|                     ||           |                                 |                                 |                     ||           dS )z,Test Issue of inverted rect reified locationa  <?xml version="1.0" encoding="utf-8" ?>
                        <svg
                            width="82.475mm"
                            height="35.215mm"
                            viewBox="24.766026 -242.607513 82.475082 35.214996"
                            version="1.1"
                        >
                        <rect
                            transform="scale(1,-1)"
                            style="opacity:0.99;fill:none;stroke:#ff0000;stroke-width:0.0264584;stroke-miterlimit:4;stroke-dasharray:none"
                            rx="2"
                            x="100.41245"
                            y="211.59723"
                            width="100"
                            height="100"
                            id="circle2" /></svg>
        Fr   r   Nr   r   s       r$   test_issue_99czTestElementShape.test_issue_99c      K   " IIauI%%1JJ1JJA				GGGGA								Ar&   c                    t          j        d          }t                              |d          }t	          |d                   }t	          |d                   }|                     ||           |                                 t          |          }t          |          }|                     ||           |                                 |                                 |                     ||           dS )z3Test Issue of double inverted rect reified locationa  <?xml version="1.0" encoding="utf-8" ?>
                        <svg
                            width="82.475mm"
                            height="35.215mm"
                            viewBox="24.766026 -242.607513 82.475082 35.214996"
                            version="1.1"
                        >
                        <rect
                            transform="scale(-1,-1)"
                            style="opacity:0.99;fill:none;stroke:#ff0000;stroke-width:0.0264584;stroke-miterlimit:4;stroke-dasharray:none"
                            rx="2"
                            x="100.41245"
                            y="211.59723"
                            width="100"
                            height="100"
                            id="circle2" /></svg>
        Fr   r   Nr   r   s       r$   test_issue_99dzTestElementShape.test_issue_99d  r   r&   c                     t          j        d          }t                              |          }|                     t          |          d           dS )z$Testing Issue 104 degenerate parsinga,  <?xml version="1.0" encoding="utf-8" ?>
                        <svg>
                        <polygon points=""/>
                        <polygon/>
                        <rect x="0" y="0" width="0" height="10"/>
                        <circle cx="0" cy="0" r="0"/>
                        </svg>r   N)r   r   r   r   r   len)r   r   r   s      r$   test_issue_104zTestElementShape.test_issue_104   sK    K " # # IIaLLQ#####r&   c                    t          dd          }t          |          }|                     t          |          d           t          dd          }t          |          }|                     t          |          d           dS )z
        Polylines were checked whether the payload had a length of one and replaced them. However that was wrong
        as when the payload was *actually* 1 it made it a point and then did not produce the single point.
        r   r   N)rP   r   r   rT   )r   ri   r   s      r$   test_issue_172zTestElementShape.test_issue_172,  sr    
 QqMMQKKQ###AqMMAJJQ#####r&   c                 2   ddddddd}t          |          }t          dd	d
d          }|                     ||           t          |          }d|_        |                     ||           d|d<   t          |          }|                     ||           d S )Nr   z-4r
   r   r   r   )r   r   r   r   r   r   r   r   r   r   Fr   r   )r   r   _strictr   r2   s         r$   test_rect_strictz!TestElementShape.test_rect_strict9  s    
 
 LL"b"b!!B&\\
B###t&\\Br&   c                   	 dd l }t          dddd          t          ddd          t          dddd          t	          d	
          t          d
          g}|D ]	|                    ddd          }	                    |          }	fd|D             }t          |||          D ]6\  }}}| 	                    t          |          t          |                     7d S )Nr   r   r   i,  iT  r   r      )r   r   r   r  r   r   r   )r  r  r  )r0   x   r     c                 :    g | ]}                     |          S  point.0ri   rx   s     r$   
<listcomp>z7TestElementShape.test_shape_npoints.<locals>.<listcomp>[  #    ...Q%++a.....r&   )numpyr   rD   r?   rT   rP   linspacenpointzipr   r   
r   npr   posv1v2ri   p1p2rx   s
            @r$   test_shape_npointsz#TestElementShape.test_shape_npointsN  s
   Rc""2r1BB##9:::FGGG
  	7 	7E++aD))Cc""B....#...B b"-- 7 7	2r  rE"II66667	7 	7r&   c                   	 ddl }t          dddd          t          ddd          t          dddd          t	          d          t          d          t          d          g}|D ]	|                    ddd          }	                    |          }|1	fd	|D             }t          |||          D ]6\  }}}| 
                    t          |          t          |                     7dS )
z{
        If the length of a shape is 0 the npoint code calls 0-length fallback which used an illegal round command
        r   N)rX   rX   rX   r   )rX   rX   rX   rX   z
M0,0zM1,1zr   r
  c                 :    g | ]}                     |          S r  r  r  s     r$   r  z<TestElementShape.test_shape_npoints_len0.<locals>.<listcomp>s  r  r&   )r  r   rD   r?   rT   rP   rF   r  r  r  r   r   r  s
            @r$   test_shape_npoints_len0z(TestElementShape.test_shape_npoints_len0`  s    	Aq!1aOOAq!Q3444<===
  	7 	7E++aD))Cc""Bz....#...B b"-- 7 7	2r  rE"II66667	7 	7r&   c                    dd l }t          d          }|                    ddd          }|                    |          }t	          t          |                    D ]i}||         }|                    ||                   }|                     |d         |d                    |                     |d         |d                    jd S )Nr   aJ  M 4594.76424273,1787.94321633 C 4582.20211202,1787.86035528 4571.02257722,1787.8800841 4561.51723033,1788.01029433 C 4552.01148887,1788.14050456 4544.17164921,1788.39697926 4538.36624578,1788.75801672 C 4532.56044777,1789.12102706 4528.29783829,1789.91017998 4528.13803482,1789.96778814 C 4499.59674127,1800.20732345 4482.59365252,1807.33408452 4460.51078644,1822.22520278 C 4427.94718047,1844.1833827 4410.22517341,1855.51652611 4388.9239633,1876.84176593 C 4370.029275,1895.75784027 4345.39705043,1930.28225449 4336.63903135,1945.92081894 C 4328.01122251,1961.3264649 4304.48815236,2015.51609632 4294.15340576,2054.0867343 C 4287.16979702,2080.14929854 4284.79681419,2117.73112791 4281.09884363,2145.82220972 C 4279.62312767,2157.03133775 4279.82436166,2175.09268056 4280.27417883,2189.42961619 L 4289.87540779,2190.26611828 L 4288.916587,2201.39633102 L 4280.67901427,2200.68214763 C 4280.91576015,2206.22200111 4281.14066873,2210.21748233 4281.14066873,2210.21748233 L 4281.14066873,2210.4542282 L 4261.31122881,2937.51619918 L 4861.38942017,2992.84765596 L 4862.09176627,2532.61051811 L 4862.2890545,2532.61051811 L 4862.21013921,2529.7932422 C 4839.05994381,2460.37146008 4825.96039996,2381.42736429 4825.96039996,2297.62366484 C 4825.96039996,2280.80523787 4826.50491547,2264.18449371 4827.53476003,2247.79102559 L 4766.64924502,2242.54513157 L 4767.60412005,2231.44806325 L 4828.39059637,2236.6833037 C 4837.10876322,2123.48957674 4869.70590819,2021.87587968 4918.36586621,1944.8818202 C 4964.40228536,1872.03854724 5025.02659075,1821.03997401 5093.12575258,1803.84228015 C 5038.09614679,1801.52256515 4954.58680138,1798.09673397 4850.52988688,1794.49385632 C 4773.90550609,1791.84072421 4696.39174997,1789.49224459 4636.28670719,1788.46693766 C 4621.2604465,1788.21046297 4607.32006022,1788.02185542 4594.75792951,1787.93899436 L 4594.76424273,1787.94321633r   e   )r  rF   r  r  r   r   r  rr   )r   r  ri   spacerM   nr  r  s           r$   #test_shape_npoints_points_issue_232z4TestElementShape.test_shape_npoints_points_issue_232x  s      ^  _  _Aq#&&%s5zz"" 	8 	8AAYFGGE!H%%E""6!9eAh777""6!9eAh7777	8 	8r&   N)3__name__
__module____qualname__r%   r4   r@   rH   rR   rV   r_   rj   rl   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r!  r&  r  r&   r$   r   r      s       # # #"# # # # # #@ @ @ N N NO O O^ ^ ^8 8 8	i 	i 	i: : :	B 	B 	BB B B) ) )) ) )) ) )) ) )) ) )) ) ), , ,
) ) )
4 4 4
, , ,+ + +"+ + +(+ + + + + + : : : (8 (8 (8T  # # #5 5 5
6 6 6
: : :
9 9 9
9 9 9
? ? ?
5 5 51 1 1$  :  :  >  >
$ 
$ 
$$ $ $     *7 7 7$7 7 70
8 
8 
8 
8 
8r&   r   c                 6   t          | |dz             t          | |dz             t          | |dz             t          | |dz             t          | |dz             t          | |dz             t          | |dz             t          | |dz             d S )	Nr   zrotate(12turn)ztranslate(20,0)zscale(2) translate(20,0)z$rotate(90) scale(-1) translate(20,0)zrotate(90) translate(20,0)z	skewX(10)z	skewY(10))correct_reify)testrx   s     r$   r   r     s    $ ==>>>$ 00111$ 11222$ ::;;;$ FFGGG$ <<===$+,,,$+,,,,,r&   c                     t          t          |                    }t          t          |                    }|                     ||           |                     ||           |                     ||           d S )N)absrF   r   r   )r,  rx   r   reifieds       r$   r+  r+    sp    tE{{D$u++GT5!!!We$$$Wd#####r&   )unittestr   svgelementsTestCaser   r   r+  r  r&   r$   <module>r3     s     				    {	8 {	8 {	8 {	8 {	8x( {	8 {	8 {	8|- - -$ $ $ $ $r&   