
    ]jo                         d dl Z d dlZd dlmZmZmZmZ d dlT dez  Z G d dej	                  Z
 G d dej	                  Z G d	 d
ej	                  Z G d dej	                  Z G d dej	                  ZdS )    N)sqrtpicossin)*   c                       e Zd Zd Zd ZdS )LineTestc                 $   t          dd          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d	           |                     |                    d
          d           |                     |                                d           t          dd          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d
          d           |                     |                                d           t          dd          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d
          d           |                     |                                d           d S )N                      y@        r   333333?y      ^@              ?      i@        ?y     v@                   y@     r@y      y@     V@y      y@     b@y      y@     p@,  y     q@     @j@y      i@     b@y      D@      >@  )LineassertAlmostEqualpointlength)selfline1line2line3s       J/home/agentuser/manim-venv/lib/python3.11/site-packages/test/test_paths.py
test_lineszLineTest.test_lines'   s    R""u{{1~~444u{{3//(<<<u{{3//(<<<u{{3//(<<<u{{1~~:::u||~~s333Xz**u{{1~~:::u{{3//)===u{{3//*>>>u{{3//*>>>u{{1~~
<<<u||~~s333Z$$u{{1~~
<<<u{{3//*>>>u{{3//*>>>u{{3//(<<<u{{1~~444u||~~s33333    c                    t          dd          }|                     |t          dd          k               |                     |t          dd          k               |                     |t          |          k               |                     |t          |          k               |                     t	          dddd	          |k               d S )
Nr   r   r   r   d        @     @@     @     u@      @     P@      @     @@)r   
assertTrueassertFalsestrCubicBezier)r   lines     r   test_equalityzLineTest.test_equalityB   s     B!!Q,---S#.///T*+++D		)***ZZTT 	 	 	 	 	r!   N)__name__
__module____qualname__r    r-    r!   r   r
   r
   %   s2        4 4 46	 	 	 	 	r!   r
   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )CubicBezierTestc           	      n   t          t          dd          t          dd          t          dd          t          dd                    }|                     |                    d          d           |                     |                    d          d           |                     |                    d	          d
           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           t          t          dd          t          dd          t          dd          t          dd                    }|                     |                    d          d           |                     |                    d          d           |                     |                    d	          d           |                     |                    d          d            |                     |                    d          d!           |                     |                    d          d"           |                     |                    d          d#           |                     |                    d          d$           |                     |                    d          d%           |                     |                    d          d&           |                     |                    d          d'           t          t          dd          t          dd(          t          dd)          t          dd)                    }|                     |                    d          d'           |                     |                    d          d*           |                     |                    d	          d+           |                     |                    d          d,           |                     |                    d          d-           |                     |                    d          d.           |                     |                    d          d/           |                     |                    d          d0           |                     |                    d          d1           |                     |                    d          d2           |                     |                    d          d3           t          t          dd)          t          d4d)          t          dd(          t          dd                    }|                     |                    d          d3           |                     |                    d          d5           |                     |                    d	          d6           |                     |                    d          d7           |                     |                    d          d8           |                     |                    d          d9           |                     |                    d          d:           |                     |                    d          d;           |                     |                    d          d<           |                     |                    d          d=           |                     |                    d          d           d>S )?z.This is a approximate circle drawn in Inkscaper   gb->j[@g9VgIh@gIhr   皙?y@@皙?ym]!?$eaO@r   y̱ݹ*6QV@皙?yy(CYQ]@r   yoB!MG(a@333333?yvSTFd@ffffff?y$l3@Z\f@皙?yȒ `'bVg@r   yc$Zd]Zh@r   yIhIh@gϛCsgIxga->j[@y!l]Zh@yk]Up'bVg@yAV9r\f@yȏBsFd@y^hӸ/uG(a@y/HmvYQ]@y63owQV@yP0xeaO@y{@x@@yIx        gb->j[g>'Ihy{@x)@yP0x:naOy63owGQVy/Hmv--gQ]y^hӸ/uGĔ(ayȏBsևFdyAV9r$+fyk]Up--Wgy!l;ohyIh>'Ihg9Vyc$Zd;ohyȒ `--Wgy$l3@Z$+fyvSTևFdyoB!MGĔ(ayy(C--gQ]y̱ݹ*6GQVym]!?$:naOy)@N)r+   complexr   r   r   arc1arc2arc3arc4s        r   test_approx_circlez"CubicBezierTest.test_approx_circleO   s    AqMMAy!!Iy))J	**	
 
 	tzz!}}r333tzz#1KMMMtzz#1LNNNtzz#1LNNNtzz#1MOOOtzz#1MOOOtzz#1MOOOtzz#1NPPPtzz#1NPPPtzz#1NPPPtzz!}}/FHHHJ	***M::*,ABB*A..	
 
 	tzz!}}/FHHHtzz#1NPPPtzz#1MOOOtzz#1NPPPtzz#1MOOOtzz#1NPPPtzz#1LNNNtzz#1MOOOtzz#1LNNNtzz#1MOOOtzz!}}@@@*A..-z::4jAAJ
