
    ;e)h                     f   d Z ddlmZ ddlZddlmZ ddlZddlZddlm	Z	m
Z
 ddlmZ ddlZddlmZ ddlmZ dd	lmZ dd
lmZ ddlZddlmZmZmZ ddlmZ ddlZddlmZm Z   G d d          Z! G d dej"                  Z# G d dej"                  Z$e%dk    r ej&        d           dS dS )zTest sidebar, coverage 85%    )dedentN)chain)requires	swap_attr)support)run_in_tk_mainloop)	Delegator)fixwordbreaks)
Percolator)fix_x11_pastePyShellPyShellFileList)fix_scaling)get_end_linenumber
get_linenoc                        e Zd Zd Zd Zd ZdS )Dummy_editwinc                     || _         | j         j        | _        t          |          | _        t                      | _        | j                            | j                   d S N)textmaster
text_framer   perr	   undoinsertfilter)selfr   s     5/usr/lib/python3.11/idlelib/idle_test/test_sidebar.py__init__zDummy_editwin.__init__   sM    	)*d##KK	di(((((    c                     d S r    )r   namevalues      r   setvarzDummy_editwin.setvar   s    r   c                 j    t          t          | j                            |                              S r   )intfloatr   index)r   r(   s     r   	getlinenozDummy_editwin.getlineno"   s&    5//00111r   N)__name__
__module____qualname__r   r$   r)   r!   r   r   r   r      sA        ) ) )  2 2 2 2 2r   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d Zd Zd Zd Z ej        d          d             Zd Z ej        d          d             Z ej        d          d             Zd Zd Zd ZdS )LineNumbersTestc                    t          d           t          j                    | _        | j                                         t          j        | j                  | _        | j                            t          j        t          j	        d           | j        
                    dd           | j                            dd           t          j        | j        ddt          j                  | _        | j                            ddt          j        	           t#          | j                  | _        t          j        | j                  | j        _        d S )
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   
setUpClasszLineNumbersTest.setUpClass(   s    577#(++rwtDDD##Aa#000&&q&33373>BRWMMM!Abg666#CH--<77r   c                     | j         j                                         | j                                         | j                                         | `| `| ` | `d S r   )rL   r   closer@   update_idletasksdestroyr   r   rO   s    r   tearDownClasszLineNumbersTest.tearDownClass9   sU    !!###Hcnck3888r   c                 L    t           j                             j                   _        ddd _        t           j        j        j         fd}t          j	        j
                            t           j        j        d|          }|                                                      |j                   d _         fd}t          j	        j
                            t           j        j        d|          }|                                                      |j                   d S )	N#abcdef#123456
