
    /hhi                     d   S SK Jr  S SKrS SKJr  S SKrS SKrS SKJrJ	r	J
r
  S SKJr  S SKrS SKJr  S SKJr  S SKJr  S S	KJr  S SKrS S
KJrJrJr  S SKJr  S SKrS SKJrJ r    " S S5      r! " S S\RD                  5      r# " S S\RD                  \5      r$\%S:X  a  \RL                  " SS9  gg)    )dedentN)chain)adjust_int_max_str_digitsrequires	swap_attr)ExtraAssertions)run_in_tk_mainloop)	Delegator)fixwordbreaks)
Percolator)fix_x11_pastePyShellPyShellFileList)fix_scaling)get_end_linenumber
get_linenoc                   &    \ rS rSrS rS rS rSrg)Dummy_editwin   c                     Xl         U R                   R                  U l        [        U5      U l        [        5       U l        U R                  R                  U R                  5        g N)textmaster
text_framer   perr
   undoinsertfilter)selfr   s     G/opt/python-3.13.8/usr/lib/python3.13/idlelib/idle_test/test_sidebar.py__init__Dummy_editwin.__init__   sC    	))**d#K	dii(    c                     g r    )r   namevalues      r   setvarDummy_editwin.setvar   s    r"   c                 \    [        [        U R                  R                  U5      5      5      $ r   )intfloatr   index)r   r,   s     r   	getlinenoDummy_editwin.getlineno"   s    5/011r"   )r   r   r   r   N)__name__
