
    0hh'8                        S SK r S SKrS SKJr  S SKJr  S SKJr  \R                  " S5      r\R                  r	Sr
SrSr " S	 S
\R                  5      r " S S5      r " S S5      r " S S\\R                  5      r " S S\\R                  5      r " S S\R                  5      r " S S\R                  5      r\S:X  a  \R,                  " 5         gg)    N)support)import_helper)	os_helperturtlea_  width = 0.75
height = 0.8
canvwidth = 500
canvheight = 200
leftright = 100
topbottom = 100
mode = world
colormode = 255
delay = 100
undobuffersize = 10000
shape = circle
pencolor  = red
fillcolor  = blue
resizemode  = auto
visible  = None
language = english
exampleturtle = turtle
examplescreen = screen
title = Python Turtle Graphics
using_IDLE = ''
z# Comments!
# Testing comments!
pencolor  = red
fillcolor  = blue
visible  = False
language = english
# Some more
# comments
using_IDLE = False
z0
pencolor = red
fillcolor: blue
visible = False
c                   ,    \ rS rSrS rS rS rS rSrg)TurtleConfigTest5   c                 &   U R                  [        R                  [        R                  5        [	        [        R                  S5       nUR                  U5        S S S 5        [        R                  $ ! , (       d  f       [        R                  $ = f)Nw)
addCleanupr   unlinkTESTFNopenwrite)selfcfg_strfs      9/opt/python-3.13.8/usr/lib/python3.13/test/test_turtle.pyget_cfg_fileTurtleConfigTest.get_cfg_file7   s`    	(()*:*:;)""C(AGGG ) )(s   	A33
Bc                     U R                  [        5      n[        R                  U5      n0 SS_SS_SS_SS_S	S
_SS
_SS_SS_SS
_SS_SS_SS_SS_SS_SS _SS_SS_S S!S"S#.EnU R	                  X#5        g )$Nwidthg      ?heightg?	canvwidth  
canvheight   	leftrightd   	topbottommodeworld	colormode   delayundobuffersize'  shapecirclepencolorred	fillcolorblue
resizemodeautovisiblelanguageenglishexampleturtler   screenzPython Turtle Graphics )examplescreentitle
using_IDLE)r   test_configr   config_dictassertEqualr   cfg_name
parsed_cfgexpecteds       r   test_config_dict!TurtleConfigTest.test_config_dict=   s   $$[1''1

d
s
 #
 #	

 
 
 G
 
 S
 e
 X
 
 &
 6
 
  	!
" X#
$ &-)
. 	.    c                     U R                  [        5      n[        R                  U5      nSSSSSS.nU R	                  X#5        g )Nr+   r-   Fr2   )r*   r,   r0   r1   r8   )r   test_config_twor   r:   r;   r<   s       r   &test_partial_config_dict_with_comments7TurtleConfigTest.test_partial_config_dict_with_comments[   sJ    $$_5''1
 !
 	.rB   c                 H   U R                  [        5      n[        R                  " 5        n[        R                  U5      nS S S 5        WR                  5       nU R                  SU5        U R                  SU5        U R                  WSSS.5        g ! , (       d  f       NX= f)NzBad line in config-file zfillcolor: bluer+   F)r*   r0   )	r   invalid_test_configr   captured_stdoutr   r:   getvalueassertInr;   )r   r=   stdoutr>   err_msgs        r   test_config_dict_invalid)TurtleConfigTest.test_config_dict_invalidj   s    $$%89$$&&++H5J ' //#0':'1&
 	 '&s   B
B! N)	__name__
__module____qualname____firstlineno__r   r@   rE   rN   __static_attributes__rP   rB   r   r   r   5   s     /</rB   r   c                       \ rS rSrS rSrg)VectorComparisonMixin|   c                     [        U5      [        U5      :w  a  U R                  S5        [        [        X5      5       H'  u  nu  pEU R	                  XESR                  U5      S9  M)     g )NzTuples are not of equal sizezvalues at index {} do not match)msg)lenfail	enumeratezipassertAlmostEqualformat)r   vec1vec2idxijs         r   assertVectorsAlmostEqual.VectorComparisonMixin.assertVectorsAlmostEqual~   s]    t9D	!II45$S_5KC!"";BB3G # I 6rB   rP   N)rQ   rR   rS   rT   rf   rU   rP   rB   r   rW   rW   |   s    IrB   rW   c                        \ rS rSrS rS rSrg)
Multiplier   c                     SU 3$ )NM*rP   r   others     r   __mul__Multiplier.__mul__   s    E7|rB   c                     U S3$ )N*MrP   rm   s     r   __rmul__Multiplier.__rmul__   s    |rB   rP   N)rQ   rR   rS   rT   ro   rs   rU   rP   rB   r   ri   ri      s    rB   ri   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)	TestVec2D   c                    [        SS5      nU R                  US   S5        U R                  US   S5        U R                  U[         5        U R                  [        [         5        U R                  [        [         S5        U R                  [        [         S5        U R                  [        [         U5        U R                  [        [         SSS5        g )N      ?   r      r   r{   )Vec2Dr;   assertIsInstanceassertRaises	TypeErrorr   vecs     r   test_constructorTestVec2D.test_constructor   s    CmQ%Q#c5))U+)UA.)UF3)UC0)UAq!4rB   c                 R    [        SS5      nU R                  [        U5      S5        g )Ng/$?gX9v?z(0.57,1.23))r}   r;   reprr   s     r   	test_reprTestVec2D.test_repr   s"    E5!cM2rB   c                    [        SS5      n[        SS5      n[        SS5      nU R                  X5        U R                  U[        U5      5        U R                  [        U5      U5        U R                  X5        U R                  X#5        g )Nr   r{           *   )r}   r;   tupleassertNotEqual)r   ra   rb   vec3s       r   test_equalityTestVec2D.test_equality   su    Q{S!}R|$uT{+td+D'D'rB   c                 X   [        SS5      n[        [        R                  S-   5       Hl  nU R	                  US9   [        R
                  " XS9n[        R                  " U5      nU R                  XA5        U R                  U[         5        S S S 5        Mn     g ! , (       d  f       M  = f)Nry   rz   r{   )proto)protocol)	r}   rangepickleHIGHEST_PROTOCOLsubTestdumpsloadsr;   r~   )r   r   r   pickled	unpickleds        r   test_picklingTestVec2D.test_pickling   s~    Cm622Q67EE* ,,s;"LL1	  0%%i7	 +* 8**s   AB
B)	c                     U HS  nU R                  US9   Uu  u  pEn[        U6 n[        U6 nU" Xx5      n	[        U6 nU R                  X5        S S S 5        MU     g ! , (       d  f       Mg  = f)Ncase)r   r}   rf   )
r   
test_caseslambda_operator	test_casefirstsecondr?   op1op2results
             r   _assert_arithmetic_cases"TestVec2D._assert_arithmetic_cases   si    #I9-.7+%(UmVn(2 (+--f? .- $--s   9A
A*	c                 2    / SQnU R                  US 5        g )N))r   r   r{   r{   )      ?r   ))r   )rz   rz   )r{   rz   )))g      ?r   r   )      @r{   c                 
    X-   $ NrP   xys     r   <lambda>0TestVec2D.test_vector_addition.<locals>.<lambda>       qurB   r   r   r   s     r   test_vector_additionTestVec2D.test_vector_addition   s    

 	%%j2DErB   c                 2    SS/nU R                  US 5        g )N)r   )r   r   )))g     @%@      ?)
   r   )g      ?r   c                 
    X-
  $ r   rP   r   s     r   r   3TestVec2D.test_vector_subtraction.<locals>.<lambda>   r   rB   r   r   s     r   test_vector_subtraction!TestVec2D.test_vector_subtraction   s$     )8


 	%%j2DErB   c                    [        SS5      n[        SS5      nX-  nSnU R                  X45        [        SS5      n[        SS5      nU R                  US-  U5        U R                  SU-  U5        U R                  US-  U5        U R                  SU-  U5        [        5       nU R	                  XV-  [        US    S	3US
    S	35      5        U R	                  Xe-  SU 35        g )Nr   ry      #         g      $@r   rr   r{   rl   )r}   r_   rf   ri   r;   )r   ra   rb   answerr?   r   Ms          r   test_vector_multiplyTestVec2D.test_vector_multiply   s    R}S!}v0CmB<%%cBh9%%b3h9%%cDj(;%%dSj(;L%3q6("#a&}"EFBse*-rB   c                 F    [        SS5      nSnU R                  U* U5        g )Nr   )r   r   )r}   rf   )r   r   r?   s      r   test_vector_negativeTestVec2D.test_vector_negative   s$    Bn%%sdH5rB   c                     U R                  [        [        SS5      5      S5        U R                  [        [        SS5      5      S5        U R                  [        [        SS5      5      S5        g )N      r   r   r   g      @)r_   absr}   r;   r   s    r   test_distanceTestVec2D.test_distance   sS    s5A;/4U1a[)1-s5a=137rB   c                     / SQnU HL  nU R                  US9   Uu  u  p4n[        U6 nUR                  U5      nU R                  Xe5        S S S 5        MN     g ! , (       d  f       M`  = f)N)))r   r   r   ))r|   Z   r   ))r|   ir{   r   ))r      r   ))r   h  r   r   )r   r}   rotaterf   )r   casesr   r   rotr?   gots          r   test_rotateTestVec2D.test_rotate   sb    
 D4('+$
HSkjjo--c<	 )( ((s   2A
A'	rP   N)rQ   rR   rS   rT   r   r   r   r   r   r   r   r   r   r   r   rU   rP   rB   r   rv   rv      s<    
53(8@FF.&6
8
=rB   rv   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rSrg)TestTNavigatori  c                 6    [         R                  5       U l        g r   )r   
TNavigatornavr   s    r   setUpTestTNavigator.setUp  s    $$&rB   c                     U R                   R                  SS5        U R                  U R                   R                  5       S5        U R                  U R                   R	                  5       S5        g Nr   )r   gotor_   xcorycorr   s    r   	test_gotoTestTNavigator.test_goto	  sH    c4 txx}}4txx}}5rB   c                    U R                   R                  SSSS9  U R                  U R                   R                  5       S5        U R                  U R                   R	                  5       S5        U R                   R                  SSSS9  U R                  U R                   R                  5       S5        U R                  U R                   R	                  5       S5        g )N   iTfill_gapir   F)r   teleportr_   r   r   r   s    r   test_teleportTestTNavigator.test_teleport  s    "cD1txx}}3txx}}4#rE2txx}}4txx}}3rB   c                 4   U R                  U R                  R                  5       U R                  R                  5        U R                  R	                  SS5        U R                  U R                  R                  5       U R                  R                  5        g r   )r;   r   pos	_positionr   r   s    r   test_posTestTNavigator.test_pos  s\    ););<c4 ););<rB   c                     U R                  U R                  R                  S5        U R                  R                  S5        U R	                  U R                  R                  S5        g )Nr   r   r   )r   r   )r;   r   _orientleftrf   r   s    r   	test_leftTestTNavigator.test_left  sF    ))84b%%dhh&6&6
CrB   c                     U R                  U R                  R                  S5        U R                  R                  S5        U R	                  U R                  R                  S5        g )Nr  r   )r   g      )r;   r   r  rightrf   r   s    r   
test_rightTestTNavigator.test_right   sF    ))84r%%dhh&6&6	BrB   c                    U R                   R                  SS5        U R                  U R                   R                  5       S5        U R                  U R                   R	                  5       S5        U R                   R                  5         U R                  U R                   R                  5       S5        U R                  U R                   R	                  5       S5        g )Nr   r   r   )r   r   r_   r   r   resetr   s    r   
test_resetTestTNavigator.test_reset%  s    c4 txx}}4txx}}5txx}}2txx}}2rB   c                    U R                   R                  S5        [        SS5      nU R                  U R                   R	                  5       U5        U R                   R                  5         U R                   R                  S5        U R                   R                  S5        [        SS5      nU R                  U R                   R	                  5       U5        U R                  [        U R                   R                  S5        g )N   r   r   
skldjfldsk)	r   forwardr}   rf   positionr  r  r   r   r   r?   s     r   test_forwardTestTNavigator.test_forward-  s    a=%%dhh&7&7&98DbC=%%dhh&7&7&98D)TXX%5%5|DrB   c                    U R                   R                  S5        [        SS5      nU R                  U R                   R	                  5       U5        U R                   R                  5         U R                   R                  S5        U R                   R                  S5        [        SS5      nU R                  U R                   R	                  5       U5        g )Nr   8r   r   )r   backr}   rf   r  r  r  r  s     r   test_backwardsTestTNavigator.test_backwards:  s    cq>%%dhh&7&7&98DrcC=%%dhh&7&7&98DrB   c                     U R                   R                  S5        SnU R                  U R                   R                  [	        SS5      5      U5        g )Nr   r   )r   r  r_   distancer}   r  s     r   r   TestTNavigator.test_distanceE  s>    txx00q<hGrB   c                    U R                   R                  S5        U R                  U R                   R                  5       S5        U R                   R	                  5         U R                  U R                   R                  5       S5        U R                   R                  5         U R                  U R                   R                  5       S5        g )Nr   gm U!?)r   r  r_   headingradiansdegreesr   s    r   test_radians_and_degrees'TestTNavigator.test_radians_and_degreesJ  s    btxx//126txx//1:>txx//126rB   c           	      >   / SQnU H  u  u  p#nU R                  U R                  R                  X#5      U5        U R                  U R                  R                  X#45      U5        U R                  U R                  R                  [        X#5      5      U5        M     g )N)))r   r   r   ))r   r   g     F@))r   r   g     V@))r   r   g     `@))r   r   g     f@))r   r   g      l@))r   r   g     p@))r   r   g     s@)r;   r   towardsr}   )r   coordinatesr   r   r?   s        r   test_towardsTestTNavigator.test_towardsR  s    

 !,FQHTXX--a3X>TXX--qf5x@TXX--eAk:HE !,rB   c                    U R                   R                  S5        U R                  U R                   R                  5       S5        U R                   R                  S5        U R                  U R                   R                  5       S5        U R                   R	                  S5        U R                  U R                   R                  5       S5        U R                  [        U R                   R                  S5        U R                   R                  5         / SQn[        U5      S-  nU H  nU R                   R                  U5        M      U R                  U R                   R                  5       U5        U R                   R                  5         S[        U5      -
  S-  nU H  nU R                   R	                  U5        M      U R                  U R                   R                  5       U5        U R                   R                  5         / S	QnS
nU Hz  nUS
:  a%  U R                   R	                  [        U5      5        OU R                   R                  U5        XC-  nU R                  U R                   R                  5       US-  5        M|     g )Nr   -      g?g̬`@sdkfjdsf)r   r      ,  r   )
r   r   iVr.  i.gfffff&A@gIr   g{G=r   r   )r   r  r_   r  r  r   r   r  sumr;   r   )r   	rotationsr   num
sum_so_fars        r   test_headingTestTNavigator.test_headinge  s   btxx//126btxx//137stxx//159)TXX^^Z@&	Y#%CHHMM# ))+V4c)n$+CHHNN3 ))+V4L	
CQws3x(c"J""488#3#3#5zC7GH rB   c                 ,   U R                   R                  S5        U R                  U R                   R                  5       S5        U R                   R                  S5        U R                  U R                   R                  5       S5        U R                   R                  S5        U R                  U R                   R                  5       S5        U R                   R                  S5        U R                  U R                   R                  5       S5        g )NgGzY@gQ^gp=
ףm@gQBgףp=S@i x   )r   
setheadingr_   r  r   s    r   test_setheadingTestTNavigator.test_setheading  s    F#txx//16:G$txx//1?CH%txx//13CDF#txx//1:>rB   c                     U R                   R                  S5        U R                   R                  S5        U R                   R                  S5        U R                  U R                   R	                  5       S5        g )Nr   r   r  )g      Y@g      i)r   r  r  rf   r   r   s    r   test_positionsTestTNavigator.test_positions  sP    b%%dhhllnoFrB   c                     U R                   R                  S5        U R                   R                  S5        U R                  U R                   R	                  5       S5        g )N Zd;YA)r>  r?  )r   setxsetyrf   r   r   s    r   test_setx_and_sety!TestTNavigator.test_setx_and_sety  s=    j!j!%%dhhlln6NOrB   c                 L   U R                   R                  S5        U R                   R                  S5        U R                   R                  5         U R	                  U R                   R                  5       S5        U R                  U R                   R                  5       S5        g )Nr   i`yr   r   )r   r  r  homerf   r   r_   r  r   s    r   	test_homeTestTNavigator.test_home  sh    b!%%dhhllne<txx//115rB   c                    U R                  U R                  R                  SS5      S5        [        SS5      nU R                  U R                  R                  U5      S5        [        R                  5       nUR                  S5        UR                  S5        U R                  U R                  R                  U5      S5        g )	Nr   (   2   g)\(?gMbP?g-)?r   r'   )r_   r   r  r}   r   r   r  r  )r   r   another_turtles      r   test_distance_method#TestTNavigator.test_distance_method  s    txx00R8"=D$txx0057JK**,Bu%txx00@%HrB   )r   N)rQ   rR   rS   rT   r   r   r   r   r  r  r  r  r  r   r"  r'  r3  r8  r;  rB  rF  rL  rU   rP   rB   r   r   r     sg    '6
4=
D
C
3E	EH
7F& ID?GP
6IrB   r   c                   &    \ rS rSrS rS rS rSrg)TestTPeni  c                 &   [         R                  5       nU R                  UR                  5       5        UR	                  5         U R                  UR                  5       5        UR                  5         U R                  UR                  5       5        g r   )r   TPen
assertTrueisdownpenupassertFalsependownr   tpens     r   test_pendown_and_penupTestTPen.test_pendown_and_penup  sW    {{}&

'&rB   c                 &   [         R                  5       nU R                  UR                  5       5        UR	                  5         U R                  UR                  5       5        UR                  5         U R                  UR                  5       5        g r   )r   rQ  rR  	isvisible
hideturtlerU  
showturtlerW  s     r   (test_showturtle_hideturtle_and_isvisible1TestTPen.test_showturtle_hideturtle_and_isvisible  s\    {{}())*()rB   c                 >   [         R                  5       nS H  nUR                  5         UR                  SSUS9  U R	                  UR                  5       5        UR                  5         UR                  SSUS9  U R                  UR                  5       5        M     g )N)TFr   r   r   )r   rQ  rT  r   rU  rS  rV  rR  )r   rX  fill_gap_values      r   r   TestTPen.test_teleport  ss    {{}+NJJLMM#s^M<T[[]+LLNMM$~M>OODKKM* ,rB   rP   N)rQ   rR   rS   rT   rY  r_  r   rU   rP   rB   r   rO  rO    s    '*
+rB   rO  c                       \ rS rSrS rSrg)TestModuleLeveli  c                     SS K nSSSSSS.nU HY  nU R                  US9   [        [        U5      nUR	                  U5      nU R                  [        U5      X#   5        S S S 5        M[     g ! , (       d  f       Mm  = f)	Nr   z3(x=None, y=None, *, fill_gap: bool = False) -> Nonez()z(x, y=None)z(*args)z(pen=None, **pendict))r   undor   bgcolorpen)name)inspectr   getattrr   	signaturer;   str)r   rk  known_signaturesrj  objsigs         r   test_all_signatures#TestModuleLevel.test_all_signatures  s|     F! *
 %D4(fd+'',  S+;+AB )( %((s   ?A--
A<	rP   N)rQ   rR   rS   rT   rr  rU   rP   rB   r   re  re    s    CrB   re  __main__)r   unittesttestr   test.supportr   r   import_moduler   r}   r9   rD   rH   TestCaser   rW   ri   rv   r   rO  re  rQ   mainrP   rB   r   <module>r{     s       & " 
	$	$X	..
 Dx(( DNI I s=%x'8'8 s=lfI*H,=,= fIR +x    +FCh'' C( zMMO rB   