background
foregroundc                 6    |dk    rj         S  | |          S )N
linenumber)highlight_cfg)themeelementorig_idleConf_GetHighlightr   s     r   mock_idleconf_GetHighlightz9LineNumbersTest.setUp.<locals>.mock_idleconf_GetHighlightF   s*    ,&&))--eW===r   GetHighlightTkFixedFontc                     j         S r   )font_override)r@   
configTypesectionr   s      r   mock_idleconf_GetFontz4LineNumbersTest.setUp.<locals>.mock_idleconf_GetFontP   s    %%r   GetFont)idlelibsidebarLineNumbersrL   r^   r_   idleConfrd   unittestmockpatchobjectstart
addCleanupstoprg   )r   rc   GetHighlight_patcherrj   GetFont_patcherrb   s   `    @r   setUpzLineNumbersTest.setUp@   s)   !/55dlCC,5,57 7%,_%=%J"	> 	> 	> 	> 	> 	>  (}299O$n6P R  R""$$$,1222*	& 	& 	& 	& 	&"--44O$i1FH H,-----r   c                 <    | j                             dd           d S N1.0end)r   deleter   s    r   tearDownzLineNumbersTest.tearDownW   s     	&&&&&r   c                 v    t          t          t          | j                            d                              S )Nsel)tuplemapstrr   
tag_rangesr   s    r   get_selectionzLineNumbersTest.get_selectionZ   s*    Sdi22599::;;;r   c                 z    | j         j                            | d          }|d         dz   }|d         dz   }||fS )Nz.end -1cr      r4   )r^   sidebar_textbbox)r   liner   xys        r   get_line_screen_positionz(LineNumbersTest.get_line_screen_position]   sF    +00D1B1B1BCCGaKGaK!tr   c                     | j         j                                        d         }|                     |d         t          j                   d S )Nstate)r^   r   configassertEqualr>   DISABLED)r   r   s     r   assert_state_disabledz%LineNumbersTest.assert_state_disabledc   s?    ,3355g>rBK00000r   c                 V    | j         j                            dt          j                  S )Nr|   )r^   r   getr>   ENDr   s    r   get_sidebar_text_contentsz)LineNumbersTest.get_sidebar_text_contentsg   s    +//rv>>>r   c                     d                     t          t          t          t	          d|dz                       dg                    }|                     |                                 |           d S )N
r4    )joinr   r   r   ranger   r   )r   n_linesexpecteds      r   assert_sidebar_n_linesz&LineNumbersTest.assert_sidebar_n_linesj   s_    99U3sE!Wq[,A,A#B#BRDIIJJ77998DDDDDr   c                 `    |                      | j                            dd          |          S r{   )r   r   r   )r   r   s     r   assert_text_equalsz"LineNumbersTest.assert_text_equalsn   s(    	eU ; ;XFFFr   c                 0    |                      d           d S Nr4   )r   r   s    r   test_init_emptyzLineNumbersTest.test_init_emptyq   s    ##A&&&&&r   c                     | j                             dd           |                     d           |                     d           d S )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_emptyz#LineNumbersTest.test_init_not_emptyt   sI    	=111 4555##A&&&&&r   c                    |                      | j        j        d           | j                                         |                      | j        j        d           | j                                         |                      | j        j        d           | j                                         |                      | j        j        d           | j                                         |                      | j        j        d           | j                                         |                      | j        j        d           d S )NFT)r   r^   is_shownshow_sidebarhide_sidebarr   s    r   test_toggle_linenumberingz)LineNumbersTest.test_toggle_linenumberingy   s   15999$$&&&14888$$&&&15999$$&&&15999$$&&&14888$$&&&1488888r   c                    | j                             dd           |                     d           |                     d           |                                  | j                             dd           |                     d           |                     d           |                                  | j                             dd           |                     d	           |                     d
           |                                  | j                             dd           |                     d           |                     d           |                                  d S )Nr   foobarfoobar
r4   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_insertzLineNumbersTest.test_insert   sR   	8,,,
+++##A&&&""$$$	7+++000##A&&&""$$$	;/// =>>>##A&&&""$$$	9--- DEEE##A&&&""$$$$$r   c                    | j                             dd           |                     d           | j                             dd           |                     d           |                     d           |                                  | j                             dd           |                     d	           |                     d
           |                                  | j                             dd           |                     d           |                     d
           |                                  | j                             dd           |                     d           |                     d           |                                  | j                             dd           |                     d           |                     d           |                                  d S )Nr   r   r   z1.1z1.3zfbar
r4   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_deletezLineNumbersTest.test_delete   s   	8,,,
+++	&&&)))##A&&&""$$$	9--- 2333##A&&&""$$$ 		(((000##A&&&""$$$	&&&(((##A&&&""$$$ 		&&&%%%##A&&&""$$$$$r   c                  	     fd}                      d                                 |            d            j                            dd                                 d                                 |            d            j                            dd                                 d                                 |            d            j                            dd                                 d                                 |            d	            j                            dd                                 d
                                 |            d	            j                            dd                                 d                                 |            d	            j                            dd                                 d                                 |            d            j                            dd                                 d                                 |            d	            j                            dd                                 d                                 |            d            j                            dd                                 d                                 |            d            j                            dd                                 d                                 |            d            j                            dd                                 d                                 |            d	            j                            dd                                 d                                 |            d	            j                            dd                                 d                                 |            d            j                            dd                                 d                                 |            d           dS )zY
        Test that linenumber text widget is always at the minimum
        width
        c                  X     j         j                                        d         d         S )Nr8   r   )r^   r   r   r   s   r   	get_widthz:LineNumbersTest.test_sidebar_text_width.<locals>.get_width   s$    ?/6688A"EEr   r4   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|   N)r   r   r   r   r~   )r   r   s   ` r   test_sidebar_text_widthz'LineNumbersTest.test_sidebar_text_width   sS   
	F 	F 	F 	F 	F 	##A&&&a(((	5)))##A&&&a(((	9---##A&&&a(((	7+++##B'''a(((	7+++##B'''a(((	/1CDDD##B'''a(((	/1CDDD##A&&&a(((	:...##B'''a(((	7+++##C(((a(((	7+++##C(((a(((	/1CDDD##C(((a(((	/1CDDD##B'''a(((	Y///##B'''a(((	I...##A&&&a((( 			***##A&&&a(((((r   ztest disabledc                    | j                                          | j                            dd           | j                                         |                     d          \  }}| j         j                            d||           | j         j                                         | j                                         | 	                    | 
                                d           d S )Nr|   zone
