
    ]j3                     <    d dl Z d dlT  G d de j                  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 S )!TestPathzTests of the SVG Path element.c                 X   t          d          }t          |                                          D ]x\  }}|dk    r)|                     |                                d           n.|dk    r(|                     |                                d           |                     |d           yd S N'M0,0 50,50 100,100Z M0,100 50,50, 100,0r   zM 0,0 L 50,50 L 100,100 Z   zM 0,100 L 50,50 L 100,0)Path	enumerateas_subpathsassertEqualdassertLessEqualselfpathips       I/home/agentuser/manim-venv/lib/python3.11/site-packages/test/test_path.pytest_subpathszTestPath.test_subpaths	   s    =>>d..0011 	' 	'DAqAvv  (CDDDDa  (ABBB  A&&&&	' 	'    c                 r    t          d          }t          |                                          D ]\  }}d S )N )r
   r   r   r   s       r   test_subpath_degeneratez TestPath.test_subpath_degenerate   sA    Bxxd..0011 	 	DAq	 	r   c                    t          d          }t          |                                          D ]x\  }}|dk    r)|                     |                                d           n.|dk    r(|                     |                                d           |                     |d           yt          d          }t          |                                          }|                     t          |          d           d S )Nz+M0,0 50,0 50,50 0,50 Z L0,100 100,100 100,0r   zM 0,0 L 50,0 L 50,50 L 0,50 Zr	   zL 0,100 L 100,100 L 100,0z	M0,0ZZZZZ   )r
   r   r   r   r   r   listlen)r   r   r   r   subpathss        r   test_subpaths_no_movezTestPath.test_subpaths_no_move   s    ABBd..0011 	' 	'DAqAvv  (GHHHHa  (CDDD  A&&&&K  ((**++X*****r   c                 t    t          d          }|                     |                                d           d S )Nr      )r
   r   count_subpathsr   r   s     r   test_count_subpathszTestPath.test_count_subpaths#   s8    =>>,,..22222r   c                    t          d          }|                    d          }|                     |                                d           |                    d          }|                     |                                d           d S r   )r
   subpathr   r   )r   r   r'   s      r   test_subpathzTestPath.test_subpath'   sr    =>>,,q//&ABBB,,q//&?@@@@@r   c                 "   t                      }|                    dddd           |                    dd           |                    ddd	d
                                           |                     |                                d           d S )N   r+      r-      r/         @      @r-   !   d   r4      -      r9   "   8   zzKM 4,4 L 20,20 L 25,25 L 6,3 Q 20,33 100,100 T 13,45 T 16,16 T 34,56 T 4,4 Z)r
   movequadsmooth_quadclosedr   r   r$   s     r   test_move_quad_smoothzTestPath.test_move_quad_smooth.   s    vv		&(Hf555		(J'''8Xs;;BBDDD#pqqqqqr   c                 $   t                      }|                    dddd           |                    ddd           |                    ddd	d
                                           |                     |                                d           d S )Nr*   r,   r.   r0   r1   r3   r5   r8   r:   r=   zMM 4,4 L 20,20 L 25,25 L 6,3 C 20,33 25,25 100,100 S 13,45 16,16 S 34,56 4,4 Z)r
   r>   cubicsmooth_cubicrA   r   r   r$   s     r   test_move_cubic_smoothzTestPath.test_move_cubic_smooth5   s    vv		&(Hf555

8Xz222(Hh<<CCEEE#rsssssr   c                    d}d t                               |          D             }|                     g d|           g d}ddlm} t          d          D ]-}|                     |dd	           |dd	          f           .d
 t                               |          D             }|D ]T}|                     t          |d                   d           |                     t          |d                   d           Ud S )N)   r+   r+         	   r   c                     g | ]}|S  rR   .0es     r   
<listcomp>z-TestPath.test_convex_hull.<locals>.<listcomp>>       222a222r   )rH   rO   rL   rJ   )r3   )r4   )rX   rX   )rX   r4   r   )randint2   ic   c                     g | ]}|S rR   rR   rS   s     r   rV   z-TestPath.test_convex_hull.<locals>.<listcomp>F   rW   r   r4   r	   )Pointconvex_hullr   randomrY   rangeappendabs)r   ptshullrY   r   r   s         r   test_convex_hullzTestPath.test_convex_hull<   s)   .225,,S11222;;;TBBB CBB""""""r 	= 	=AJJR((''#r*:*:;<<<<225,,S11222 	- 	-AS1YY,,,S1YY,,,,	- 	-r   c                     t          d          }|                                 |                     |t          d                     d S )NzM1,0 22,7 Q 17,17 91,2zM 91,2 Q 17,17 22,7 L 1,0r
   reverser   r$   s     r   test_reverse_path_qzTestPath.test_reverse_path_qK   sB    ,--t$?@@AAAAAr   c                     t          d          }|                                 |                     |d           t          d          }|                                 |                     |d           d S )NzM1,0 M2,0 M3,0zM3,0 M2,0 M1,0zM1,0z M2,0z M3,0zzM3,0 Z M2,0 Z M1,0 Zrg   r$   s     r   test_reverse_path_multi_movez%TestPath.test_reverse_path_multi_moveP   sl    $%%/000'((566666r   c                     t          d          }|                                 |                     |t          d                     d S )Nz"M1,0 22,7 Q 17,17 91,2M0,0zM20,20zz%M20,20zM0,0zM 91,2 Q 17,17 22,7 L 1,0rg   r$   s     r   test_reverse_path_multipathz$TestPath.test_reverse_path_multipathX   sB    899t$KLLMMMMMr   c                 Z    t          d          }|dz  }|                     |d           d S )NzSM1,1 10,10 Q 17,17 91,2 T 9,9 C 40,40 20,0, 9,9 S 60,50 0,0 A 25,25 -30 0,1 30,30 zscale(2)r
   r   r   r   qs      r   test_path_mult_sideeffectz"TestPath.test_path_mult_sideeffect]   s7    ijj:tuuuuur   c                     t          d          }|                     |d           |                                D ]}|dz  }|                     |d           d S )NzZM1,1 10,10 Q 17,17 91,2 T 9,9 C 40,40 20,0, 9,9 S 60,50 0,0 A 25,25 -30 0,1 30,30 zM50,50zro   zeM 2,2 L 20,20 Q 34,34 182,4 T 18,18 C 80,80 40,0 18,18 S 120,100 0,0 A 50,50 -30 0,1 60,60 ZM100,100z)r
   r   r   )r   r   r   s      r   test_subpath_imult_sideeffectz&TestPath.test_subpath_imult_sideeffectb   s    pqqh	j 	j 	j !!## 	 	AOAAs	u 	u 	u 	u 	ur   c                 D   t          d          }|                                 |                     |d           t          d          }|                                 |                     |d           t          d          }t          |                                          }|d                                          |                     dt          |                     |d                                          |                     dt          |                     t          d	          }t          |                                          }|d                                          |                     d
t          |d                              |                     dt          |                     t          d          }t          |                                          }|d                                          |                     dt          |                     d S )NzM0,0 1,1zM1,1 0,0z	M0,0 M1,1z	M1,1 M0,0zM1,1 L5,5M2,1 L6,5M3,1 L7,5r	   z#M 1,1 L 5,5 M 6,5 L 2,1 M 3,1 L 7,5z#M 1,1 L 5,5 M 2,1 L 6,5 M 3,1 L 7,5zM1,1 L5,5M2,1 L6,5ZM3,1 L7,5zM 6,5 L 2,1 Zz%M 1,1 L 5,5 M 6,5 L 2,1 Z M 3,1 L 7,5z,M1,1 L5,5M2,1 6,5 100,100 200,200 ZM3,1 L7,5z9M 1,1 L 5,5 M 200,200 L 100,100 L 6,5 L 2,1 Z M 3,1 L 7,5)r
   rh   r   r   r   str)r   r   r   s      r   test_subpath_reversezTestPath.test_subpath_reversem   s   			J'''			K(((.//((>AGGG>AGGG/00((#hqk*:*:;;;@#a&&III?@@((TVYZ[V\V\]]]]]r   c                     t          d          }|d= |                     |d           t          d          }|d= |                     |d           t          d          }|d= |                     |d           d S )NM1,1 M2,2 M3,3 M4,4r"   M1,1 M2,2 M4,4M0,0 L 1,1 L 2,2 L 3,3 L 4,4zrI   zM0,0 L 1,1 L 2,2 L 4,4zzM0,0 L 1,1 L 2,2 M 3,3 L 4,4zrp   r   r   s     r   test_validation_deletezTestPath.test_validation_delete   s    &''aD,---011aD5666011aD566666r   c                     t          d          }|                    dd           |                     |d           t          d          }|                    dd           |                     |d           d S )	Nr{   r"   M3,3rz   zM0,0 L 1,1 L 2,2 L 4,4rI   L3,3M0,0 L 1,1 L 2,2 L 3,3 L 4,4)r
   insertr   r}   s     r   test_validation_insertzTestPath.test_validation_insert   sz    !""	F1222)**	F:;;;;;r   c                    t          d          }|                    d           |                     |d           t          d          }|                    d           |                     |d           |                    d           |                     |d           t          d	          }|                    d
           |                     |d           t          d          }|                    d           |                     |d           |                    d           |                     |d           d S )NzM1,1 M2,2 M3,3zM4,4rz   zM0,0 L 1,1 L 2,2 L 3,3zL4,4r   ZM0,0 L 1,1 L 2,2 L 3,3 L 4,4 Z	M1,1 M2,2	M3,3 M4,4M0,0 L 1,1 L 2,2