++	
 
 	tzz!}}@@@tzz#1MOOOtzz#1KMMMtzz#1MOOOtzz#1KMMMtzz#1NPPPtzz#1KMMMtzz#1NPPPtzz#1LNNNtzz#1NPPPtzz!}}/FHHHJ
++)=99A+,,AqMM	
 
 	tzz!}}/FHHHtzz#1NPPPtzz#1MOOOtzz#1NPPPtzz#1KMMMtzz#1MOOOtzz#1LNNNtzz#1LNNNtzz#1KMMMtzz#1KMMMtzz!}}r33333r!   c                    t          dddd          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d	           |                     |                    d
          d           |                     |                    d          d           t          dddd          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d
          d           |                     |                    d          d           t          dddd          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d
          d           |                     |                    d          d           t          dddd          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d
          d           |                     |                    d          d           t          ddd d!          }|                     |                    d          d           |                     |                    d          d"           |                     |                    d          d#           |                     |                    d
          d$           |                     |                    d          d!           t          d%d&d'd(          }|                     |                    d          d%           |                     |                    d          d)           |                     |                    d          d*           |                     |                    d
          d+           |                     |                    d          d(           t          d,d-d.d/          }|                     |                    d          d,           |                     |                    d          d0           |                     |                    d          d1           |                     |                    d
          d2           |                     |                    d          d/           t          d3d4d5d6          }|                     |                    d          d3           |                     |                    d          d7           |                     |                    d          d8           |                     |                    d
          d9           |                     |                    d          d6           d:}	t          d6|	d;d<          }