__module____qualname____firstlineno__r    r'   r-   __static_attributes__r$   r"   r   r   r      s    )2r"   r   c                   0   \ 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S rS rS rS r\R,                  " S5      S 5       rS r\R,                  " S5      S 5       r\R,                  " S5      S 5       rS rS rS rSrg)LineNumbersTest&   c                    [        S5        [        R                  " 5       U l        U R                  R	                  5         [        R
                  " U R                  5      U l        U R                  R                  [        R                  [        R                  SS9  U R                  R                  SSS9  U R                  R                  SSS9  [        R                  " U R                  SS[        R                  S9U l        U R                  R                  SS[        R                   S	9  [#        U R                  5      U l        [        R&                  " U R                  5      U R$                  l        g )
NguiT)sidefillexpand   )weightP      )widthheightwrap)rowcolumnsticky)r   tkTkrootwithdrawFramer   packLEFTBOTHrowconfigurecolumnconfigureTextNONEr   gridNSEWr   editwin	Scrollbarvbarclss    r   
setUpClassLineNumbersTest.setUpClass(   s    557#((+rwwtD##Aa#0&&q&3773>>BRWWM!Abgg6#CHH-<<7r"   c                     U R                   R                  R                  5         U R                  R	                  5         U R                  R                  5         U ?U ?U ? U ?g r   )rT   r   closerH   update_idletasksdestroyr   r   rW   s    r   tearDownClassLineNumbersTest.tearDownClass9   sG    !!#Hcnck38r"   c                   ^ ^ [         R                  R                  T R                  5      T l        SSS.T l        [         R                  R                  R                  mUU 4S jn[        R                  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                  R                  SU5      nUR                  5         T R                  UR                  5        g )	N#abcdef#123456
background
foregroundc                 8   > US:X  a  TR                   $ T" X5      $ )N
linenumber)highlight_cfg)themeelementorig_idleConf_GetHighlightr   s     r   mock_idleconf_GetHighlight9LineNumbersTest.setUp.<locals>.mock_idleconf_GetHighlightF   s"    ,&)))-e==r"   GetHighlightTkFixedFontc                    > TR                   $ r   )font_override)rH   
configTypesectionr   s      r   mock_idleconf_GetFont4LineNumbersTest.setUp.<locals>.mock_idleconf_GetFontP   s    %%%r"   GetFont)idlelibsidebarLineNumbersrT   rh   ri   idleConfro   unittestmockpatchobjectstart
addCleanupstoprr   )r   rm   GetHighlight_patcherru   GetFont_patcherrl   s   `    @r   setUpLineNumbersTest.setUp@   s    !//55dllC,5,57%,__%=%=%J%J"	>  (}}2299OO$$n6P R""$,112*	&"----44OO$$i1FH,,-r"   c                 <    U R                   R                  SS5        g N1.0end)r   deleter   s    r   tearDownLineNumbersTest.tearDownW   s    		&r"   c                 f    [        [        [        U R                  R	                  S5      5      5      $ )Nsel)tuplemapstrr   
tag_rangesr   s    r   get_selectionLineNumbersTest.get_selectionZ   s#    Sdii2259:;;r"   c                 x    U R                   R                  R                  U S35      nUS   S-   nUS   S-   nX44$ )Nz.end -1cr      r<   )rh   sidebar_textbbox)r   liner   xys        r   get_line_screen_position(LineNumbersTest.get_line_screen_position]   sD    ++00D61BCGaKGaKtr"   c                     U R                   R                  R                  5       S   nU R                  US   [        R
                  5        g )Nstate)rh   r   configassertEqualrF   DISABLED)r   r   s     r   assert_state_disabled%LineNumbersTest.assert_state_disabledc   s7    ,,335g>rBKK0r"   c                 j    U R                   R                  R                  S[        R                  5      $ )Nr   )rh   r   getrF   ENDr   s    r   get_sidebar_text_contents)LineNumbersTest.get_sidebar_text_contentsg   s#    ++//rvv>>r"   c                     SR                  [        [        [        [	        SUS-   5      5      S/5      5      nU R                  U R                  5       U5        g )N
r<    )joinr   r   r   ranger   r   )r   n_linesexpecteds      r   assert_sidebar_n_lines&LineNumbersTest.assert_sidebar_n_linesj   sD    99U3sE!Wq[,A#BRDIJ7798Dr"   c                 Z    U R                  U R                  R                  SS5      U5      $ r   )r   r   r   )r   r   s     r   assert_text_equals"LineNumbersTest.assert_text_equalsn   s$    		eU ;XFFr"   c                 &    U R                  S5        g Nr<   )r   r   s    r   test_init_emptyLineNumbersTest.test_init_emptyq   s    ##A&r"   c                     U R                   R                  SS5        U R                  S5        U R                  S5        g )Ninsertzfoo bar
foo bar
foo bar
zfoo bar
foo bar
foo bar

   )r   r   r   r   r   s    r   test_init_not_empty#LineNumbersTest.test_init_not_emptyt   s3    		=1 45##A&r"   c                    U R                  U R                  R                  S5        U R                  R                  5         U R                  U R                  R                  S5        U R                  R	                  5         U R                  U R                  R                  S5        U R                  R	                  5         U R                  U R                  R                  S5        U R                  R                  5         U R                  U R                  R                  S5        U R                  R                  5         U R                  U R                  R                  S5        g )NFT)r   rh   is_shownshow_sidebarhide_sidebarr   s    r   test_toggle_linenumbering)LineNumbersTest.test_toggle_linenumberingy   s    1159$$&1148$$&1159$$&1159$$&1148$$&1148r"   c                 t   U R                   R                  SS5        U R                  S5        U R                  S5        U R	                  5         U R                   R                  SS5        U R                  S5        U R                  S5        U R	                  5         U R                   R                  SS5        U R                  S	5        U R                  S
5        U R	                  5         U R                   R                  SS5        U R                  S5        U R                  S5        U R	                  5         g )Nr   foobarfoobar
r<   z
foozfoobar
foo
r   zhello
hello
zfoobar
foohello
hello

r   z
worldzfoobar
foohello
hello

world
   )r   r   r   r   r   r   s    r   test_insertLineNumbersTest.test_insert   s    		8,
+##A&""$		7+0##A&""$		;/ =>##A&""$		9- DE##A&""$r"   c                 j   U R                   R                  SS5        U R                  S5        U R                   R                  SS5        U R                  S5        U R	                  S5        U R                  5         U R                   R                  SS5        U R                  S	5        U R	                  S
5        U R                  5         U R                   R                  SS5        U R                  S5        U R	                  S
5        U R                  5         U R                   R                  SS5        U R                  S5        U R	                  S5        U R                  5         U R                   R                  SS5        U R                  S5        U R	                  S5        U R                  5         g )Nr   r   r   z1.1z1.3zfbar
r<   zfoo
foo
zfbarfoo
foo

   2.0z2.endz
fbarfoo


r   zfba
r   r   )r   r   r   r   r   r   r   s    r   test_deleteLineNumbersTest.test_delete   sU   		8,
+		&)##A&""$		9- 23##A&""$ 			(0##A&""$		&(##A&""$ 			&%##A&""$r"   c                   ^  U 4S jnT R                  S5        T R                  U" 5       S5        T R                  R                  SS5        T R                  S5        T R                  U" 5       S5        T R                  R                  SS5        T R                  S5        T R                  U" 5       S5        T R                  R                  SS5        T R                  S5        T R                  U" 5       S	5        T R                  R                  SS5        T R                  S
5        T R                  U" 5       S	5        T R                  R	                  SS5        T R                  S5        T R                  U" 5       S	5        T R                  R	                  SS5        T R                  S5        T R                  U" 5       S5        T R                  R                  SS5        T R                  S5        T R                  U" 5       S	5        T R                  R                  SS5        T R                  S5        T R                  U" 5       S5        T R                  R                  SS5        T R                  S5        T R                  U" 5       S5        T R                  R	                  SS5        T R                  S5        T R                  U" 5       S5        T R                  R	                  SS5        T R                  S5        T R                  U" 5       S	5        T R                  R	                  SS5        T R                  S5        T R                  U" 5       S	5        T R                  R	                  SS5        T R                  S5        T R                  U" 5       S5        T R                  R	                  SS5        T R                  S5        T R                  U" 5       S5        g )Nc                  X   > T R                   R                  R                  5       S   S   $ )Nr@   r   )rh   r   r   r   s   r   	get_width:LineNumbersTest.test_sidebar_text_width.<locals>.get_width   s&    ??//668A"EEr"   r<   r   fooz foo
foo
foo
foo
foo
foo
foo
foo
	   zfoo

   r      zinsert -1l linestartzinsert linestartah  foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
c   d   r   e   z50.0 -1czend -1c1   z5.0 -1cr   r   )r   r   r   r   r   )r   r   s   ` r   test_sidebar_text_width'LineNumbersTest.test_sidebar_text_width   s   
	F 	##A&a(		5)##A&a(		9-##A&a(		7+##B'a(		7+##B'a(		/1CD##B'a(		/1CD##A&a(		:.##B'a(		7+##C(a(		7+##C(a(		/1CD##C(a(		/1CD##B'a(		Y/##B'a(		I.##A&a( 				*##A&a(r"   ztest disabledc                    U R                   R                  5         U R                  R                  SS5        U R                  R                  5         U R                  S5      u  pU R                   R                  R                  SXS9  U R                   R                  R                  5         U R                  R                  5         U R                  U R                  5       S5        g )Nr   zone