two
three
four
r   
<Button-1>r   r   )r   z3.0)r^   r   r   r   r@   updater   r   event_generater   r   )r   r   r   s      r   test_click_selectionz$LineNumbersTest.test_click_selection  s    $$&&&	 9:::	 ,,Q//1$33LA3KKK$++---	++--~>>>>>r   c                 v   |                      |          \  }}|                      |          \  }}| j        j                            d||           | j                                         d }t          t          t           |||d                    t          t           |||d                              D ]@\  }}	| j        j                            d||	           | j                                         A| j        j                            d||           | j                                         d S )Nr   r   c              3   d   K   |dz
  }t          |          D ]}||z
  |z  | z  ||z  |z  z   V  dS )z;linearly interpolate from a to b (inclusive) in equal stepsr4   N)r   )absteps	last_stepis        r   lerpz+LineNumbersTest.simulate_drag.<locals>.lerp  s]      	I5\\ N N!A2a71y=A:MMMMMMN Nr   r   )r   z<B1-Motion>z<ButtonRelease-1>)	r   r^   r   r   r@   r   zipr   r&   )
r   
start_lineend_linestart_xstart_yend_xend_yr   r   r   s
             r   simulate_dragzLineNumbersTest.simulate_drag  s^   88DD44X>>u$33L6= 	4 	J 	J 	J		N 	N 	N CguB77788CguB77788
 
 	 	DAq O(77a7PPPI$334G6;u 	4 	F 	F 	F	r   c                    | j                                          | j                            dd           | j                                         |                     dd           |                     |                                 d           d S )Nr|   one
two
three
four
five
r   r   r   z5.0	r^   r   r   r   r@   r   r   r   r   r   s    r   test_drag_selection_downz(LineNumbersTest.test_drag_selection_down+      $$&&&	 ?@@@	 	1a   ++--~>>>>>r   c                    | j                                          | j                            dd           | j                                         |                     dd           |                     |                                 d           d S )Nr|   r   r   r   r   r   r   s    r   test_drag_selection_upz&LineNumbersTest.test_drag_selection_up5  r   r   c                    | j                                          | j                            dd           | j                                         | j                            dd           | j                                         |                     | j                            d          d           |                     | j         j	                            d          d           | j         j	        
                    dddd	           | j                                         |                     | j                            d          d           |                     | j         j	                            d          d           d S )
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)r^   r   r   r   r@   r   yview_scrollr   r(   r   r   assertNotEqualr   s    r   test_scrollzLineNumbersTest.test_scroll?  sT   $$&&&	///	 		r6***	00&9995;;FCCVLLL
 	$33N671:< 	4 	> 	> 	> 		DIOOF33V<<<DO8>>vFFOOOOOr   c                    | j         }|j        d         }d}|                     ||           |                                 || _        |                                 |                                 |                     |j        d         |           || _        |                                 |                     |j        d         |           d S )Nfont
TkTextFont)r^   r   r   r   rg   update_fontr   r   )r   ln	orig_font	test_fonts       r   r   zLineNumbersTest.test_fontT  s    _OF+	 	Iy111 	&
 	0)<<< '
0)<<<<<r   c                 |     j         t           j                  }ddd} fd}                                 | _                                                                           ||                                             ||           | _                                          ||           d S )Nz#222222z#ffff00rZ   c                                          j        d         | d                                         j        d         | d                    d S )Nr[   r\   )r   r   )colorsr   r   s    r   assert_colors_are_equalzFLineNumbersTest.test_highlight_colors.<locals>.assert_colors_are_equalq  sM    R_\:F<<PQQQR_\:F<<PQQQQQr   )r^   dictr_   r   update_colorsr   )r   orig_colorstest_colorsr   r   s   `   @r   test_highlight_colorsz%LineNumbersTest.test_highlight_colorsk  s    _4-..%.iHH	R 	R 	R 	R 	R 	R
 	(
 	,,, 	,,, )
