
    /hh>                        S r SSKJr  SSKrSSKrSSKJr  SSKJrJ	r	J
r
JrJr  SSKJr  SSKrSSKJr  \R                   R"                  r\R&                  " S5      \R&                  " S5      \R&                  " S5      \R&                  " S5      S	.rS
r " S S5      r " S S\R.                  5      r " S S\R.                  5      r\S:X  a  \R6                  " SS9  gg)zTest codecontext, coverage 100%    )codecontextN)requires)NSEWTkFrameTextTclError)mock)config )main	highlightkeys
extensionsz
class C1:
    # Class comment.
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def compare(self):
        if a > b:
            return a
        elif a < b:
            return b
        else:
            return None
c                   &    \ rS rSrS rS rS rSrg)DummyEditwin&   c                 B    Xl         Xl        X l        X0l        SU l        g )Nr   )roottop
text_frametextlabel)selfr   framer   s       K/opt/python-3.13.8/usr/lib/python3.13/idlelib/idle_test/test_codecontext.py__init__DummyEditwin.__init__'   s    		
    c                 \    [        [        U R                  R                  U5      5      5      $ N)intfloatr   index)r   r$   s     r   	getlinenoDummyEditwin.getlineno.   s    5/011r   c                     US   U l         g )Nr   )r   )r   kwargss     r   update_menu_labelDummyEditwin.update_menu_label1   s    G_
r   )r   r   r   r   r   N)__name__
__module____qualname____firstlineno__r   r%   r)   __static_attributes__ r   r   r   r   &   s    2%r   r   c                       \ rS rSr\S 5       r\S 5       rS rS rS r	S r
S rS	 rS
 rS rS rS r\R$                  R'                  \R*                  S5      S 5       rS rS rSrg)CodeContextTest5   c                 j   [        S5        [        5       =ol        UR                  5         [	        U5      =o l        [        U5      =o0l        UR                  S[        5        UR                  SSSS9  UR                  SS[        S9  [        XU5      U l        [        [         R"                  l        g )Ngui1.0leftboth   )sidefillexpand)rowcolumnsticky)r   r   r   withdrawr   r   r   r   insertcode_samplepackgridr   r   editortestcfgr   idleConfuserCfg)clsr   r   r   s       r   
setUpClassCodeContextTest.setUpClass7   s    $x!$K'	u+%xE;'

VA
6		a$	/!$t4
'.$r   c                     [         [        R                  l        U R                  R
                  R                  SS5        U ?U ?U ?U R                  R                  5         U R                  R                  5         U ?g )Nr6   end)usercfgr   rG   rH   rE   r   deleter   r   update_idletasksdestroy)rI   s    r   tearDownClassCodeContextTest.tearDownClassE   sZ    '.$

