
    z%i)h                     d   	 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jB                        Z" G d dejB                        Z#e$dk(  r ejJ                  d       yy)    )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y)Dummy_editwinc                     || _         | j                   j                  | _        t        |      | _        t               | _        | j                  j                  | j                         y N)textmaster
text_framer   perr	   undoinsertfilter)selfr   s     R/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/idle_test/test_sidebar.py__init__zDummy_editwin.__init__   sE    	))**d#K	dii(    c                      y r    )r   namevalues      r   setvarzDummy_editwin.setvar   s    r   c                 \    t        t        | j                  j                  |                  S r   )intfloatr   index)r   r(   s     r   	getlinenozDummy_editwin.getlineno"   s    5/011r   N)__name__
__module____qualname__r   r$   r)   r!   r   r   r   r      s    )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y)LineNumbersTestc                    t        d       t        j                         | _        | j                  j	                          t        j
                  | j                        | _        | j                  j                  t        j                  t        j                  d       | j                  j                  dd       | j                  j                  dd       t        j                  | j                  ddt        j                        | _        | j                  j                  ddt        j                   	       t#        | j                        | _        t        j&                  | j                        | j$                  _        y )
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    557#((+rwwtD##Aa#0&&q&3773>>BRWWM!Abgg6#CHH-<<7r   c                     | j                   j                  j                          | j                  j	                          | j                  j                          | `| `| ` | `y r   )rL   r   closer@   update_idletasksdestroyr   r   rO   s    r   tearDownClasszLineNumbersTest.tearDownClass9   sG    !!#Hcnck38r   c                     t         j                  j                   j                         _        ddd _        t         j                  j                  j                   fd}t        j                  j                  j                  t         j                  j                  d|      }|j                           j                  |j                         d _         fd}t        j                  j                  j                  t         j                  j                  d|      }|j                           j                  |j                         y )	N#abcdef#123456
background
foregroundc                 8    |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5dllC,5,57%,__%=%=%J%J"	>  (}}2299OO$$n6P R""$,112*	&"----44OO$$i1FH,,-r   c                 <    | j                   j                  dd       y N1.0end)r   deleter   s    r   tearDownzLineNumbersTest.tearDownW   s    		&r   c                 f    t        t        t        | j                  j	                  d                  S )Nsel)tuplemapstrr   
tag_rangesr   s    r   get_selectionzLineNumbersTest.get_selectionZ   s#    Sdii2259:;;r   c                 z    | j                   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0D61BCGaKGaK!tr   c                     | j                   j                  j                         d   }| j                  |d   t        j
                         y )Nstate)r^   r   configassertEqualr>   DISABLED)r   r   s     r   assert_state_disabledz%LineNumbersTest.assert_state_disabledc   s7    ,,335g>rBKK0r   c                 j    | j                   j                  j                  dt        j                        S )Nr|   )r^   r   getr>   ENDr   s    r   get_sidebar_text_contentsz)LineNumbersTest.get_sidebar_text_contentsg   s#    ++//rvv>>r   c                     dj                  t        t        t        t	        d|dz               dg            }| j                  | j                         |       y )N
r4    )joinr   r   r   ranger   r   )r   n_linesexpecteds      r   assert_sidebar_n_linesz&LineNumbersTest.assert_sidebar_n_linesj   sD    99U3sE!Wq[,A#BRDIJ7798Dr   c                 Z    | j                  | j                  j                  dd      |      S r{   )r   r   r   )r   r   s     r   assert_text_equalsz"LineNumbersTest.assert_text_equalsn   s$    		eU ;XFFr   c                 &    | j                  d       y Nr4   )r   r   s    r   test_init_emptyzLineNumbersTest.test_init_emptyq   s    ##A&r   c                     | j                   j                  dd       | j                  d       | j                  d       y )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   s3    		=1 45##A&r   c                    | j                  | j                  j                  d       | j                  j                          | j                  | j                  j                  d       | j                  j	                          | j                  | j                  j                  d       | j                  j	                          | j                  | j                  j                  d       | j                  j                          | j                  | j                  j                  d       | j                  j                          | j                  | j                  j                  d       y )NFT)r   r^   is_shownshow_sidebarhide_sidebarr   s    r   test_toggle_linenumberingz)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   | j                   j                  dd       | j                  d       | j                  d       | j	                          | j                   j                  dd       | j                  d       | j                  d       | j	                          | j                   j                  dd       | j                  d	       | j                  d
       | j	                          | j                   j                  dd       | j                  d       | j                  d       | j	                          y )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   s    		8,