,,,,,r   N)r*   r+   r,   classmethodrQ   rV   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   rp   skipr   r   r   r   r   r   r   r!   r   r   r.   r.   &   s       8 8 [8  < < [<. . ..' ' '< < <  1 1 1? ? ?E E EG G G' ' '' ' '
9 9 9% % %*% % %<B) B) B)V X]?##? ? $#?  2 X]?##? ? $#? X]?##? ? $#?P P P*= = =.- - - - -r   r.   c                   L   e Zd ZU dZej        ed<   dZeed<   e	d             Z
e	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 e            d             Z e            d             Z e            d             Z e            d             Z e            d             Z e            d             Z e            d             Zd Zd Z  e            d             Z! e            d             Z" e            d             Z#dS )ShellSidebarTestNr@   shellc                 V   t          d           t          j                    x| _        }|                                 t          |           t          |           t          |           t          |          x| _	        }|
                                 |                                  d S )Nr0   )r   r>   r?   r@   rA   r   r
   r   r   flistrT   
init_shell)rP   r@   r  s      r   rQ   zShellSidebarTest.setUpClass  s    %''!4Ddd+D111	Er   c                     | j         ,d| j         _        | j                                          d | _         d | _        | j                                         | j                                         d | _        d S )NF)r  	executingrS   r  r@   rT   rU   rO   s    r   rV   zShellSidebarTest.tearDownClass  sg    9 "'CIIOOCI	!!###r   c                     | j                                         | _        d| j        _        | j                                         t          | j        j        d          dz
  | _        d S )Nr   end-1cr4   )	r  
open_shellr  pollintervalr@   r   r   r   n_preface_linesrO   s    r   r  zShellSidebarTest.init_shell  sT    I((**	!#	(BBQFr   c                     | j         j        j                            | j        dz    dd           | j         j                                         | j                                         d S )Nr4   .0r  )	r  r   bottomr~   r  shell_sidebarupdate_sidebarr@   r   rO   s    r   reset_shellzShellSidebarTest.reset_shell  s_    	##s':1'<$@$@$@(KKK	..000r   c                     d | _         t          j        | j        j        k    r't          j        | _         | j        j        t          _        |                                  d S r   )_saved_stdoutsysstdoutr  r  r   s    r   ry   zShellSidebarTest.setUp  sL    
 ":***!$D*CJr   c                 :    | j         | j         t          _        d S d S r   )r  r  r  r   s    r   r   zShellSidebarTest.tearDown  s!    )+CJJJ *)r   c                     | j         j        j        t                              t
          j                            }fd|D             |                                 }fd|D             S )Nc                 p    i | ]2}                     |          d                              |d          3S )r4   r   )r   itemcget.0r   canvass     r   
<dictcomp>z6ShellSidebarTest.get_sidebar_lines.<locals>.<dictcomp>  sJ     
 
 
 KKa &//$"?"?
 
 
r   c                 <    g | ]}                     |d           S r   )r   )r  r   texts_by_y_coordss     r   
<listcomp>z6ShellSidebarTest.get_sidebar_lines.<locals>.<listcomp>  s*    FFF1!%%a..FFFr   )r  r  r  listfindr>   ALLget_shell_line_y_coords)r   textsline_y_coordsr  r  s      @@r   get_sidebar_linesz"ShellSidebarTest.get_sidebar_lines  s    )0V[[(())
 
 
 

 
 
 4466FFFFFFFFr   c                     | j         j                                         |                     |                                 t          |           d          |           d S r   )r  r  r  r   r'  len)r   expected_liness     r   assert_sidebar_lines_end_withz.ShellSidebarTest.assert_sidebar_lines_end_with  sc    
 //111""$$c.&9&9%9%:%:;	
 	
 	
 	
 	
r   c                 ~   | j         j        }g }|                    d          }|                    dd          d         dk    r|                    | d          }|                    |          x}J|                    |d                    |                    | d          }|                    |          x}J|S )Nr   .r4   0z +1line linestartz +1line)r  r   r(   split	dlineinfoappend)r   r   y_coordsr(   lineinfos        r   r$  z(ShellSidebarTest.get_shell_line_y_coords  s    z

6"";;sAq!S((JJ%:::;;E>>%000x=OOHQK(((JJ%00011E  >>%000x= r   c                     | j         j        j        t                              t
          j                            }|                    fd           fd|D             S )Nc                 :                         |           d         S r   r   )r   r  s    r   <lambda>z<ShellSidebarTest.get_sidebar_line_y_coords.<locals>.<lambda>  s    FKK$5$5a$8 r   )keyc                 F    g | ]}                     |          d          S )r4   r6  r  s     r   r   z>ShellSidebarTest.get_sidebar_line_y_coords.<locals>.<listcomp>  s*    777D!!!$777r   )r  r  r  r!  r"  r>   r#  sort)r   r%  r  s     @r   get_sidebar_line_y_coordsz*ShellSidebarTest.get_sidebar_line_y_coords  sc    )0V[[(())