ue,J	38!!#Hr   c                   ^ ^ T R                   R                  S5        ST R                   S'   [        R                  " T R                  5      T l        SSS.T l        [        R                  R                  mUU 4S jn[        R                  R                  R                  [        R                  SU5      nUR                  5         T R                  UR                  5        ST l        U 4S	 jn[        R                  R                  R                  [        R                  S
U5      nUR                  5         T R                  UR                  5        g )Nr   TkFixedFontfontz#abcdefz#123456
background
foregroundc                 8   > US:X  a  TR                   $ T" X5      $ )Ncontext)highlight_cfg)themeelementorig_idleConf_GetHighlightr   s     r   mock_idleconf_GetHighlight9CodeContextTest.setUp.<locals>.mock_idleconf_GetHighlightV   s"    )#)))-e==r   GetHighlightc                    > TR                   $ r!   )font_override)r   
configTypesectionr   s      r   mock_idleconf_GetFont4CodeContextTest.setUp.<locals>.mock_idleconf_GetFont`   s    %%%r   GetFont)r   yviewr   CodeContextrE   ccr\   rG   rb   unittestr
   patchobjectstart
addCleanupstoprd   )r   r`   GetHighlight_patcherrg   GetFont_patcherr_   s   `    @r   setUpCodeContextTest.setUpN   s    		)		&))$++6,5,57%0%9%9%F%F"	>  (}}2299  .2L N""$,112*	&"----44  )-BD,,-r   c                     U R                   R                  (       a$  U R                   R                  R                  5         U R                   R                  5         U R                   ?U ? g r!   )rl   r[   rQ   __del__r   s    r   tearDownCodeContextTest.tearDowng   s<    77??GGOO##%GGOTWr   c                    U R                   nU R                  nU R                  nU" UR                  U5        U" UR                  UR                  5        U" UR                  S   UR                  S   5        U R                  UR                  5        U" UR                  S/5        U" UR                  S5        U R                  U R                  R                  5        g )NrV   r   r   Fr9   )
assertEqualrE   rl   editwinr   assertIsNoner[   info
topvisiblet1)r   eqedrl   s       r   	test_initCodeContextTest.test_initn   s    [[WW
2::r
277BGG
2776?BGGFO,"**%
277'()
2==!$''**%r   c                 8    U R                   R                  5         g r!   )rl   rx   ry   s    r   test_delCodeContextTest.test_del{   s    r   c                    U R                   R                  SS 5      =oR                  l        U R                  R	                  5         U R                  [        5       nU R                  R                  R                  SSU5        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)Ni'  c                      g r!   r0   r0   r   r   <lambda>5CodeContextTest.test_del_with_timer.<locals>.<lambda>   s    Dr   afterr   zdoesn't exist)r   r   rl   r   rx   assertRaisesr	   r   tkcallassertInstr	exception)r   timercms      r   test_del_with_timer#CodeContextTest.test_del_with_timer~   s|    !YY__ULAA
x(BIILLgvu5 )os2<<'89 )(s   (B33
Cc                     [         R                  R                  5         U R                  U R                  R
                  S5        g )N   )r   rk   reloadr   rl   context_depthry   s    r   test_reloadCodeContextTest.test_reload   s.    &&(..3r   c                    U R                   nU R                  nUR                  nUR                  (       a  U" 5         U" 5         U R	                  UR                  5        U" UR                  S   U R
                  S   5        U" UR                  S   U R                  S   5        U" UR                  S   U R                  S   5        U" UR                  R                  SS5      S5        U" UR                  R                  S	5        U" U R                  R                  R                  S
SU R                  R                  5      S   S5        U" 5         U R                  UR                  5        U" UR                  R                  S5        U R                  U R                  R                  5        SR                  S UR!                  S5      S    5       5      nUR
                  R#                  S5        U" 5         U" UR                  R                  SS5      U5        U" 5         U" 5         U" UR                  R                  SS5      U5        g )NrV   fgrY   bgrX   r6   end-1cr   zHide Code Contextr   r   r9   r   zShow Code Context
c              3   *   #    U  H	  oS    v   M     g7f)   Nr0   ).0xs     r   	<genexpr>ACodeContextTest.test_toggle_code_context_event.<locals>.<genexpr>   s     "G1FAQ41Fs      r   )r   rl   toggle_code_context_eventr[   assertIsNotNoner   r\   getr   r   r   r   r   r   r   joinget_contextrj   )r   r   rl   toggleline11_contexts        r   test_toggle_code_context_event.CodeContextTest.test_toggle_code_context_event   s   WW-- ::H 	RZZ(
2::ftyy01
2::dT//=>
2::dT//=>
2::>>%*B/
2::01
499<<Wfdggjj9!<gF 	"**%
2::01$''**% "G1CA1F"GG
b
2::>>%*N; 	
2::>>%*N;r   c                 "   U R                   nU R                  R                  nU R                  [        5         U" SSS9  S S S 5        U" U" S5      S/S45        U" U" S5      S/S45        U" U" S5      SS/S45        U" U" S	5      / S
QS45        U" U" S5      / SQS45        U" U" SSS9/ SQS45        U" U" SSS9/ SQS45        U" U" SSS9SS/S45        U" U" SSS9/ SQS45        U" U" SSS9SS/S45        g ! , (       d  f       N= f)Nr9   r   )stopline   r   r   	class C1:class      r   r       def __init__(self, a, b):def
   )r      r   z    def compare(self):r      r           if a > b:ifr   )r   r   r   r   r   z        elif a < b:elifr   )r   r   r   r   r   r   )
stopindent)r   rl   r   r   AssertionError)r   r   gcs      r   test_get_context CodeContextTest.test_get_context   s   WW   ~.q1 / 	2a501156 	2a501156 	2a50BDEFH 	I 	2b6 89:< 	=
 	2b6 = ?@A 	B 	2b1 !I KL M 	N 	2b1 !IJK M 	N 	2b1!B!G!IJK M 	N 	2bQ #KLM"O 	P 	2bQ#D#I#KLM"O 	PQ /.s   D  
Dc                 L   U R                   nU R                  nUR                  (       d  UR                  5         U R	                  UR                  5       5        U" UR                  S/5        U" UR                  S5        UR                  R                  S5        UR                  5         U" UR                  S/5        U" UR                  S5        U" UR                  R                  SS5      S5        UR                  R                  S5        UR                  5         U" UR                  SS/5        U" UR                  S5        U" UR                  R                  SS5      S	5        UR                  R                  S5        UR                  5         U" UR                  SS/5        U" UR                  S
5        U" UR                  R                  SS5      S	5        UR                  R                  S
5        UR                  5         U" UR                  / SQ5        U" UR                  S5        U" UR                  R                  SS5      S5        UR                  R                  S5        UR                  5         U" UR                  / SQ5        U" UR                  S5        U" UR                  R                  SS5      S5        UR                  5         SUl        U" UR                  / SQ5        U" UR                  S5        U" UR                  R                  SS5      S5        UR                  R                  S5        UR                  5         U" UR                  / SQ5        U" UR                  S5        U" UR                  R                  SS5      S5        g )Nr}   r9   r   r6   r   r   r   r   r   r   )r}   r   r   r   z'class C1:
    def __init__(self, a, b):r   )r}   r   r   r   r      zFclass C1:
    def compare(self):
        if a > b:
        elif a < b:   r   )r   rl   r[   r   r   update_code_contextr   r   r   rj   r   r   )r   r   rl   s      r   test_update_code_context(CodeContextTest.test_update_code_context   s   WWzz((* 	"0023
277'()
2==! 	a
 
277'()
2==!
2::>>%*B/ 	a
 
277')EFG
2==!
2::>>%*K8 	a
 
277')EFG
2==!
2::>>%*K8 	a
 
277 E 	F 	2==!
2::>>%* -L 	M 	b
 
277 = 	>
 	2=="
2::>>%* -B 	C 	 
277 = 	>
 	2=="
2::>>%* -B 	C 	a
 
277 E 	F 	2==!
2::>>%*,KLr   c                 P   U R                   nU R                  nUR                  nUR                  (       d  UR	                  5         UR
                  R                  S5        UR                  5         U" UR                  S5        UR                  R                  SS5        U" 5         U" UR                  S5        UR
                  R                  S5        UR                  5         U" UR                  S5        UR                  R                  SS5        U" 5         U" UR                  S	5        SUl
        UR
                  R                  S5        UR                  5         U" UR                  S5        UR                  R                  SS
5        U" 5         U" UR                  S	5        UR
                  R                  S5        UR                  5         UR                  R                  SS
S5        UR                  R                  SS
5        U" 5         U" UR                  S5        g )Nz2.0r   rA   z1.5r9   z12.0r   z3.0r   r6   z5.0selr   )r   rl   
jumptoliner[   r   r   rj   r   r   mark_setr   tag_add)r   r   rl   jumps       r   test_jumptolineCodeContextTest.test_jumptoline.  s   WW}}zz((* 	e
 
2==!


He,
2==! 	f
 
2=="


He,
2==! 
f
 
2=="


He,
2==! 	e
 


5%/


He,
2==!r   r   c                 J   U R                   R                  (       a  U R                   R                  5         U R                   R                  5         UR	                  5         U R                   R                  5         U R                   R                  5         UR                  5         g r!   )rl   r[   r   timer_eventassert_not_calledassert_called)r   mock_updates     r   test_timer_event CodeContextTest.test_timer_eventW  si     77??GG--/%%' 	))+!!#r   c                    U R                   nU R                  nUR                  S   nSnU R                  X45        UR                  b  UR                  5         X@l        UR                  5         UR                  5         U" UR                  S   U5        X0l        UR                  5         U" UR                  S   U5        g )NrV   
TkTextFont)r   rl   r   assertNotEqualr[   r   rd   update_font)r   r   rl   	orig_font	test_fonts        r   r   CodeContextTest.test_fontd  s    WWGGFO	 	I1 ::!((*&
 	$$&
2::fy) '

2::fy)r   c                   ^^ U R                   mU R                  m[        U R                  5      nSSS.nUU4S jnTR                  (       a  TR                  5         X l        TR                  5         TR                  5         U" U5        TR                  5         U" U5        Xl        TR                  5         U" U5        g )Nz#222222z#ffff00rW   c                 j   > T" TR                   S   U S   5        T" TR                   S   U S   5        g )NrX   rY   )r[   )colorsrl   r   s    r   assert_colors_are_equalFCodeContextTest.test_highlight_colors.<locals>.assert_colors_are_equal  s3    rzz,')=>rzz,')=>r   )r   rl   dictr\   r[   r   update_highlight_colors)r   orig_colorstest_colorsr   rl   r   s       @@r   test_highlight_colors%CodeContextTest.test_highlight_colors}  s    WW4--.%.iH	?
 ::((*(
""$ 	$$&, 	""$, )
""$,r   )rl   rd   r\   N)r+   r,   r-   r.   classmethodrJ   rR   ru   rz   r   r   r   r   r   r   r   r   r
   rn   ro   r   rk   r   r   r   r/   r0   r   r   r2   r2   5   s    / /  .2%&:4"<H.P`OMb'R 