two
three
four
r   
<Button-1>r   r   )r   z3.0)rh   r   r   r   rH   updater   r   event_generater   r   )r   r   r   s      r   test_click_selection$LineNumbersTest.test_click_selection  s    $$&		 9:		 ,,Q/$$33LA3K$$++-		++-~>r"   c                 @   U R                  U5      u  p4U R                  U5      u  pVU R                  R                  R                  SX4S9  U R                  R                  5         S n[        [        [        U" X5SS95      [        [        U" XFSS95      5       HC  u  pU R                  R                  R                  SXS9  U R                  R                  5         ME     U R                  R                  R                  SXVS9  U R                  R                  5         g )Nr   r   c              3   b   #    US-
  n[        U5       H  nX4-
  U-  U -  XC-  U-  -   v   M     g 7fr   )r   )absteps	last_stepis        r   lerp+LineNumbersTest.simulate_drag.<locals>.lerp  s:     	I5\!2a71=A:MMM "s   -/r   )r   z<B1-Motion>z<ButtonRelease-1>)	r   rh   r   r   rH   r   zipr   r*   )
r   
start_lineend_linestart_xstart_yend_xend_yr   r   r   s
             r   simulate_dragLineNumbersTest.simulate_drag  s    88D44X>$$33L6= 	4 	J			N CgB78CgB78
DA OO((777PII
 	$$334G6; 	4 	F		r"   c                    U R                   R                  5         U R                  R                  SS5        U R                  R                  5         U R                  SS5        U R                  U R                  5       S5        g )Nr   one
two
three
four
five
r   r   r   z5.0	rh   r   r   r   rH   r   r   r   r   r   s    r   test_drag_selection_down(LineNumbersTest.test_drag_selection_down+  b    $$&		 ?@		 	1a ++-~>r"   c                    U R                   R                  5         U R                  R                  SS5        U R                  R                  5         U R                  SS5        U R                  U R                  5       S5        g )Nr   r   r   r   r   r   r   s    r   test_drag_selection_up&LineNumbersTest.test_drag_selection_up5  r   r"   c                    U R                   R                  5         U R                  R                  SS5        U R                  R                  5         U R                  R                  SS5        U R                  R                  5         U R                  U R                  R                  S5      S5        U R                  U R                   R                  R                  S5      S5        U R                   R                  R                  SSSSS	9  U R                  R                  5         U R                  U R                  R                  S5      S5        U R                  U R                   R                  R                  S5      S5        g )
Nr   a  line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
line
r   unit@0,0z11.0<MouseWheel>r   r   r   delta)rh   r   r   r   rH   r   yview_scrollr   r,   r   r   assertNotEqualr   s    r   test_scrollLineNumbersTest.test_scroll?  s   $$&		/		 			r6*		0&955;;FCVL
 	$$33N671:< 	4 	> 			DIIOOF3V<DOO88>>vFOr"   c                 t   U R                   nUR                  S   nSnU R                  X#5        UR                  5         X0l        UR                  5         UR                  5         U R                  UR                  S   U5        X l        UR                  5         U R                  UR                  S   U5        g )Nfont
TkTextFont)rh   r   r  r   rr   update_fontr   r   )r   ln	orig_font	test_fonts       r   r  LineNumbersTest.test_fontT  s    __OOF+	 	I1 	&
 	0)< '