+##A&""$		7+0##A&""$		;/ =>##A&""$		9- DE##A&""$r   c                 j   | j                   j                  dd       | j                  d       | j                   j                  dd       | j                  d       | j	                  d       | j                          | j                   j                  dd       | j                  d	       | j	                  d
       | j                          | j                   j                  dd       | j                  d       | j	                  d
       | j                          | j                   j                  dd       | j                  d       | j	                  d       | j                          | j                   j                  dd       | j                  d       | j	                  d       | j                          y )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   sU   		8,
+		&)##A&""$		9- 23##A&""$ 			(0##A&""$		&(##A&""$ 			&%##A&""$r   c                     	  fd} j                  d        j                   |       d        j                  j                  dd        j                  d        j                   |       d        j                  j                  dd        j                  d        j                   |       d        j                  j                  dd        j                  d        j                   |       d	        j                  j                  dd        j                  d
        j                   |       d	        j                  j	                  dd        j                  d        j                   |       d	        j                  j	                  dd        j                  d        j                   |       d        j                  j                  dd        j                  d        j                   |       d	        j                  j                  dd        j                  d        j                   |       d        j                  j                  dd        j                  d        j                   |       d        j                  j	                  dd        j                  d        j                   |       d        j                  j	                  dd        j                  d        j                   |       d	        j                  j	                  dd        j                  d        j                   |       d	        j                  j	                  dd        j                  d        j                   |       d        j                  j	                  dd        j                  d        j                   |       d       y )Nc                  X     j                   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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|   )r   r   r   r   r~   )r   r   s   ` r   test_sidebar_text_widthz'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                    | j                   j                          | j                  j                  dd       | j                  j                          | j                  d      \  }}| j                   j                  j                  d||       | j                   j                  j                          | j                  j                          | j                  | j                         d       y )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$$++-		++-~>r   c                 j   | j                  |      \  }}| j                  |      \  }}| j                  j                  j                  d||       | j                  j                          d }t        t        t         |||d            t        t         |||d                  D ]G  \  }}	| j                  j                  j                  d||	       | j                  j                          I | j                  j                  j                  d||       | j                  j                          y )Nr   r   c              3   d   K   	 |dz
  }t        |      D ]  }||z
  |z  | z  ||z  |z  z     y wr   )r   )absteps	last_stepis        r   lerpz+LineNumbersTest.simulate_drag.<locals>.lerp  sI     M	I5\ N!A2a71y=A:MMMNs   .0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44X>u$$33L6= 	4 	J			N CguB78CguB78
 	DAq OO((77a7PII	 	$$334G6;u 	4 	F		r   c                    | j                   j                          | j                  j                  dd       | j                  j                          | j                  dd       | j                  | j                         d       y )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+  b    $$&		 ?@		 	1a ++-~>r   c                    | j                   j                          | j                  j                  dd       | j                  j                          | j                  dd       | j                  | j                         d       y )Nr|   r   r   r   r   r   r   s    r   test_drag_selection_upz&LineNumbersTest.test_drag_selection_up5  r   r   c                    | j                   j                          | j                  j                  dd       | j                  j                          | j                  j                  dd       | j                  j                          | j                  | j                  j                  d      d       | j                  | j                   j                  j                  d      d       | j                   j                  j                  dddd	       | j                  j                          | j                  | j                  j                  d      d       | j                  | j                   j                  j                  d      d       y )
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?  s   $$&		/		 			r6*		0&955;;FCVL
 	$$33N671:< 	4 	> 			DIIOOF3V<DOO88>>vFOr   c                 z   | j                   }|j                  d   }d}| j                  ||       |j                          || _        |j                          |j                          | j                  |j                  d   |       || _        |j                          | j                  |j                  d   |       y )Nfont
TkTextFont)r^   r   r   r   rg   update_fontr   r   )r   ln	orig_font	test_fonts       r   r   zLineNumbersTest.test_fontT  s    __OOF+	 	Iy1 	&
 	0)< '
0)<r   c                 L     j                   t         j                        }ddd} fd}j                          | _        j	                          j                           ||       j	                           ||       | _        j	                           ||       y )Nz#222222z#ffff00rZ   c                     j                  j                  d   | d          j                  j                  d   | d          y )Nr[   r\   )r   r   )colorsr   r   s    r   assert_colors_are_equalzFLineNumbersTest.test_highlight_colors.<locals>.assert_colors_are_equalq  s?    R__\:F<<PQR__\:F<<P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	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  < <..'<1?EG''
9%*%<B)V X]]?#? $?2 X]]?#? $? X]]?#? $?P*=.-r   r.   c                      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#y)ShellSidebarTestNr@   shellc                    t        d       t        j                         x| _        }|j	                          t        |       t        |       t        |       t        |      x| _	        }|j                          | j                          y )Nr0   )r   r>   r?   r@   rA   r   r
   r   r   flistrT   
init_shell)rP   r@   r  s      r   rQ   zShellSidebarTest.setUpClass  sc    %%'!4Ddd+D11	Er   c                    | j                   2d| j                   _        | j                   j                          d | _         d | _        | j                  j                          | j                  j                          d | _        y )NF)r  	executingrS   r  r@   rT   rU   rO   s    r   rV   zShellSidebarTest.tearDownClass  s[    99 "'CIIIIOOCI	!!#r   c                     | j                   j                         | _        d| j                  _        | j                  j                          t        | j                  j                  d      dz
  | _        y )Nr   end-1cr4   )	r  
open_shellr  pollintervalr@   r   r   r   n_preface_linesrO   s    r   r  zShellSidebarTest.init_shell  sL    II((*	!#		(BQFr   c                     | j                   j                  j                  j                  | j                  dz    dd       | j                   j
                  j                          | j                  j                          y )Nr4   .0r  )	r  r   bottomr~   r  shell_sidebarupdate_sidebarr@   r   rO   s    r   reset_shellzShellSidebarTest.reset_shell  sW    		##s':':1'<&=R$@(K		..0r   c                     d | _         t        j                  | j                  j                  k7  r4t        j                  | _         | j                  j                  t        _        | j	                          y r   )_saved_stdoutsysstdoutr  r  r   s    r   ry   zShellSidebarTest.setUp  sK    
 "::***!$D**CJr   c                 H    | j                   | j                   t        _        y y r   )r  r  r  r   s    r   r   zShellSidebarTest.tearDown  s     )++CJ *r   c                 j   | j                   j                  j                  }t        |j	                  t
        j                              }|D ci c]'  }|j                  |      d   |j                  |d      ) }}| j                         }|D cg c]  }|j                  |d        c}S c c}w c c}w )Nr4   r   )r  r  canvaslistfindr>   ALLr   itemcgetget_shell_line_y_coordsr   )r   r  textsr   texts_by_y_coordsline_y_coordsr   s          r   get_sidebar_linesz"ShellSidebarTest.get_sidebar_lines  s    ))00V[[() 
 KKa &//$"??
 
 4468EF1!%%a.FF

 Gs   ,B+B0c                     | j                   j                  j                          | j                  | j	                         t        |       d  |       y r   )r  r  r  r   r!  len)r   expected_liness     r   assert_sidebar_lines_end_withz.ShellSidebarTest.assert_sidebar_lines_end_with  sE    

  //1""$c.&9%9%:;	
r   c                 N   | j                   j                  }g }|j                  d      }|j                  dd      d   dk7  r|j                  | d      }|j	                  |      x}<|j                  |d          |j                  | d      }|j	                  |      x}<|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    zz

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

8
9167D!!$777s   #Bc                     | j                  t        | j                               t        | j                                      y r   )assertLessEqualsetr3  r  r   s    r   assert_sidebar_lines_syncedz,ShellSidebarTest.assert_sidebar_lines_synced  s2    ..01,,./	
r   c                     | j                   }|j                  }t        |j                  d            D ].  \  }}|dkD  r|j	                  d       |j                  d|d       0 y )Nr   r   <<newline-and-indent>>r   stdin)r  r   	enumerater)  r   r   )r   inputr  r   
line_indexr   s         r   do_inputzShellSidebarTest.do_input  s\    

zz )%++d*; < 	1JA~##$<=KK$0	1r   c                     | j                         }| j                  |d gt        |      dz
  z  dgz          | j                          y )Nr4   >>>)r!  r   r#  r7  )r   sidebar_liness     r   test_initial_statez#ShellSidebarTest.test_initial_state  sJ    ..0Fc-(1,-7	
 	((*r   c              #   \   K   | j                  d       d  | j                  ddg       y w)Nr   r@  r>  r%  r   s    r   test_single_empty_inputz(ShellSidebarTest.test_single_empty_input  s'     d**E5>:   *,c              #   \   K   | j                  d       d  | j                  g d       y w)Nz1
r@  Nr@  rD  r   s    r   test_single_line_statementz+ShellSidebarTest.test_single_line_statement  s$     e**+?@rF  c              #   n   K   | j                  t        d             d  | j                  g d       y w)N7            if True:
            print(1)

            r@  ...rM  rM  Nr@  )r>  r   r%  r   s    r   test_multi_line_statementz*ShellSidebarTest.test_multi_line_statement  s8      	f   	
 	** ,
 	s   35c              #   |   K   | j                  d       d  | j                  g d       | j                          y w)Nz11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
rH  )r>  r%  r7  r   s    r   test_single_long_line_wrapsz,ShellSidebarTest.test_single_long_line_wraps  s1     &'**+?@((*s   :<c              #     K   | j                   }|j                  }| j                  d       d  | j                  g d       |j	                  dd       |j                  d       d  | j                  g d       | j                          |j                  j                  d   j                          d  | j                  g d       | j                          y w)Nzprint("a\nb\nc")
)r@  NNNr@  r   zinsert -1line linestartz<<squeeze-current-text>>rH  r   )
r  r   r>  r%  mark_setr   r7  squeezerexpandingbuttonsr3   )r   r  r   s      r   test_squeeze_multi_line_outputz/ShellSidebarTest.test_squeeze_multi_line_output$  s     

zz,-**+KLh"9;67**+?@((*''*113**+KL((*s   CCc              #   <  K   | j                   j                  }| j                         }| j                  t	        d             d  | j                  g d       | j                         }| j                  ||       |j                  d       d  | j                  g d       |j                  d       |j                  d       d  | j                  g d       |j                  d|j                  d             |j                  d	       d  |j                  d
       d  | j                  dg       |j                  d       d  | j                  ddg       |j                  d	       |j                  d	       d  | j                  g d       y w)Nz6            if True:
            print(1)
            )r@  rM  rM  z<<interrupt-execution>>)r@  rM  rM  Nr@  z<<history-previous>>)r@  rM  Nr@  r   z
insert -2lr9  z<<undo>>r@  z<<redo>>rM  rL  )
r  r   r!  r>  r   r%  r   r   rR  r(   )r   r   initial_sidebar_lineswith_block_sidebar_liness       r   test_interrupt_recall_undo_redoz0ShellSidebarTest.test_interrupt_recall_undo_redo8  se    zz $ 6 6 8f   	 	**+@A#'#9#9#; 46K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  K   t        j                  d      5  t        | j                  dd       5  | j	                  dddz  z   dz          d  | j                  | j                         dg       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY ww)Nig+  rS  zx = 1i'  r   r@  )r   adjust_int_max_str_digitsr   r  r>  r   r!  r   s    r   test_very_long_wrapped_linez,ShellSidebarTest.test_very_long_wrapped_linef  s     ..v6 	@$**j$7	@MM&3v:-45T335w?		@ 	@ 	@ 	@ 	@ 	@s4   BBA B0B8	BB
	BBBc                      j                   j                  dfd}t        j                  j                  j                  t        j                  j                  d|      j                          fd} j                  |        fd} j                   |              j                           j                   |              y )Nr   c                     S r   r!   )r@   rh   ri   r   s      r   rj   z9ShellSidebarTest.test_font.<locals>.mock_idleconf_GetFonts  s	    r   rk   c                  F     j                          j                          y r   )rv   r   )rx   rm   s   r   cleanupz+ShellSidebarTest.test_font.<locals>.cleanupx  s      "!r   c                     j                   } t        | j                  t        j                              }|D ch c]  }| j                  |d       }}j                  t        |      d       t        t        |            S c c}w )Nr   r4   )
r  r  r  r>   r  r  r   r#  nextiter)r  r  r   fontsr   rm   s       r   get_sidebar_fontz4ShellSidebarTest.test_font.<locals>.get_sidebar_font}  sj    ^^FRVV,-E?DEtV__T62EEESZ+U$$ Fs   B)r  r  rp   rq   rr   rs   rl   rm   ro   rt   ru   r   r   r   )r   rj   ra  rf  rx   rm   r   s   `   @@@r   r   zShellSidebarTest.test_fontn  s    **** 		"----44OO$$i1FH	" 	 	% 	,.	:)+Y7r   c                      j                   j                  dddt        j                  j                  j
                  fd}t        j                  j                  j                  t        j                  j                  d|      j                          fd} j                  |        fd} j                   |              j                           j                   |              y )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""-eW==r   rd   c                  F     j                          j                          y r   )rv   r   )rw   rm   s   r   ra  z7ShellSidebarTest.test_highlight_colors.<locals>.cleanup  s     %%'!!#r   c                  >   j                   } t        | j                  t        j                              }|D ch c]  }| j                  |d       }}j                  t        |      d       t        t        |            }| j                  d      }||dS c c}w )Nr2   r4   r[   rZ   )r  r  r  r>   r  r  r   r#  rc  rd  cget)r  r  r   fgsfgbgr   rm   s         r   get_sidebar_colorszBShellSidebarTest.test_highlight_colors.<locals>.get_sidebar_colors  s    ^^FRVV,-E=BCT6??40CCCSXq)d3iB\*B"$B77	 Ds   B)r  r  rl   rm   ro   rd   rp   rq   rr   rs   rt   ru   r   r   r   )r   rc   ra  rp  rw   rb   rm   r   s   `   @@@@r   r   z&ShellSidebarTest.test_highlight_colors  s    ****%.iH%,__%=%=%J%J"	>  (}}2299OO$$n& ( 	""$	$ 	 	8 	.0+>+-{;r   c              #     K   | j                   j                  }| j                   j                  }| j                  d       d  | j	                  t        |d      d       t        |      }| j                  |j                  |j                  | d                   t        j                  dk(  rdnd}|j                  j                  dd	d	|
       d  t        j                  dk7  r2| j                  |j                  |j                  | d                   |j                  j                  dd	d	       d  | j                  |j                  |j                  | d                   y w)Nzox = """



































































































"""
r   r4   r  darwinr   x   r   r   r   z
<Button-5>r   )r  r  r   r>  assertGreaterr   r   assertIsNotNoner*  r(   r  platformr  r   assertIsNone)r   rm   r   last_linenor   s        r   test_mousewheelz ShellSidebarTest.test_mousewheel  s&    ****zz 	45:dF3Q7(.T^^DJJ+b7I,JKL llh.C%%nQe%L<<8#dnnTZZ;-r8J-KLM 	%%la1%=T^^DJJ+b7I,JKLs   E/E1c              #     K   | j                   j                  }| j                   j                  }t        |      }| j	                  t        d             d  |j                  d| dd       |j                  dd      }| j                  |j                  d             | j                  d|       |j                  d	       | j                  |j                         |j                         }| j                  ||       y w)
NrK  r   r  r  	sel.firstsel.lastz	if True:
z
1
z<<copy>>)r  r  r   r   r>  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     ****zz'-
f   	
 	Uzl"-x8j900>?g}-J',,-((*m4s   C?Dc              #     K   | j                   j                  }| j                   j                  }t        |      }| j	                  t        d             d  |j                  d| dd       |j                  dd      }| j                  |j                  d             |j                  dd      }|j                  d	      }|j                          d