|                     |
                    d          d6           |                     |
                    d          d=           |                     |
                    d          d>           |                     |
                    d
          d?           |                     |
                    d          d<           d S )@Ny      Y@      i@      Y@      Y@y     @o@      Y@y     @o@      i@r   r   y̌`@      a@r   y     e@     @_@r   yn@     e@r   y     @o@     r@r   y      y@      i@yfffffq@     pp@y     Pt@     0q@y̼x@     `l@y      y@      Y@yd@      a@y     @o@     @_@yyx@     e@y      Y@     @@y      9@      y@y     }@      y@y      y@     @@y<b@     P{@y     @o@     z@y|y@     }@y      Y@      @y     e@     @y     Pt@     @y      y@      @yffffff@     @y     @o@     @yfffffvw@     (@y     @      i@y     @      Y@y     x@      Y@y      @      i@yfffff@@      a@y     2@     @_@y~@     e@r$   r%   r&   r'   yfffffƄ@33333|@y     p@     @@y܋@33333@y     @      @y     @     @y     @     @y     p@      @y@     @y     @     @y33333#@     (@y     8@      @y     X@      @y      @      @y@     @y     ȉ@     X@y33333Ӌ@     ؉@)r+   r   r   )r   path1path2path3path4path5path6path7path8	inversionpath9s              r   test_svg_examplesz!CubicBezierTest.test_svg_examples   s   J
J
KKu{{1~~
<<<u{{3//,@@@u{{3//*>>>u{{3//,@@@u{{1~~
<<< J
J
KKu{{1~~
<<<u{{3//,@@@u{{3//*>>>u{{3//,@@@u{{1~~
<<< J
J
KKu{{1~~
<<<u{{3//,@@@u{{3//*>>>u{{3//,@@@u{{1~~
<<< J	:zJJu{{1~~
<<<u{{3//,@@@u{{3//*>>>u{{3//,@@@u{{1~~
<<< J
J
KKu{{1~~
<<<u{{3//,@@@u{{3//*>>>u{{3//,@@@u{{1~~
<<< J
J
KKu{{1~~
<<<u{{3//-AAAu{{3//-AAAu{{3//-AAAu{{1~~
<<< J
J
KKu{{1~~
<<<u{{3//.BBBu{{3//*>>>u{{3//.BBBu{{1~~
<<< J
J
KKu{{1~~
<<<u{{3//,@@@u{{3//*>>>u{{3//,@@@u{{1~~
<<< ?	J	:zJJu{{1~~
<<<u{{3//,@@@u{{3//*>>>u{{3//,@@@u{{1~~
<<<<<r!   c           	         t          t          dd          t          dd          t          dd          t          dd                    }|                     |                                d           t          t          dd          t          dd          t          dd          t          dd                    }|                     |                                t	          d                     dt	          d          dz
  z  dz  }t          t          dd          t          d|dz            t          d|dz  z
  d          t          dd                    }|                     |                                d           t          t          d	d
          t          d	d          t          dd          t          dd
                    }|                     |                                dk               d S )Nr   r#   i N     r   r      g?@c@X  r   ^      g     r@)r+   r;   r   r   r   r(   )r   arckappas      r   test_lengthzCubicBezierTest.test_length   s   AqMMAqMMAsOOAsOO	
 
 	szz||S111 AqMMAqMMCC	
 
 	szz||T--@-@AAA T!WWq[!A%AqMMAus{##C%#+%s++C	
 
 	szz||[999 CCCC	
 
 	

u,-----r!   c           	         t          t          dd          t          dd          t          dd          t          dd                    }|                     |t          dddd	          k               |                     |t          d
ddd	          k               |                     |t          dd          k               d S )NrR   r   rS   rT   rU   r$   r%   r&   r'   y     @     P@r   r   )r+   r;   r(   r   r   segments     r   r-   zCubicBezierTest.test_equality  s     gc3//c1B1B%c3//c1B1BD D 	#J
J
SST 	U 	U 	U#J
J
SST 	U 	U 	U43<</00000r!   c                 t    t          d          }|                     |                                d           d S )NzM0,0C5,0 15,0 15,0   Pathr   r   r   ps     r   test_colinearzCubicBezierTest.test_colinear&  s4    %&&qxxzz2.....r!   N)r.   r/   r0   rA   rN   rX   r-   rb   r1   r!   r   r3   r3   N   sh        M4 M4 M4^H= H= H=T0. 0. 0.d
1 
1 
1/ / / / /r!   r3   c                   J    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S )QuadraticBezierTestc                    t          ddd          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d	          d
           |                     |                    d          d           d}t          d|d          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d	          d           |                     |                    d          d           dS )z"These is the path in the SVG specs      i@     r@      y@      I@     @     r@r   r   y      t@     `h@r   y      y@     e@r   y     @     o@r   y      @     0@y     @@     r@y     @     Py@y      @     z@y      @     u@N)QuadraticBezierr   r   )r   rD   rL   rE   s       r   rN   z%QuadraticBezierTest.test_svg_examples,  s     
IzBBu{{1~~
<<<u{{3//*>>>u{{3//*>>>u{{3//*>>>u{{1~~
<<< >	
I{CCu{{1~~
<<<u{{3//*>>>u{{3//*>>>u{{3//*>>>u{{1~~=====r!   c                 Z   t          ddd          }t          ddd          }t          ddd          }t          ddd	          }t          d
dd          }t          ddd          }|df|df|df|df|df|dfg}|D ]-\  }}	|                     |                                |	           .d S )Nrf   rg   rh   y     @@      i@y      @       @y      @      r   r   rQ   y      ?      @y       @      @y      "      1gdfV|~@g.*yw@gS[:XL	@gƻU6@r   )ri   r   r   )
r   q1q2closedqlinq1linq2nodalqtestsqexp_ress
             r   rX   zQuadraticBezierTest.test_length?  s     ZJ??ZJ??!&&&991a((99 Aq))()()-.*+!   	8 	8JAw""188::w7777	8 	8r!   c                 t   t          ddd          }|                     |t          ddd          k               |                     |t          ddd          k               |                     |t          dddddd          k               |                     t          dddddd          |k               d S )Nrf   rg   rh   y      i@     r@r         Y@      I@r   )ri   r(   r)   ArcrZ   s     r   r-   z!QuadraticBezierTest.test_equalityQ  s     "*iDD?:y*#U#UUVVV?:y*#U#UUVVVCIq!Q	$J$JJKKKB	1aI>>'IJJJJJr!   c                 .   t          ddd          dz  }t          t          |                    }|                                 |d         }|d         }|d         }|d         }|                     t          |          t                     |                     |j        t           dz             |                     t          |          t                     |                     |j        t           dz             |                     t          |          t                     |                     |j        t           dz             |                     t          |          t                     |                     |j        t           dz             d S 	Nr      zscale(-1,1)r   r   rQ   rP         @	Circleabsr_   validate_connectionsassertEqualtyperv   sweeptaur   cra   r=   r>   r?   r@   s          r   test_issue_50_az#QuadraticBezierTest.test_issue_50_aZ  sM   1a-QLL	   ttttdS)))cT#X...dS)))cTCZ000dS)))cTCZ000dS)))cTCZ00000r!   c                 &   t          ddd          dz  }t          t          |                    }|                                 |d         }|d         }|d         }|d         }|                     t          |          t                     |                     |j        t          dz             |                     t          |          t                     |                     |j        t          dz             |                     t          |          t                     |                     |j        t          dz             |                     t          |          t                     |                     |j        t          dz             d S )	Nr   ry   z
scale(1,1)r   r   rQ   rP   rz   r{   r   s          r   test_issue_50_bz#QuadraticBezierTest.test_issue_50_bk  sE   1a,QLL	   ttttdS)))S3Y///dS)))S3Y///dS)))S3Y///dS)))S3Y/////r!   c                 &   t          ddd          dz  }t          t          |                    }|                                 |d         }|d         }|d         }|d         }|                     t          |          t                     |                     |j        t          dz             |                     t          |          t                     |                     |j        t          dz             |                     t          |          t                     |                     |j        t          dz             |                     t          |          t                     |                     |j        t          dz             d S )	Nr   ry   zscale(-1,-1)r   r   rQ   rP   rz   r{   r   s          r   test_issue_50_cz#QuadraticBezierTest.test_issue_50_c|  sE   1a.QLL	   ttttdS)))S3Y///dS)))S3Y///dS)))S3Y///dS)))S3Y/////r!   c                 .   t          ddd          dz  }t          t          |                    }|                                 |d         }|d         }|d         }|d         }|                     t          |          t                     |                     |j        t           dz             |                     t          |          t                     |                     |j        t           dz             |                     t          |          t                     |                     |j        t           dz             |                     t          |          t                     |                     |j        t           dz             d S rx   r{   r   s          r   test_issue_50_dz#QuadraticBezierTest.test_issue_50_d  sM   1a-QLL	   ttttdS)))cTCZ000dS)))cTCZ000dS)))cTCZ000dS)))cTCZ00000r!   c                 n   t          ddd          }|dz  }t          |          }|                                 |                                }|                                }|                     ||           t          t          |                    }|                     |j        |j                   d S )Nz-1.5z0.5)cxcyrzmatrix(0,-1,-1,0,0,0))r|   r_   reversedr   r}   	transform)r   circlepathpath_dcircle_dabs_paths         r   test_issue_mk_1362z&QuadraticBezierTest.test_issue_mk_1362  s    6f666))F||88::***tF||$$)9:::::r!   c                    t          j        d          }t                              |          }t	          |                    d                     }|d         }|                                }|                     |t          dz             t          |          }|
                                 |                                }|                     |t          dz             |                     t          t	          |                                                    d           t          |          }|                    d           |
                                 |                    d          }|                     |t          dz  d	           |                     t          t	          |                                                    d           t          |          }|                    d           |
                                 |                    d          }|                     |t          dz  d	           |                     t          t	          |                                                    d           d
S )zU
        Circles can render into knots if some flips inversions are applied.
        a  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   width="320mm"
   height="220mm"
   viewBox="0 0 320 220"
   version="1.1"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:svg="http://www.w3.org/2000/svg">
<g transform="matrix(0,-1,-1,0,30,30)">
<circle
           stroke="blue"
		strike-width="1"
           id="circle1563"
           cx="20"
           cy="20"
           r="0.5"/>
</g>
</svg>
        c                 ,    t          | t                    S N)
isinstancer|   )es    r   <lambda>z9QuadraticBezierTest.test_issue_50_parse.<locals>.<lambda>  s    :a+@+@ r!   r   r   r   gMbP?h㈵>   placesN)ioStringIOSVGparselistelementsr   r   r   r_   r~   r   lenas_subpathsapproximate_arcs_with_quadsapproximate_arcs_with_cubics)	r   rr   mshapesr   r   r   quadpath	cubicpaths	            r   test_issue_50_parsez'QuadraticBezierTest.test_issue_50_parse  s    K   & IIaLLajj!@!@AABBvsSy111F||!!###vsSy111T$"2"2"4"45566:::::,,U333%%'''))vsSy;;;T("6"6"8"899::A>>>JJ	..u555&&(((!!'**vsSy;;;T("6"6"8"899::A>>>>>r!   c                 v   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 S )Nz!M 206.5,525 Q 162.5,583 162.5,583gr]J4E3R@z<M 425.781 446.289 Q 410.40000000000003 373.047 410.4 373.047gÌR@z=M 639.648 568.115 Q 606.6890000000001 507.568 606.689 507.568g;Q@z=M 288.818 616.699 Q 301.025 547.3629999999999 301.025 547.363g3Q@z;M 339.927 706.25 Q 243.92700000000002 806.25 243.927 806.25g Sa@zGM 539.795 702.637 Q 548.0959999999999 803.4669999999999 548.096 803.467gH2ݠJY@zFM 537.815 555.042 Q 570.1680000000001 499.1600000000001 570.168 499.16g]$P@z=M 615.297 470.503 Q 538.797 694.5029999999999 538.797 694.503gf|"}m@r^   r`   s     r   test_issue_61z!QuadraticBezierTest.test_issue_61  sp   455qxxzz+<===OPPqxxzz+<===PQQqxxzz+<===PQQqxxzz+<===NOOqxxzz+<===Z[[qxxzz+=>>>YZZqxxzz+<===PQQqxxzz+=>>>>>r!   N)r.   r/   r0   rN   rX   r-   r   r   r   r   r   r   r   r1   r!   r   rd   rd   *  s        > > >&8 8 8$K K K1 1 1"0 0 0"0 0 0"1 1 1"
; 
; 
;,? ,? ,?^? ? ? ? ?r!   rd   c                   &    e Zd Zd Zd Zd Zd ZdS )ArcTestc                 F   t          dddddd          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |                    d          d           |                     |                    d          d	           |                     |                    d
          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d           t          dddddd          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |                    d          d           |                     |                    d          d           |                     |                    d
          d            |                     |                    d          d!           |                     |                    d          d"           |                     |                    d          d#           |                     |                    d          d$           |                     |                    d          d%           |                     |                    d          d&           |                     |                    d          d'           |                     |                    d          d           t          dddddd          }|                     |j        d           |                     |j        d           |                     |j        d(           |                     |                    d          d           |                     |                    d          d)           |                     |                    d
          d*           |                     |                    d          d+           |                     |                    d          d,           |                     |                    d          d-           |                     |                    d          d.           |                     |                    d          d/           |                     |                    d          d0           |                     |                    d          d1           |                     |                    d          d           t          dddddd          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |                    d          d           |                     |                    d          d2           |                     |                    d
          d3           |                     |                    d          d4           |                     |                    d          d5           |                     |                    d          d6           |                     |                    d          d7           |                     |                    d          d8           |                     |                    d          d9           |                     |                    d          d:           |                     |                    d          d           d S );Nr   ru   r   y      Y@        g     f@g     V        r5   yz۲?qI@r6   y)Г@at:.@r   y>AIw%@[6@r7   y9*3@0Cc=@r   ya3J=@W{A@r8   yмIYD@q9D@r9   y2LK@qFF@r:   ykGqJFQ@yG@r   y&U@œ4H@      ?r   y              I@g     p@g     py[FHAIw@yq9TмIY4@yfœ4X&E@y/^WNǸ\P@y(s{Qի	VU@yT:>ּacX@yqI/@IX@y0CcM@NǸڜV@yqFV@ys,R@     V@yqI/@b۲?yT:>@)Г@y[F@HAIw@y0CcM@9*#@y(s{Q@TJ-@yq9T@мIY4@yqFV@2L;@y/^W@bqJFA@yfœ4X@&E@y>AIw%@[6yмIYD@q9Dy&U@œ4HyǸ\`@yGy	Ve@W{Ayach@at:.yIh@qI@yǸڜf@0Cc=@yys,b@qFF@)rv   r   centerthetadeltar   r<   s        r   test_pointszArcTest.test_points  s(   2y!Q955t{H555tz5111tz5111tzz#555tzz#1OQQQtzz#1OQQQtzz#1NPPPtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#<<<2y!Q955t{C000tz5111tz6222tzz#555tzz#1OQQQtzz#1PRRRtzz#1OQQQtzz#1PRRRtzz#1PRRRtzz#1PRRRtzz#1NPPPtzz#1OQQQtzz#1NPPPtzz#<<<2y!Q955t{C000tz5111tz4000tzz#555tzz#1OQQQtzz#1OQQQtzz#1NPPPtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#1NPPPtzz#1OQQQtzz#1NPPPtzz#<<<2y!Q955t{H555tz5111tz5111tzz#555tzz#1NPPPtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#1OQQQtzz#<<<<<r!   c                 B   t          dddddd          }|                    dd          }t          dddddd          }|                     |                                t          dz             |                     |                                t          dz             d S )Nr   rC   r   r   r   rP   r#   )rv   r   r   r   )r   r=   arc1_lengthr>   s       r   rX   zArcTest.test_length3  s    2z1aH55kk$**8ZAq"55t{{}}b3h777t{{}}b3h77777r!   c                     t          dddddd          }|                     |t          dddddd          k               |                     |t          dddddd          k               d S )Nr   ru   r   r   )rv   r(   rZ   s     r   r-   zArcTest.test_equality;  ss     b)Q1i883r9aAy#I#IIJJJ3r9aAy#I#IIJJJJJr!   c                 .    t          dddddd           d S )Nyn=u@4nEpy+]~8jYi@b@gL6l@r   yN|*b@)rv   r   s    r   test_issue25zArcTest.test_issue25B  s.    25q!4	7 	7 	7 	7 	7r!   N)r.   r/   r0   r   rX   r-   r   r1   r!   r   r   r     sW        C= C= C=J8 8 8K K K7 7 7 7 7r!   r   c                   J    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S )TestPathc                 p   t          dddddd          }t          dddddd          }t          ||          }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d           |                     |                    d          d	           |                     |                    d
          d           |                     |                                t
          dz             d S )Nr   rC   r   r   r   g      ?r   g      ?y      Y@      Yr   ry   )rv   r_   r   r   r   r   )r   r=   r>   r   s       r   test_circlezTestPath.test_circleL  s   2z1aH558ZAq"55D$tzz#555tzz$//*>>>tzz#;;;tzz$//*>>>tzz#555t{{}}b3h77777r!   c                    t          t          dd          t          dddddd          t          dd                    }|                     |                    d          d           |                     |                    d          d           |                     |                    d	          d
           |                     |                    d          d           |                     |                    d          d           |                     |                                t          dz  dz   d           dS )z#The paths that are in the SVG specsy     r@      i@y     b@      i@     b@     b@r   r   y     r@      I@r   gU	l/?r   yhay@h!s@g$;?r      r      r   Nr_   r   rv   r   r   r   r   r   r   s     r   test_svg_specs_big_piezTestPath.test_svg_specs_big_pieW  s    DZ00
J1aCCJ//1 1 	tzz#===tzz-88:GGGtzz#1OQQQtzz*;<<yJJJtzz#===t{{}}b3hnQGGGGGr!   c                    t          t          dd          t          dddddd          t          dd                    }|                     |                    d          d           |                     |                    d          d           |                     |                    d          d	           |                     |                    d
          d           |                     |                    d          d           |                     |                                t          dz  dz   d           d S )Ny     0q@     e@y     0q@      9@r   r   y     @_@     e@r   gx.[U?r   yr/e@_;Q@ghRx	?r   K   r   r   r   r   r   s     r   test_svg_specs_little_piez"TestPath.test_svg_specs_little_pieg  s   DY//	:q!Q
CCZ002 2 	tzz#===tzz*<==	KKKtzz#1XZZZtzz*@AAJPPPtzz#===t{{}}b2gmAFFFFFr!   c           	      h   ddl m}m}m} d|z  }t	          ddd          D ]}t          dd|ddd	          }t          |          }d
}t	          |dz             D ]}	 ||	|z  dt          |          z  z            dz  }
 ||	|z  dt          |          z  z            dz  }|	t          |          z  }|                    |          }| 	                    |j
        |
d           | 	                    |j        |d           |                     |                    |          |           Րd S )Nr   r   r   r   r   iL   <                 9@      9@      9@              9r   r   g       @   r   r   )mathr   r   r   rangerv   r_   floatr   r   realimagr   )r   r   r   r   r   anglerV   r   vixyra   r   s                 r   test_point_in_arc_pathzTestPath.test_point_in_arc_path  s\   %%%%%%%%%%"f4b)) 	6 	6Egx1g>>C99DA1Q3ZZ 6 6CC3q>233b8CC3q>233b8aL

1&&uz1Q&???&&uz1Q&???  1u55556		6 	6r!   c                 h   ddl m}m}m} d|z  }t	          dddddd          }t          d          D ]~} |||z  d	z            d
z  } |||z  d	z            d
z  }|dz  }	|                    |	          }
|                     |
j        |d           |                     |
j	        |d           d S )Nr   r   r   r   r   r   r   r#   ry   r         Y@   r   )
r   r   r   r   rv   r   r   r   r   r   )r   r   r   r   r   rV   r   r   r   ra   r   s              r   test_point_in_arczTestPath.test_point_in_arc  s    %%%%%%%%%%"f'8S!Q88s 	< 	<AAGcM""R'AAGcM""R'AE	AIIaLLE""5:q";;;""5:q";;;;	< 	<r!   c                 n   t          dddddd          }t          d          D ]}t          |t          z  dz            dz  }t	          |t          z  dz            dz  }|d	z  }|                    |          }|                     |j        |d
           |                     |j        |d
           d S )Nr   r   r   r   r   r#   ry   r   r   r   r   )	rv   r   r   r   r   r   r   r   r   )r   rV   r   r   r   ra   r   s          r   test_point_in_arc_rotatedz"TestPath.test_point_in_arc_rotated  s    '8T1a99s 	< 	<AAGcM""R'AAGcM""R'AE	AIIaLLE""5:q";;;""5:q";;;;	< 	<r!   c                    t          t          dd          t          dddddd	          t          dd
