
    z%i>                        d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZ ddlmZ ddlZddlmZ ej                   j"                  Z ej&                  d       ej&                  d       ej&                  d       ej&                  d      d	Zd
Z G d d      Z G d dej.                        Z G d dej.                        Zedk(  r ej6                  d       yy)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                       e Zd Zd Zd Zd Zy)DummyEditwinc                 J    || _         || _        || _        || _        d| _        y )Nr   )roottop
text_frametextlabel)selfr   framer   s       V/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/idle_test/test_codecontext.py__init__zDummyEditwin.__init__'   s%    		
    c                 \    t        t        | j                  j                  |                  S N)intfloatr   index)r   r"   s     r   	getlinenozDummyEditwin.getlineno.   s    5/011r   c                     |d   | _         y )Nr   )r   )r   kwargss     r   update_menu_labelzDummyEditwin.update_menu_label1   s    G_
r   N)__name__
__module____qualname__r   r#   r&    r   r   r   r   &   s    2%r   r   c                       e Zd Zed        Zed        Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zej"                  j%                  ej(                  d      d        Zd Zd Zy)CodeContextTestc                 ~   t        d       t               x}| _        |j                          t	        |      x}| _        t        |      x}| _        |j                  dt               |j                  ddd       |j                  ddt               t        |||      | _        t        t         j"                  _        y )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   
setUpClasszCodeContextTest.setUpClass7   s    $sx!$K'	u+%sxE;'

VA
6		a$	/!$t4
'.$r   c                     t         t        j                  _        | j                  j
                  j                  dd       | `| `| `| j                  j                          | j                  j                          | `y )Nr/   end)usercfgr   r@   rA   r>   r   deleter   r   update_idletasksdestroy)rB   s    r   tearDownClasszCodeContextTest.tearDownClassE   sZ    '.$