0)<r"   c                 N  ^ ^ T R                   m[        T R                  5      nSSS.nUU 4S jnTR                  5         UT l        TR	                  5         TR                  5         U" U5        TR	                  5         U" U5        UT l        TR	                  5         U" U5        g )Nz#222222z#ffff00rd   c                    > TR                  TR                  S   U S   5        TR                  TR                  S   U S   5        g )Nre   rf   )r   r   )colorsr  r   s    r   assert_colors_are_equalFLineNumbersTest.test_highlight_colors.<locals>.assert_colors_are_equalq  s?    R__\:F<<PQR__\:F<<PQr"   )rh   dictri   r   update_colorsr   )r   orig_colorstest_colorsr  r  s   `   @r   test_highlight_colors%LineNumbersTest.test_highlight_colorsk  s    __4--.%.iH	R
 	(
 	, 	, )
,r"   )rr   ri   rh   N)r/   r0   r1   r2   classmethodrY   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   skipr   r   r   r  r  r  r  r3   r$   r"   r   r5   r5   &   s    8 8  < <..'<1?EG''
9%*%<B)V ]]?#? $?2 ]]?#? $? ]]?#? $?P*=.-r"   r5   c                      \ rS rSr% Sr\R                  \S'   Sr\	\S'   \
S 5       r\
S 5       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\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       rS r S r!\" 5       S 5       r"\" 5       S 5       r#\" 5       S 5       r$Sr%g)ShellSidebarTesti  NrH   shellc                    [        S5        [        R                  " 5       =U l        nUR	                  5         [        U5        [        U5        [        U5        [        U5      =U l	        nUR                  5         U R                  5         g )Nr8   )r   rF   rG   rH   rI   r   r   r   r   flistr]   
init_shell)rX   rH   r'  s      r   rY   ShellSidebarTest.setUpClass  sc    %%'!4Ddd+D11	Er"   c                    U R                   b2  SU R                   l        U R                   R                  5         S U l         S U l        U R                  R                  5         U R                  R                  5         S U l        g )NF)r%  	executingr\   r'  rH   r]   r^   rW   s    r   r_   ShellSidebarTest.tearDownClass  s[    99 "'CIIIIOOCI	!!#r"   c                     U R                   R                  5       U l        SU R                  l        U R                  R                  5         [        U R                  R                  S5      S-
  U l        g )Nr   end-1cr<   )	r'  