L 3,3 L4,4)r
   ra   r   r}   s     r   test_validation_appendzTestPath.test_validation_append   s/   !""	1222)**	:;;;	<===	1222#$$	:;;;	<=====r   c                    t          d          }|                    t          d                     |                     |d           t          d          }|                    t          d                     |                     |d           |                    t          d                     |                     |d           t          d          }|                    d           |                     |d           t          d          }|                    d           |                     |d           |                    d           |                     |d           d S )	Nr   r   rz   r   r   r   r   r   )r
   extendr   r}   s     r   test_validation_extendzTestPath.test_validation_extend   sG   	k""###1222#$$	l##$$$:;;;	c<===	1222#$$	:;;;	<=====r   c                     t          d          }t          d d          |d<   |                     |d           t          d          }t          d d          |d<   |                     |d           d S )Nrz   )rI   rI   r"   M1,1 M2,2 L3,3 M4,4r|   rI   M0,0 L 1,1 L 2,2 M3,3 L 4,4z)r
   Liner   Mover}   s     r   test_validation_setitemz TestPath.test_validation_setitem   sx    &''D%  !1222011D%  !:;;;;;r   c                     t          d          }d|d<   |                     |t          d                     t          d          }d|d<   |                     |t          d                     d S )	Nrz   r   r"   r   r|   r   rI   r   rp   r}   s     r   test_validation_setitem_strz$TestPath.test_validation_setitem_str   st    &''!D!677888011!D!?@@AAAAAr   c                 `   t          d          }|D ]}t          |t                    r|                                }|                    |          }|                     |j        |           |                     |j        |                    |                                                     d S )Nz=m 0,0 a 5.01,5.01 180 0,0 0,10 zm 0,0 a 65,65 180 0,0 65,66 z)	r
   