ue,J	38!!#Hr   c                      j                   j                  d       d j                   d<   t        j                   j                         _        ddd _        t        j                  j                   fd}t        j                  j                  j                  t        j                  d|      }|j                           j                  |j                         d _         fd	}t        j                  j                  j                  t        j                  d
|      }|j                           j                  |j                         y )Nr   TkFixedFontfontz#abcdefz#123456
background
foregroundc                 8    |dk(  rj                   S  | |      S )Ncontext)highlight_cfg)themeelementorig_idleConf_GetHighlightr   s     r   mock_idleconf_GetHighlightz9CodeContextTest.setUp.<locals>.mock_idleconf_GetHighlightV   s$    )#)))-eW==r   GetHighlightc                     j                   S r   )font_override)r   
configTypesectionr   s      r   mock_idleconf_GetFontz4CodeContextTest.setUp.<locals>.mock_idleconf_GetFont`   s    %%%r   GetFont)r   yviewr   CodeContextr>   ccrS   r@   rX   unittestr
   patchobjectstart
addCleanupstoprZ   )r   rW   GetHighlight_patcherr]   GetFont_patcherrV   s   `    @r   setUpz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                     | j                   j                  r$| j                   j                  j                          | j                   j                          | j                   `| ` y r   )ra   rR   rI   __del__r   s    r   tearDownzCodeContextTest.tearDowng   s<    77??GGOO##%GGOTWr   c                    | j                   }| j                  }| j                  } ||j                  |        ||j                  |j                          ||j                  d   |j                  d          | j                  |j                          ||j                  dg        ||j                  d       | j                  | j                  j                         y )NrM   r   r   Fr2   )
assertEqualr>   ra   editwinr   assertIsNonerR   info
topvisiblet1)r   eqedra   s       r   	test_initzCodeContextTest.test_initn   s    [[WW
2::r
277BGG
2776?BGGFO,"**%
277'()
2==!$''**%r   c                 8    | j                   j                          y r   )ra   rl   rm   s    r   test_delzCodeContextTest.test_del{   s    r   c                    | j                   j                  dd       x}| j                  _        | j                  j	                          | j                  t              5 }| j                  j                  j                  dd|       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Ni'  c                       y r   r*   r*   r   r   <lambda>z5CodeContextTest.test_del_with_timer.<locals>.<lambda>   s    r   afterru   zdoesn't exist)r   r   ra   rw   rl   assertRaisesr	   r   tkcallassertInstr	exception)r   timercms      r   test_del_with_timerz#CodeContextTest.test_del_with_timer~   s    !YY__ULAA
x( 	6BIILLgvu5	6os2<<'89	6 	6s   (B44B=c                     t         j                  j                          | j                  | j                  j
                  d       y )N   )r   r`   reloadrr   ra   context_depthrm   s    r   test_reloadzCodeContextTest.test_reload   s.    &&(..3r   c                    | j                   }| j                  }|j                  }|j                  r |         |        | j	                  |j                          ||j                  d   | j
                  d           ||j                  d   | j                  d           ||j                  d   | j                  d           ||j                  j                  dd      d        ||j                  j                  d	        || j                  j                  j                  d
d| j                  j                        d   d        |        | j                  |j                          ||j                  j                  d       | j                  | j                  j                         dj                  d |j!                  d      d   D              }|j
                  j#                  d        |         ||j                  j                  dd      |        |         |         ||j                  j                  dd      |       y )NrM   fgrP   bgrO   r/   end-1cr   zHide Code Contextr   ru   r2   r   zShow Code Context
c              3   &   K   | ]	  }|d      yw)   Nr*   ).0xs     r   	<genexpr>zACodeContextTest.test_toggle_code_context_event.<locals>.<genexpr>   s     "GA1Q4"Gs      r   )rr   ra   toggle_code_context_eventrR   assertIsNotNoner   rS   getrs   r   r   r   r   rw   rt   joinget_contextr_   )r   rx   ra   toggleline11_contexts        r   test_toggle_code_context_eventz.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                 <   | j                   }| j                  j                  }| j                  t              5   |dd       d d d         | |d      dgdf        | |d      dgdf        | |d      ddgdf        | |d	      g d
df        | |d      g ddf        | |dd      g ddf        | |dd      g ddf        | |dd      ddgdf        | |dd      g ddf        | |dd      ddgdf       y # 1 sw Y   xY w)Nr2   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)rr   ra   r   r   AssertionError)r   rx   gcs      r   test_get_contextz 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                 B   | j                   }| j                  }|j                  s|j                          | j	                  |j                                 ||j                  dg        ||j                  d       |j                  j                  d       |j                           ||j                  dg        ||j                  d        ||j                  j                  dd      d       |j                  j                  d       |j                           ||j                  ddg        ||j                  d        ||j                  j                  dd      d	       |j                  j                  d       |j                           ||j                  ddg        ||j                  d
        ||j                  j                  dd      d	       |j                  j                  d
       |j                           ||j                  g d        ||j                  d        ||j                  j                  dd      d       |j                  j                  d       |j                           ||j                  g d        ||j                  d        ||j                  j                  dd      d       |j                          d|_         ||j                  g d        ||j                  d        ||j                  j                  dd      d       |j                  j                  d       |j                           ||j                  g d        ||j                  d        ||j                  j                  dd      d       y )Nrp   r2   r   r/   r   r   r   r   r   r   )rp   r   r   r   z'class C1:
    def __init__(self, a, b):r   )rp   r   r   r   r      zFclass C1:
    def compare(self):
        if a > b:
        elif a < b:   r   )rr   ra   rR   r   rt   update_code_contextru   rv   r   r_   r   r   )r   rx   ra   s      r   test_update_code_contextz(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                 F   | j                   }| j                  }|j                  }|j                  s|j	                          |j
                  j                  d       |j                           ||j                  d       |j                  j                  dd        |         ||j                  d       |j
                  j                  d       |j                           ||j                  d       |j                  j                  dd        |         ||j                  d	       d|_
        |j
                  j                  d       |j                           ||j                  d       |j                  j                  dd
        |         ||j                  d	       |j
                  j                  d       |j                          |j                  j                  dd
d       |j                  j                  dd
        |         ||j                  d       y )Nz2.0r   r:   z1.5r2   z12.0r   z3.0r   r/   z5.0selr   )rr   ra   
jumptolinerR   r   r   r_   r   rv   mark_setr   tag_add)r   rx   ra   jumps       r   test_jumptolinez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                   j                  r| j                   j                          | j                   j                          |j	                          | j                   j                          | j                   j                          |j                          y r   )ra   rR   r   timer_eventassert_not_calledassert_called)r   mock_updates     r   test_timer_eventz CodeContextTest.test_timer_eventW  si     77??GG--/%%' 	))+!!#r   c                    | j                   }| j                  }|j                  d   }d}| j                  ||       |j                  |j                          || _        |j                          |j                           ||j                  d   |       || _        |j                           ||j                  d   |       y )NrM   
TkTextFont)rr   ra   r   assertNotEqualrR   r   rZ   update_font)r   rx   ra   	orig_font	test_fonts        r   r   zCodeContextTest.test_fontd  s    WWGGFO	 	Iy1 ::!((*&
 	$$&
2::fy) '

2::fy)r   c                 |   | j                   | j                  t        | j                        }ddd}fd}j                  rj                          || _        j                          j                           ||       j                           ||       || _        j                           ||       y )Nz#222222z#ffff00rN   c                 j     j                   d   | d           j                   d   | d          y )NrO   rP   )rR   )colorsra   rx   s    r   assert_colors_are_equalzFCodeContextTest.test_highlight_colors.<locals>.assert_colors_are_equal  s3    rzz,')=>rzz,')=>r   )rr   ra   dictrS   rR   r   update_highlight_colors)r   orig_colorstest_colorsr   ra   rx   s       @@r   test_highlight_colorsz%CodeContextTest.test_highlight_colors}  s    WW4--.%.iH	?
 ::((*(
""$ 	$$&, 	""$, )
""$,r   N)r'   r(   r)   classmethodrC   rJ   rj   rn   rz   r|   r   r   r   r   r   r   r
   rc   rd   r   r`   r   r   r   r*   r   r   r,   r,   5   s    / /  .2%&:4"<H.P`OMb'R 