open_shellr%  pollintervalrH   r   r   r   n_preface_linesrW   s    r   r(  ShellSidebarTest.init_shell  sL    II((*	!#		(BQFr"   c                     U R                   R                  R                  R                  U R                  S-    S3S5        U R                   R
                  R                  5         U R                  R                  5         g )Nr<   .0r.  )	r%  r   bottomr   r1  shell_sidebarupdate_sidebarrH   r   rW   s    r   reset_shellShellSidebarTest.reset_shell  sW    		##s':':1'<&=R$@(K		..0r"   c                     S U l         [        R                  U R                  R                  :w  a4  [        R                  U l         U R                  R                  [        l        U R	                  5         g r   )_saved_stdoutsysstdoutr%  r8  r   s    r   r   ShellSidebarTest.setUp  sK    
 "::***!$D**CJr"   c                 J    U R                   b  U R                   [        l        g g r   )r;  r<  r=  r   s    r   r   ShellSidebarTest.tearDown  s     )++CJ *r"   c                 t   U R                   R                  R                  n[        UR	                  [
        R                  5      5      nU Vs0 s H(  nUR                  U5      S   UR                  US5      _M*     nnU R                  5       nU Vs/ s H  odR                  US 5      PM     sn$ s  snf s  snf )Nr<   r   )r%  r6  canvaslistfindrF   ALLr   itemcgetget_shell_line_y_coordsr   )r   rB  textsr   texts_by_y_coordsline_y_coordsr   s          r   get_sidebar_lines"ShellSidebarTest.get_sidebar_lines  s    ))00V[[() 
 KKa &//$"?? 	 
 4468EF1%%a.FF

 Gs   /B0B5c                     U R                   R                  R                  5         U R                  U R	                  5       [        U5      * S  U5        g r   )r%  r6  r7  r   rK  len)r   expected_liness     r   assert_sidebar_lines_end_with.ShellSidebarTest.assert_sidebar_lines_end_with  sE    

  //1""$c.&9%9%:;	
r"   c                 V   U R                   R                  n/ nUR                  S5      nUR                  SS5      S   S:w  a  UR                  U S35      nUR	                  U5      =nb>  UR                  US   5        UR                  U S35      nUR	                  U5      =nb  M>  U$ )Nr  .r<   0z +1line linestartz +1line)r%  r   r,   split	dlineinfoappend)r   r   y_coordsr,   lineinfos        r   rG  (ShellSidebarTest.get_shell_line_y_coords  s    zz

6";;sAq!S(JJ%(9:;E>>%00x=OOHQK(JJ%01E  >>%00x= r"   c                   ^ U R                   R                  R                  m[        TR	                  [
        R                  5      5      nUR                  U4S jS9  U Vs/ s H  nTR                  U5      S   PM     sn$ s  snf )Nc                 ,   > TR                  U 5      S   $ r   )r   )r   rB  s    r   <lambda><ShellSidebarTest.get_sidebar_line_y_coords.<locals>.<lambda>  s    FKK$5a$8r"   )keyr<   )	r%  r6  rB  rC  rD  rF   rE  sortr   )r   rH  r   rB  s      @r   get_sidebar_line_y_coords*ShellSidebarTest.get_sidebar_line_y_coords  sd    ))00V[[()