8888
99977777777r   c                     |                      t          |                                           t          |                                                      d S r   )assertLessEqualsetr;  r$  r   s    r   assert_sidebar_lines_syncedz,ShellSidebarTest.assert_sidebar_lines_synced  sR    ..0011,,..//	
 	
 	
 	
 	
r   c                     | j         }|j        }t          |                    d                    D ]7\  }}|dk    r|                    d           |                    d|d           8d S )Nr   r   <<newline-and-indent>>r   stdin)r  r   	enumerater/  r   r   )r   inputr  r   
line_indexr   s         r   do_inputzShellSidebarTest.do_input  sy    
z )%++d*;*; < < 	1 	1JA~~##$<===KK$0000	1 	1r   c                     |                                  }|                     |d gt          |          dz
  z  dgz              |                                  d S )Nr4   >>>)r'  r   r)  r?  )r   sidebar_liness     r   test_initial_statez#ShellSidebarTest.test_initial_state  sf    ..00Fc-((1,-7	
 	
 	
 	((*****r   c              #   j   K   |                      d           d V  |                     ddg           d S )Nr   rH  rF  r+  r   s    r   test_single_empty_inputz(ShellSidebarTest.test_single_empty_input  s?      d**E5>:::::r   c              #   j   K   |                      d           d V  |                     g d           d S )Nz1
rH  NrH  rL  r   s    r   test_single_line_statementz+ShellSidebarTest.test_single_line_statement  sB      e**+?+?+?@@@@@r   c              #      K   |                      t          d                     d V  |                     g d           d S )N7            if True:
            print(1)

            rH  ...rT  rT  NrH  )rF  r   r+  r   s    r   test_multi_line_statementz*ShellSidebarTest.test_multi_line_statement  sk       	f    	 	 	
 	** ,
 ,
 ,
 	 	 	 	 	r   c              #      K   |                      d           d V  |                     g d           |                                  d S )Nz11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
rO  )rF  r+  r?  r   s    r   test_single_long_line_wrapsz,ShellSidebarTest.test_single_long_line_wraps  sU      &'''**+?+?+?@@@((*****r   c              #     K   | j         }|j        }|                     d           d V  |                     g d           |                    dd           |                    d           d V  |                     g d           |                                  |j        j        d         	                                 d V  |                     g d           |                                  d S )Nzprint("a\nb\nc")
)rH  NNNrH  r   zinsert -1line linestartz<<squeeze-current-text>>rO  r   )
r  r   rF  r+  mark_setr   r?  squeezerexpandingbuttonsr3   )r   r  r   s      r   test_squeeze_multi_line_outputz/ShellSidebarTest.test_squeeze_multi_line_output$  s     
z,---**+K+K+KLLLh :;;;6777**+?+?+?@@@((***'*11333**+K+K+KLLL((*****r   c              #     K   | j         j        }|                                 }|                     t	          d                     d V  |                     g d           |                                 }|                     ||           |                    d           d V  |                     g d           |                    d           |                    d           d V  |                     g d           |                    d|	                    d                     |                    d	           d V  |                    d
           d V  |                     dg           |                    d           d V  |                     ddg           |                    d	           |                    d	           d V  |                     g d           d S )Nz6            if True:
            print(1)
            )rH  rT  rT  z<<interrupt-execution>>)rH  rT  rT  NrH  z<<history-previous>>)rH  rT  NrH  r   z
insert -2lrA  z<<undo>>rH  z<<redo>>rT  rS  )
r  r   r'  rF  r   r+  r   r   rY  r(   )r   r   initial_sidebar_lineswith_block_sidebar_liness       r   test_interrupt_recall_undo_redoz0ShellSidebarTest.test_interrupt_recall_undo_redo8  s)     z $ 6 6 8 8f    	 	 	 	**+@+@+@AAA#'#9#9#;#; 46KLLL 	5666**+M+M+MNNN 	23335666**+F+F+FGGG 	h

< 8 89994555J'''**E7333J'''**E5>:::45554555**555	
 	
 	
 	
 	
r   c              #   V  K   t          j        d          5  t          | j        dd           5  |                     dddz  z   dz              d V  |                     |                                 dg           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nig+  rZ  zx = 1i'  r   rH  )r   adjust_int_max_str_digitsr   r  rF  r   r'  r   s    r   test_very_long_wrapped_linez,ShellSidebarTest.test_very_long_wrapped_linef  sV     .v66 	@ 	@$*j$77	@ 	@MM&3v:-4555EEET3355w???		@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s5   BAB:BB
	
BB
	BB"%B"c                      j         j        dfd}t          j        j                            t          j        j        d|          	                                 fd} 
                    |            fd}                      |                                                                              |                       d S )Nr   c                     S r   r!   )r@   rh   ri   r   s      r   rj   z9ShellSidebarTest.test_font.<locals>.mock_idleconf_GetFonts  s	    r   rk   c                  X                                                                        d S r   )rv   r   )rx   rm   s   r   cleanupz+ShellSidebarTest.test_font.<locals>.cleanupx  s-      """!!!!!r   c                     j         t                              t          j                            } fd| D             }                    t          |          d           t          t          |                    S )Nc                 <    h | ]}                     |d           S )r   r  r  s     r   	<setcomp>zGShellSidebarTest.test_font.<locals>.get_sidebar_font.<locals>.<setcomp>  s'    EEEtV__T622EEEr   r4   )	r  r!  r"  r>   r#  r   r)  nextiter)r%  fontsr  r   rm   s     @r   get_sidebar_fontz4ShellSidebarTest.test_font.<locals>.get_sidebar_font}  so    ^FRV,,--EEEEEuEEEESZZ+++U$$$r   )r  r  rp   rq   rr   rs   rl   rm   ro   rt   ru   r   r   r   )r   rj   rh  rp  rx   rm   r   s   `   @@@r   r   zShellSidebarTest.test_fontn  s   ** 		 	 	 	 	"--44O$i1FH H	" 	" 	" 	" 	" 	" 	   	% 	% 	% 	% 	% 	% 	,,..	:::))++Y77777r   c                      j         j        dddt          j        j        j        fd}t          j        j        	                    t          j        j        d|          
                                 fd}                     |            fd}                      |                                                                              |                       d S )NrX   rY   rZ   c                 (    |dv rS  | |          S )N)r^   consoler!   )r`   ra   rb   r   s     r   rc   zJShellSidebarTest.test_highlight_colors.<locals>.mock_idleconf_GetHighlight  s(    333""--eW===r   rd   c                  X                                                                        d S r   )rv   r   )rw   rm   s   r   rh  z7ShellSidebarTest.test_highlight_colors.<locals>.cleanup  s-     %%'''!!#####r   c                  :   j         t                              t          j                            } fd| D             }                    t          |          d           t          t          |                    }	                    d          }||dS )Nc                 <    h | ]}                     |d           S )r2   rk  r  s     r   rl  zUShellSidebarTest.test_highlight_colors.<locals>.get_sidebar_colors.<locals>.<setcomp>  s'    CCCT6??400CCCr   r4   r[   rZ   )