ZZ{..0EF
$ G
$*2-r   r,   c                       e Zd Zd Zd Zy)HelperFunctionTextc                     t         j                  }d}|D ]  \  }}| j                   ||      |        | j                   |dt        j                  d            d       y )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_firstwordrr   recompile)r   r   
test_lineslineexpected_outputs        r   test_get_spaces_firstwordz,HelperFunctionText.test_get_spaces_firstword  sh    ..
 &0 	9!D/SY8	9 	1!zz*;<>3	5r   c                 z   | j                   }t        j                  }t        j	                         } | ||d         t        j
                  ddf        | ||d         d        | ||d         t        j
                  ddf        | ||d         d	        | ||d
         d        | |d      d       y )Nr   r   Fr2   )r   r   r   r   z    # Class comment.r   )r   r   r   r   )r   r   r   	if a == b:)r2   r   r   )rr   r   get_line_infor;   
splitlinesINFINITY)r   rx   gliliness       r   test_get_line_infoz%HelperFunctionText.test_get_line_info  s    ''&&( 	3uQx=;//U;<
3uQx=34
3uQx=;//1GOP
3uQx=EF
3uQx=89
3~ 9:r   N)r'   r(   r)   r   r   r*   r   r   r   r     s    5&;r   r   __main__r   )	verbosity)__doc__idlelibr   rb   unittest.mocktest.supportr   tkinterr   r   r   r   r	   r
   r   r   r@   rA   rF   IdleUserConfParserr?   r;   r   TestCaser,   r   r'   r   r*   r   r   <module>r      s    !    ! 3 3  	  


&
&%F%%b)***2.%F%%b)+&++B/	"% %f-h'' f-R%;** %;P zHMMA r   