8
9167D!!$777s   !Bc                     U R                  [        U R                  5       5      [        U R                  5       5      5        g r   )assertLessEqualsetra  rG  r   s    r   assert_sidebar_lines_synced,ShellSidebarTest.assert_sidebar_lines_synced  s2    ..01,,./	
r"   c                     U R                   nUR                  n[        UR                  S5      5       H/  u  pEUS:  a  UR	                  S5        UR                  SUS5        M1     g )Nr   r   <<newline-and-indent>>r   stdin)r%  r   	enumeraterU  r   r   )r   inputr%  r   
line_indexr   s         r   do_inputShellSidebarTest.do_input  sU    

zz )%++d*; <JA~##$<=KK$0 !=r"   c                     U R                  5       nU R                  US /[        U5      S-
  -  S/-   5        U R                  5         g )Nr<   >>>)rK  r   rN  rf  )r   sidebar_liness     r   test_initial_state#ShellSidebarTest.test_initial_state  sJ    ..0Fc-(1,-7	
 	((*r"   c              #   \   #    U R                  S5        S v   U R                  SS/5        g 7f)Nr   rq  rn  rP  r   s    r   test_single_empty_input(ShellSidebarTest.test_single_empty_input  s&     d**E5>:   *,c              #   \   #    U R                  S5        S v   U R                  / SQ5        g 7f)Nz1
rq  Nrq  rv  r   s    r   test_single_line_statement+ShellSidebarTest.test_single_line_statement  s#     e**+?@ry  c              #   n   #    U R                  [        S5      5        S v   U R                  / SQ5        g 7f)N7            if True:
            print(1)

            rq  ...r  r  Nrq  )rn  r   rP  r   s    r   test_multi_line_statement*ShellSidebarTest.test_multi_line_statement  s7      	f   	
 	** ,
 	s   35c              #   |   #    U R                  S5        S v   U R                  / SQ5        U R                  5         g 7f)Nz11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
r{  )rn  rP  rf  r   s    r   test_single_long_line_wraps,ShellSidebarTest.test_single_long_line_wraps  s0     &'**+?@((*s   :<c              #     #    U R                   nUR                  nU R                  S5        S v   U R                  / SQ5        UR	                  SS5        UR                  S5        S v   U R                  / SQ5        U R                  5         UR                  R                  S   R                  5         S v   U R                  / SQ5        U R                  5         g 7f)Nzprint("a\nb\nc")
)rq  NNNrq  r   zinsert -1line linestartz<<squeeze-current-text>>r{  r   )
r%  r   rn  rP  mark_setr   rf  squeezerexpandingbuttonsr;   )r   r%  r   s      r   test_squeeze_multi_line_output/ShellSidebarTest.test_squeeze_multi_line_output$  s     

zz,-**+KLh"9;67**+?@((*''*113**+KL((*s   CCc              #   :  #    U R                   R                  nU R                  5       nU R                  [	        S5      5        S v   U R                  / SQ5        U R                  5       nU R                  X25        UR                  S5        S v   U R                  / SQ5        UR                  S5        UR                  S5        S v   U R                  / SQ5        UR                  SUR                  S5      5        UR                  S	5        S v   UR                  S
5        S v   U R                  S/5        UR                  S5        S v   U R                  SS/5        UR                  S	5        UR                  S	5        S v   U R                  / SQ5        g 7f)Nz6            if True:
            print(1)
            )rq  r  r  z<<interrupt-execution>>)rq  r  r  Nrq  z<<history-previous>>)rq  r  Nrq  r   z
insert -2lri  z<<undo>>rq  z<<redo>>r  r  )
r%  r   rK  rn  r   rP  r  r   r  r,   )r   r   initial_sidebar_lineswith_block_sidebar_liness       r   test_interrupt_recall_undo_redo0ShellSidebarTest.test_interrupt_recall_undo_redo8  sa    zz $ 6 6 8f   	 	**+@A#'#9#9#; 4L 	56**+MN 	2356**+FG 	h