gdgt        |      dz
  z  z   d gz   }d	j                  d t        ||d      D              d	z   }|j                  d       | j!                  |j"                         |j%                         }	| j'                  |	|       y w)Nz;            if True:
                print(1)

            r   z.3r  r{  r|  zTrue:
zsel.first linestartr   r@  rM  r   c              3   :   K   | ]  \  }}||n|dz   |z     y w)N r!   ).0promptr   s      r   	<genexpr>z:ShellSidebarTest.test_copy_with_prompts.<locals>.<genexpr>  s.      /
 NDt(;;/
s   T)strictz<<copy-with-prompts>>)r  r  r   r   r>  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  sT    ****zz'-
f   	
 	Uzl"-x8j900;<"hh'<jI,2248 Gug^!4q!899TFB 	%)YY /
 #$4$2+/!1/
 &

 &" 	34,,-((*&@As   E!E#)$r*   r+   r,   r@   r>   r?   __annotations__r  r   r   rQ   rV   r  r  ry   r   r!  r%  r  r3  r7  r>  rB  r   rE  rI  rN  rP  rU  rY  r]  r   r   ry  r  r  r!   r   r   r   r     s   D"%%E7     G G  

,G
	8
1+ ; ;
 A A
  " + + + +& +
 +
Z @ @84<@ M M2 5 50 !B !Br   r   __main__r   )	verbosity)&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 ' ( )  C C #  :2 2a-h'' a-HsBx(( sBl zHMMA r   