isinstanceArcget_start_t
point_at_tr   startend	get_end_t)r   mastart_ta_starts        r   test_arc_start_tzTestPath.test_arc_start_t   s     1 2 2 	E 	EA!S!! E--//,,w//  '222  Q[[]](C(CDDD	E 	Er   c                    t          d          }|                     |                                d           t          d          }|                     |                                d           |                     |                    d          d           |                     |                    d          d           t          d	          }|                     |                                d	           |                     |                    d
          d           |                     |                    d
          d           |                     |                                d	           d S )Nz m 0,0 a 5.01,5.01 180 0,0 0,10 z
M0,0 1,1 zzM 0,0 L 1,1 zT)relativezm 0,0 l 1,1 zFzM 0,0 L 1,1 ZzSM 4,4 L 20,20 L 25,25 L 6,3 Q 20,33 100,100 Q 180,167 13,45 T 16,16 T 34,56 T 4,4 z)smoothzkM 4,4 L 20,20 L 25,25 L 6,3 Q 20,33 100,100 Q 180,167 13,45 Q -154,-77 16,16 Q 186,109 34,56 Q -118,3 4,4 zzKM 4,4 L 20,20 L 25,25 L 6,3 Q 20,33 100,100 T 13,45 T 16,16 T 34,56 T 4,4 z)r
   r   r   r   r   s     r   test_relative_roundaboutz!TestPath.test_relative_roundabout   sJ   344 BCCC000d++_===e,,o>>>fgg uvvvE**  -Z  	[  	[  	[D))+xyyy uvvvvvr   c                    t          d          }|                     |                                d           t          d          }|                     |                                d           t          d          }|                     |                                d           t          d          }|                     |                                d           t          d	          }|                     |                                d
           t          d          }|                     |                                d           t          d          }|                     |                                d           t          d          }|                     |                                d           t          d                              d                                          }|                     |                                d           t          d                              d                                          }|                     |                                d           d S )Nz%M 4,4 L 20,20 L 25,25 L 6,3 Q 20,33 Zz)M 4,4 L 20,20 L 25,25 L 6,3 Q 20,33 4,4 Zz/M 4,4 L 20,20 L 25,25 L 6,3 Q 20,33 100,100 T Zz3M 4,4 L 20,20 L 25,25 L 6,3 Q 20,33 100,100 T 4,4 ZzM 4,4 L 20,20 L 25,25 L 6,3 Q Zz'M 4,4 L 20,20 L 25,25 L 6,3 Q 4,4 4,4 ZzM 4,4 L 20,20 L 25,25 L 6,3 C Zz+M 4,4 L 20,20 L 25,25 L 6,3 C 4,4 4,4 4,4 Zz/M 4,4 L 20,20 L 25,25 L 6,3 Q 20,33 100,100 T zz3M 4,4 L 20,20 L 25,25 L 6,3 Q 20,33 100,100 T 4,4 zzm 0,0 1,1 A 5.01,5.01 180 0,0 zz%m 0,0 l 1,1 A 5.01,5.01 180 0,0 0,0 zzm0,0zzm 0,0 zzM0,0LzzM 0,0 L 0,0 zzM 4,4 L 20,20 L 25,25 L 6,3r   )r
   r   r   r?   rA   rD   r   s     r   test_path_z_terminationz TestPath.test_path_z_termination   s   899 KLLLBCC UVVV233 IJJJ233 MNNNBCC UVVV233 GHHHMM	***NN000.//44S99@@BB IJJJ.//55c::AACC MNNNNNr   c                    t          d          ddd <   |                                                     d           |                                                                d= |                                                     d           |                                                                t          d          dd d <   |                                                     d           |                                                                t          d          d d = |                     d	           |                                                                t          d          d