< 8945J'**E73J'**E5>:4545**5	
s   FFc              #   6  #    [        S5         [        U R                  SS 5         U R                  SSS-  -   S-   5        S v   U R	                  U R                  5       S/5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f7f)Nig+  r  zx = 1i'  r   rq  )r   r   r%  rn  r   rK  r   s    r   test_very_long_wrapped_line,ShellSidebarTest.test_very_long_wrapped_linef  sq     &v.$**j$7MM&3v:-45T335w? 8 /.77 /.s4   BBA A7&B.	B7
B	B
BBc                   ^ ^^^ T R                   R                  mSmU4S jn[        R                  R                  R                  [        R                  R                  SU5      mTR                  5         UU4S jnT R                  U5        U U4S jnT R                  U" 5       T5        TR                  5         T R                  U" 5       T5        g )Nr  c                    > T$ r   r$   )rH   rs   rt   r  s      r   ru   9ShellSidebarTest.test_font.<locals>.mock_idleconf_GetFonts  s	    r"   rw   c                  F   > T R                  5         TR                  5         g r   )r   r  )r   ry   s   r   cleanup+ShellSidebarTest.test_font.<locals>.cleanupx  s      "!r"   c                    > TR                   n [        U R                  [        R                  5      5      nU Vs1 s H  o R                  US5      iM     nnTR                  [        U5      S5        [        [        U5      5      $ s  snf )Nr  r<   )
rB  rC  rD  rF   rE  rF  r   rN  nextiter)rB  rH  r   fontsr   ry   s       r   get_sidebar_font4ShellSidebarTest.test_font.<locals>.get_sidebar_font}  si    ^^FRVV,-E?DEut__T62uEESZ+U$$ Fs   B)r%  r6  r|   r}   r~   r   rx   ry   r{   r   r   r  r  r   )r   ru   r  r  r   ry   r  s   `   @@@r   r  ShellSidebarTest.test_fontn  s    **** 		"----44OO$$i1FH	" 	 	% 	,.	:)+Y7r"   c                   ^ ^^^^ T R                   R                  mSSS.m[        R                  R                  R
                  mUU4S jn[        R                  R                  R                  [        R                  R                  SU5      mTR                  5         UU4S jnT R                  U5        U U4S jnT R                  U" 5       T5        TR                  5         T R                  U" 5       T5        g )Nrb   rc   rd   c                 $   > US;   a  T$ T" X5      $ )N)rh   consoler$   )rj   rk   rl   r  s     r   rm   JShellSidebarTest.test_highlight_colors.<locals>.mock_idleconf_GetHighlight  s    33""-e==r"   ro   c                  F   > T R                  5         TR                  5         g r   )r   r  )r   ry   s   r   r  7ShellSidebarTest.test_highlight_colors.<locals>.cleanup  s     %%'!!#r"   c                  @  > TR                   n [        U R                  [        R                  5      5      nU Vs1 s H  o R                  US5      iM     nnTR                  [        U5      S5        [        [        U5      5      nU R                  S5      nXTS.$ s  snf )Nr:   r<   re   rd   )rB  rC  rD  rF   rE  rF  r   rN  r  r  cget)rB  rH  r   fgsfgbgr   ry   s         r   get_sidebar_colorsBShellSidebarTest.test_highlight_colors.<locals>.get_sidebar_colors  s~    ^^FRVV,-E=BCUT??40UCCSXq)d3iB\*B"$77	 Ds   B)r%  r6  rx   ry   r{   ro   r|   r}   r~   r   r   r   r  r  r   )r   rm   r  r  r   rl   ry   r  s   `   @@@@r   r  &ShellSidebarTest.test_highlight_colors  s    ****%.iH%,__%=%=%J%J"	>  (}}2299OO$$n& ( 	""$	$ 	 	8 	.0+>+-{;r"   c              #     #    U R                   R                  nU R                   R                  nU R                  S5        S v   U R	                  [        US5      S5        [        U5      nU R                  UR                  UR                  U S35      5      5        UR                  R                  S:X  a  SOSnUR                  R                  S:X  a  UR                  R                  SS	S	S
