
    6bhi                     l   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
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jF                        Z$ G d dejF                  e      Z%e&dk(  r ejN                  d       yy)zTest sidebar, coverage 85%    )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                       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     H/opt/python-3.12.12/usr/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   )rM   r   closerA   update_idletasksdestroyr   r   rP   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)rA   
configTypesectionr   s      r   mock_idleconf_GetFontz4LineNumbersTest.setUp.<locals>.mock_idleconf_GetFontP   s    %%%r    GetFont)idlelibsidebarLineNumbersrM   r_   r`   idleConfre   unittestmockpatchobjectstart
addCleanupstoprh   )r   rd   GetHighlight_patcherrk   GetFont_patcherrc   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      r5   )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
r5    )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 Nr5   )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
r5   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
r5   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)zY
        Test that linenumber text widget is always at the minimum
        width
        c                  X     j                   j                  j                         d   d   S )Nr9   r   )r_   r   r   r   s   r   	get_widthz:LineNumbersTest.test_sidebar_text_width.<locals>.get_width   s&    ??//668A"EEr    r5   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   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   rA   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   b   K   |dz
  }t        |      D ]  }||z
  |z  | z  ||z  |z  z     yw)z;linearly interpolate from a to b (inclusive) in equal stepsr5   N)r   )absteps	last_stepis        r   lerpz+LineNumbersTest.simulate_drag.<locals>.lerp  s?     	I5\!A2a71y=A:MMM "s   -/r   )r   z<B1-Motion>z<ButtonRelease-1>)	r   r_   r   r   rA   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   rA   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   rA   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   rh   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#ffff00r[   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-   classmethodrR   rW   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   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)ShellSidebarTestNrA   shellc                    t        d       t        j                         x| _        }|j	                          t        |       t        |       t        |       t        |      x| _	        }|j                          | j                          y )Nr1   )r   r?   r@   rA   rB   r   r   r   r   flistrU   
init_shell)rQ   rA   r  s      r   rR   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  	executingrT   r  rA   rU   rV   rP   s    r   rW   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-1cr5   )	r  
open_shellr  pollintervalrA   r   r   r   n_preface_linesrP   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 )Nr5   .0r	  )	r  r   bottomr   r  shell_sidebarupdate_sidebarrA   r   rP   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   rz   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 )Nr5   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F1!%%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   .r5   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$8r    )keyr5   )	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  sd    ))00V[[()

8
9167D!!$777s   #Bc                     | j                  t        | j                               t        | j                                      y r   )assertLessEqualsetr4  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  sW    

zz )%++d*; <JA~##$<=KK$0 !=r    c                     | j                         }| j                  |d gt        |      dz
  z  dgz          | j                          y )Nr5   >>>)r"  r   r$  r8  )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   rA  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
rA  NrA  rE  r   s    r   test_single_line_statementz+ShellSidebarTest.test_single_line_statement  s$     e**+?@rG  c              #   n   K   | j                  t        d             d  | j                  g d       y w)N7            if True:
            print(1)

            rA  ...rN  rN  NrA  )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
rI  )r?  r&  r8  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")
)rA  NNNrA  r   zinsert -1line linestartz<<squeeze-current-text>>rI  r   )
r  r   r?  r&  mark_setr   r8  squeezerexpandingbuttonsr4   )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)
            )rA  rN  rN  z<<interrupt-execution>>)rA  rN  rN  NrA  z<<history-previous>>)rA  rN  NrA  r   z
insert -2lr:  z<<undo>>rA  z<<redo>>rN  rM  )
r  r   r"  r?  r   r&  r   r   rS  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              #   "  K   t        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+  rT  zx = 1i'  r   rA  )r   r   r  r?  r   r"  r   s    r   test_very_long_wrapped_linez,ShellSidebarTest.test_very_long_wrapped_linef  sr     &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                      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"   )rA   ri   rj   r   s      r   rk   z9ShellSidebarTest.test_font.<locals>.mock_idleconf_GetFonts  s	    r    rl   c                  F     j                          j                          y r   )rw   r   )ry   rn   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   r5   )
r  r  r  r?   r  r  r   r$  nextiter)r  r  r   fontsr   rn   s       r   get_sidebar_fontz4ShellSidebarTest.test_font.<locals>.get_sidebar_font}  sk    ^^FRVV,-E?DEutV__T62uEESZ+U$$ Fs   B)r  r  rq   rr   rs   rt   rm   rn   rp   ru   rv   r   r   r   )r   rk   ra  rf  ry   rn   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 )NrY   rZ   r[   c                 "    |dv rS  | |      S )N)r_   consoler"   )ra   rb   rc   r   s     r   rd   zJShellSidebarTest.test_highlight_colors.<locals>.mock_idleconf_GetHighlight  s    33""-eW==r    re   c                  F     j                          j                          y r   )rw   r   )rx   rn   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 )Nr3   r5   r\   r[   )r  r  r  r?   r  r  r   r$  rc  rd  cget)r  r  r   fgsfgbgr   rn   s         r   get_sidebar_colorszBShellSidebarTest.test_highlight_colors.<locals>.get_sidebar_colors  s    ^^FRVV,-E=BCUT6??40UCCSXq)d3iB\*B"$B77	 Ds   B)r  r  rm   rn   rp   re   rq   rr   rs   rt   ru   rv   r   r   r   )r   rd   ra  rp  rx   rc   rn   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                   |j                  j                  dk(  rdnd}|j                  j                  dk(  r|j                  j                  dd	d	
       n|j                  j                  dd	d	|       d  | j                  |j                  |j                  | d                   |j                  j                  dk(  r|j                  j                  dd	d	
       n |j                  j                  dd	d	|        d  | j                  |j                  |j                  | d                   y w)Nzox = """



































































































"""
r   r5   r  aquax   x11z
<Button-4>r   r   r   r   z
<Button-5>)r  r  r   r?  assertGreaterr   r   assertIsNotNoner+  r)   r  _windowingsystemr   assertIsNone)r   rn   r   last_linenor   s        r   test_mousewheelz 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              #     K   | j                   j                  }| j                   j                  }t        |      }| j	                  t        d             d  |j                  d| dd       |j                  dd      }| j                  |d       | j                  d|       |j                  d	       | j                  |j                         |j                         }| j                  ||       y w)
NrL  r   r  r	  	sel.firstsel.lastz	if True:
z
1
z<<copy>>)r  r  r   r   r?  r   tag_addr   assertStartsWithassertInr   rv   clipboard_clearclipboard_getr   )r   rn   r   
first_lineselected_textcopied_texts         r   	test_copyzShellSidebarTest.test_copy  s     ****zz'-
f   	
 	Uzl"-x8j9m\:g}-J',,-((*m4s   C1C3c              #     K   | j                   j                  }| j                   j                  }t        |      }| j	                  t        d             d  |j                  d| dd       |j                  dd      }| 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   rA  rN  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>  s2      /
!1 NDt(;;!1s   T)strictz<<copy-with-prompts>>)r  r  r   r   r?  r   r~  r   r  r*  popr$  r   r   r   rv   r  r  r   )
r   rn   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  sM    ****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,   r-   rA   r?   r@   __annotations__r  r   r   rR   rW   r  r  rz   r   r"  r&  r  r4  r8  r?  rC  r	   rF  rJ  rO  rQ  rV  rZ  r]  r   r   rz  r  r  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)(__doc__textwrapr   r  	itertoolsr   rq   unittest.mocktest.supportr   r   r   test.support.testcaser   tkinterr?   'idlelib.idle_test.tkinter_testing_utilsr	   idlelib.delegatorr
   idlelib.editorr   idlelib.percolatorr   idlelib.pyshellrm   r   r   r   idlelib.runr   idlelib.sidebarr   r   r   TestCaser/   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HMMA r    