d<   |                                                     d           |                                                                dd<   |                                                                t          d          d= |                                                     d           |                                                                t          d          ddd <   |                                                     d           |                                                                t          d          ddd <   |                                                     d           |                                                                t          d          fd}|                     t          |           d S )Nr   zL2,2zr	   zM 0,0 L 2,2 zzM 0,0 zzM0,0zzM1,1zzM 1,1 zr   zM1,1r   r=   zM 0,0M5,5zrI   zM 0,0 L 1,1 z M 5,5 zzM 0,0 L 1,1 M 5,5 zc                      d d<   d S )Nr   r   rR   )r   s   r   m_assignz2TestPath.test_path_setitem_slice.<locals>.m_assign*  s    AbEEEr   )r
   r   r   
assertTrue	_is_validassertRaises
ValueError)r   r   r   s     @r   test_path_setitem_slicez TestPath.test_path_setitem_slice   s   !""000&&&aD	***&&&MM!!!	***&&&MMaaaDB&&&MM!	***&&&!&&&MMaD(((&&&!"" 7888&&&"## 5666&&&	 	 	 	 	*h/////r   c                     t                      }|                    d            |j        t          dd          gdz    d S Nr   r	     )r
   r>   linecomplexr$   s     r   !test_iterative_loop_building_linez*TestPath.test_iterative_loop_building_line.  s>    vv		!	WQ]]Od*,,,,r   c                 h    t                      }|                    d            |j        dgdz    d S Nr   g      @r   )r
   r>   verticalr$   s     r   !test_iterative_loop_building_vertz*TestPath.test_iterative_loop_building_vert3  s5    vv		!&&&&r   c                 h    t                      }|                    d            |j        dgdz    d S r   )r
   r>   
horizontalr$   s     r   "test_iterative_loop_building_horizz+TestPath.test_iterative_loop_building_horiz8  s5    vv		!3%$,((((r   c                     t                      }|                    d            |j        t          dd          t          dd          gdz    d S Nr   r	   i  )r
   r>   r?   r   r$   s     r   !test_iterative_loop_building_quadz*TestPath.test_iterative_loop_building_quad=  sI    vv		!	WQ]]GAqMM2T9;;;;r   c                     t                      }|                    d            |j        t          dd          t          dd          t          dd          gdz    d S r   )r
   r>   rD   r   r$   s     r   "test_iterative_loop_building_cubicz+TestPath.test_iterative_loop_building_cubicB  sS    vv		!
gammWQ]]GAqMMBTIKKKKr   c           	          t                      }|                    d           dddddt          dd          gdz  } |j        |  d S r   )r
   r>   r   arcrq   s      r    test_iterative_loop_building_arcz)TestPath.test_iterative_loop_building_arcG  sJ    vv		!1aGAqMM*T1!r   N)"__name__
__module____qualname____doc__r   r   r    r%   r(   rB   rF   re   ri   rk   rm   rs   ru   rx   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rR   r   r   r   r      s       ((' ' '  

+ 
+ 
+3 3 3A A Ar r rt t t- - -B B B
7 7 7N N N
v v v
	u 	u 	u^ ^ ^8	7 	7 	7< < <> > >&> > >&< < <B B BE E Ew w wO O O.,0 ,0 ,0\- - -
' ' '
) ) )
< < <
L L L
    r   r   )unittestsvgelementsTestCaser   rR   r   r   <module>r      s[        E E E E Ex  E E E E Er   