9  OUR                  R                  SS	S	US9  S v   U R                  UR                  UR                  U S35      5      5        UR                  R                  S:X  a  UR                  R                  SS	S	S
9  OUR                  R                  SS	S	U* S9  S v   U R                  UR                  UR                  U S35      5      5        g 7f)Nzox = """



































































































"""
r  r<   r4  aquax   x11z
<Button-4>r   r   r  r  z
<Button-5>)r%  r6  r   rn  assertGreaterr   r   assertIsNotNonerV  r,   rB  _windowingsystemr   assertIsNone)r   ry   r   last_linenor	  s        r   test_mousewheel ShellSidebarTest.test_mousewheel  s{    ****zz 	45:dF3Q7(.T^^DJJ+b7I,JKL ^^44>C >>**e3NN)),!q)ANN)).A%)P$..{m24F)GHI >>**e3NN)),!q)ANN)).A5&)QT^^DJJ+b7I,JKLs   GGc              #     #    U R                   R                  nU R                   R                  n[        U5      nU R	                  [        S5      5        S v   UR                  SU S3S5        UR                  SS5      nU R                  US5        U R                  SU5        UR                  S	5        U R                  UR                  5        UR                  5       nU R                  XT5        g 7f)
Nr  r   r4  r.  	sel.firstsel.lastz	if True:
z
1
z<<copy>>)r%  r6  r   r   rn  r   tag_addr   assertStartsWithassertInr   r   clipboard_clearclipboard_getr   )r   ry   r   
first_lineselected_textcopied_texts         r   	test_copyShellSidebarTest.test_copy  s     ****zz'-
f   	
 	Uzl"-x8j9m\:g}-J',,-((*4s   C0C2c           	   #     #    U R                   R                  nU R                   R                  n[        U5      nU R	                  [        S5      5        S v   UR                  SU S3S5        UR                  SS5      nU R                  US5        UR                  SS5      nUR                  S	5      nUR                  5         S
/S/[        U5      S-
  -  -   S /-   nS	R                  S [        UUSS9 5       5      S	-   nUR                  S5        U R                  UR                   5        UR#                  5       n	U R%                  X5        g 7f)Nz;            if True:
                print(1)

            r   z.3r.  r  r  zTrue:
zsel.first linestartr   rq  r  r   c              3   @   #    U  H  u  pUc  UOUS-   U-   v   M     g 7f)N r$   ).0promptr   s      r   	<genexpr>:ShellSidebarTest.test_copy_with_prompts.<locals>.<genexpr>  s/      /
!1 NDt(;;!1s   T)strictz<<copy-with-prompts>>)r%  r6  r   r   rn  r   r  r   r  rU  poprN  r   r   r   r   r  r  r   )
r   ry   r   r  r  selected_lines_textselected_linesexpected_promptsselected_text_with_promptsr  s
             r   test_copy_with_prompts'ShellSidebarTest.test_copy_with_prompts  sI    ****zz'-
f   	
 	Uzl"-x8j9mY7"hh'<jI,2248 Gug^!4q!899TFB 	%)YY /
 #$4$2+/!1/
 &

 &" 	34,,-((*As   EE)r;  )&r/   r0   r1   r2   rH   rF   rG   __annotations__r%  r   r!  rY   r_   r(  r8  r   r   rK  rP  rG  ra  rf  rn  rs  r	   rw  r|  r  r  r  r  r  r  r  r  r  r  r3   r$   r"   r   r$  r$    s   D"%%E7     G G  

,G
	8
1+ ; ;
 A A
  " + + + +& +
 +
Z @ @84<@ M M> 5 50 !B !Br"   r$  __main__r   )	verbosity)'textwrapr   r<  	itertoolsr   r|   unittest.mocktest.supportr   r   r   test.support.testcaser   tkinterrF   'idlelib.idle_test.tkinter_testing_utilsr	   idlelib.delegatorr
   idlelib.editorr   idlelib.percolatorr   idlelib.pyshellrx   r   r   r   idlelib.runr   idlelib.sidebarr   r   r   TestCaser5   r$  r/   mainr$   r"   r   <module>r     s     
    G G 1  F ' ( )  C C #  :2 2a-h'' a-HyBx((/ yBx zMMA r"   