r  r!  r"  r>   r#  r   r)  rm  rn  cget)r%  fgsfgbgr  r   rm   s       @r   get_sidebar_colorszBShellSidebarTest.test_highlight_colors.<locals>.get_sidebar_colors  s    ^FRV,,--ECCCCUCCCCSXXq)))d3iiB\**B"$B777r   )r  r  rl   rm   ro   rd   rp   rq   rr   rs   rt   ru   r   r   r   )r   rc   rh  r{  rw   rb   rm   r   s   `   @@@@r   r   z&ShellSidebarTest.test_highlight_colors  s2   **%.iHH%,_%=%J"	> 	> 	> 	> 	> 	>  (}299O$n& (  ( 	""$$$	$ 	$ 	$ 	$ 	$ 	$ 	   	8 	8 	8 	8 	8 	8 	..00+>>>++--{;;;;;r   c              #     K   | j         j        }| j         j        }|                     d           d V  |                     t          |d          d           t          |          }|                     |                    |	                    | d                               t          j        dk    rdnd}|j                            dd	d	|
           d V  t          j        dk    r>|                     |                    |	                    | d                               |j                            dd	d	           d V  |                     |                    |	                    | d                               d S )Nzox = """



































































































"""
r   r4   r  darwinr   x   r   r   r   z
<Button-5>r   )r  r  r   rF  assertGreaterr   r   assertIsNotNoner0  r(   r  platformr  r   assertIsNone)r   rm   r   last_linenor   s        r   test_mousewheelz ShellSidebarTest.test_mousewheel  s}     **z 	4555:dF33Q777(..T^^DJJ+7I7I7I,J,JKKLLL lh..C%%nQe%LLL<8##dnnTZZ;8J8J8J-K-KLLMMM 	%%la1%===T^^DJJ+7I7I7I,J,JKKLLLLLr   c              #   2  K   | j         j        }| j         j        }t          |          }|                     t          d                     d V  |                    d| dd           |                    dd          }|                     |	                    d                     | 
                    d|           |                    d	           |                     |j                   |                                }|                     ||           d S )
NrR  r   r  r  	sel.firstsel.lastz	if True:
z
1
z<<copy>>)r  r  r   r   rF  r   tag_addr   
assertTrue
startswithassertInr   ru   clipboard_clearclipboard_getr   )r   rm   r   
first_lineselected_textcopied_texts         r   	test_copyzShellSidebarTest.test_copy  s     **z'--
f    	 	 	
 	Uz---x888j9900>>???g}---J''',---((**m44444r   c              #   $  K   | j         j        }| j         j        }t          |          }|                     t          d                     d V  |                    d| dd           |                    dd          }|                     |	                    d                     |                    dd          }|
                    d	          }|                                 d
gdgt          |          dz
  z  z   d gz   }d	                    d t          ||d          D                       d	z   }|                    d           |                     |j                   |                                }	|                     |	|           d S )Nz;            if True:
                print(1)

            r   z.3r  r  r  zTrue:
zsel.first linestartr   rH  rT  r   c              3   4   K   | ]\  }}||n|dz   |z   V  d S )N r!   )r  promptr   s      r   	<genexpr>z:ShellSidebarTest.test_copy_with_prompts.<locals>.<genexpr>  sK       /
 /
 NDDt(;/
 /
 /
 /
 /
 /
r   T)strictz<<copy-with-prompts>>)r  r  r   r   rF  r   r  r   r  r  r/  popr)  r   r   r   ru   r  r  r   )
r   rm   r   r  r  selected_lines_textselected_linesexpected_promptsselected_text_with_promptsr  s
             r   test_copy_with_promptsz'ShellSidebarTest.test_copy_with_prompts  s     **z'--
f    	 	 	
 	Uz---x888j9900;;<<<"hh'<jII,22488 Gug^!4!4q!899TFB 	%)YY /
 /
 #$4$2+/!1 !1 !1/
 /
 /
 &
 &

 &" 	3444,---((**&@AAAAAr   )$r*   r+   r,   r@   r>   r?   __annotations__r  r   r   rQ   rV   r  r  ry   r   r'  r+  r$  r;  r?  rF  rJ  r   rM  rP  rU  rW  r\  r`  rd  r   r   r  r  r  r!   r   r   r   r     s        D"%E7  [    [ G G [G   [

 
 
, , ,G G G
 
 
	 	 	8 8 8
 
 
1 1 1+ + + ; ; ;
 A A A
   " + + + + + +& +
 +
 +
Z @ @ @8 8 84< < <@ M M M2 5 5 50 !B !B !B !B !Br   r   __main__r   )	verbosity)'__doc__textwrapr   r  	itertoolsr   rp   unittest.mocktest.supportr   r   testr   tkinterr>   'idlelib.idle_test.tkinter_testing_utilsr   idlelib.delegatorr	   idlelib.editorr
   idlelib.percolatorr   idlelib.pyshellrl   r   r   r   idlelib.runr   idlelib.sidebarr   r   r   TestCaser.   r   r*   mainr!   r   r   <module>r     s             



            , , , , , , , ,           F F F F F F ' ' ' ' ' ' ( ( ( ( ( ( ) ) ) ) ) )     C C C C C C C C C C # # # # # #     : : : : : : : :2 2 2 2 2 2 2 2a- a- a- a- a-h' a- a- a-HsB sB sB sB sBx( sB sB sBl zHMA r   