ZZ{..0EF
$ G
$*2-r   r2   c                        \ rS rSrS rS rSrg)HelperFunctionTexti  c                     [         R                  nSnU H  u  p4U R                  U" U5      U5        M     U R                  U" S[        R                  " S5      S9S5        g )N))z    first word)    first)z	first word)	r   )u
     ᧔᧒: )z  u   ᧔᧒)z	no spaces)r   no)r   r   r   )z# TEST COMMENTr   )    (continuation))r   r   r   z^(\s*)([^\s]*))c)r   z(continuation))r   get_spaces_firstwordr   recompile)r   r   
test_lineslineexpected_outputs        r   test_get_spaces_firstword,HelperFunctionText.test_get_spaces_firstword  sa    ..
 &0!DSY8 &0 	1!zz*;<>3	5r   c                 z   U R                   n[        R                  n[        R	                  5       nU" U" US   5      [        R
                  SS45        U" U" US   5      S5        U" U" US   5      [        R
                  SS45        U" U" US   5      S	5        U" U" US
   5      S5        U" U" S5      S5        g )Nr   r   Fr9   )r   r   r   r   z    # Class comment.r   )r   r   r   r   )r   r   r   	if a == b:)r9   r
  r   )r   r   get_line_inforB   
splitlinesINFINITY)r   r   gliliness       r   test_get_line_info%HelperFunctionText.test_get_line_info  s    ''&&( 	3uQx=;//U;<
3uQx=34
3uQx=;//1GOP
3uQx=EF
3uQx=89
3~ 9:r   r0   N)r+   r,   r-   r.   r  r  r/   r0   r   r   r   r     s    5&;r   r   __main__r   )	verbosity)__doc__idlelibr   rm   unittest.mocktest.supportr   tkinterr   r   r   r   r	   r
   r  r   rG   rH   rN   IdleUserConfParserrF   rB   r   TestCaser2   r   r+   r   r0   r   r   <module>r     s    !    ! 3 3  	  


&
&%%b)**2.%%b)++B/	"% %f-h'' f-R%;** %;P zMMA r   