dd          t	          ddd                    }|                     t          t          |                    |           d S )Nr%        P@     Pt@startendr   r   r        @     r@r   radiusrotationarc_flag
sweep_flagr         @      y@     p@      i@     @      Y@r   control1control2r   rR   rh   r   controlr   )r_   r   rv   r+   ri   r   evalreprr   s     r   	test_reprzTestPath.test_repr  s    zz222jC!XY_ijjjj:
Xbccc*czJJJ	L L
 	d4jj))400000r!   c                     d S r   r1   r   s    r   test_reversezTestPath.test_reverse  s	     	r!   c                    t          t          dd          t          dddddd	          t          dd
dd          t	          ddd                    }t          t          dd          t          dddddd	          t          dd
dd          t	          ddd                    }|                     ||k               d|d         _        |                     ||k               d|d         _        |                     ||k               |d= |                     ||k               |                     ||d d          k               |                     ||d d          k               d S )Nr%   r   r   r   r   r   r   r   r   r   r   r   r   rR   rh   r   y     Ȃ@     u@)r_   r   rv   r+   ri   r(   r   r)   )r   rD   rE   s      r   r-   zTestPath.test_equality  s    zz222jC!XY_ijjjj:
Xbccc*czJJJ	L L
 zz222jC!XY_ijjjj:
Xbccc*czJJJ	L L 	'''#a''' $a%((( "I%((( 	qqq)***%(*+++++r!   c                     t          dddddd          }|                     |                                d           |                     |                    d          |j                   d S )Ny             Q@y     A@     A@r   r   r   )rv   r   r   r   r   rZ   s     r   test_non_arczTestPath.test_non_arc  sc    gxAq'::))1---s++W];;;;;r!   N)r.   r/   r0   r   r   r   r   r   r   r  r  r-   r  r1   r!   r   r   r   J  s        	8 	8 	8H H H G G GP6 6 6 
< 
< 
<< < <1 1 1  
, , ,>< < < < <r!   r   )r   unittestr   r   r   r   r   svgelementsr   TestCaser
   r3   rd   r   r   r1   r!   r   <module>r     sa   				  # # # # # # # # # # # #    "f>& & & & &x  & & &RZ/ Z/ Z/ Z/ Z/h' Z/ Z/ Z/x? ? ? ? ?(+ ? ? ?D[7 [7 [7 [7 [7h [7 [7 [7|[< [< [< [< [<x  [< [< [< [< [<r!   