
    ;e0                     &   d Z ddlmZ ddlmZ  ed           ddlZddlmZ ddlmZ ddl	m
Z
mZmZmZmZmZ dd	lmZ dd
lmZmZmZ ej        Z ej        d           ej        d           ej        d           ej        d          dZdadaed         Zed         Zed         Zed         Zd Zd Z  G d dej!                  Z" G d dej!                  Z# G d dej!                  Z$ G d dej!                  Z% G d dej!                  Z& G d dej!                  Z' G d d ej!                  Z( G d! d"ej!                  Z) G d# d$ej!                  Z* G d% d&ej!                  Z+e,d'k    r ej-        d()           dS dS )*zfTest configdialog, coverage 94%.

Half the class creates dialog, half works with user customizations.
    )configdialog)requiresguiN)mock)Func)Tk	StringVarIntVar
BooleanVarDISABLEDNORMAL)config)idleConfchangestracers )main	highlightkeys
extensionsr   r   r   r   c                  |    t           t          _        t                      at          j        t          dd          ad S )NTestT)_utest)testcfgr   userCfgr   rootr   ConfigDialogdialog     :/usr/lib/python3.11/idlelib/idle_test/test_configdialog.pysetUpModuler"   "   s.    H44D&tVDAAAFFFr    c                     t           t          _        t          j                     t          j                     t          j                     t                                           t          	                                 d xaa
d S N)usercfgr   r   r   detachclearr   r   update_idletasksdestroyr   r   r    r!   tearDownModuler*   *   s[    HNMOOOMOOOLLNNND666r    c                       e Zd Zd Zd ZdS )ConfigDialogTestc                     d S r$   r   selfs    r!   test_deactivate_current_configz/ConfigDialogTest.test_deactivate_current_config7       r    c                     d S r$   r   r.   s    r!   activate_config_changesz(ConfigDialogTest.activate_config_changes:   r1   r    N)__name__
__module____qualname__r0   r3   r   r    r!   r,   r,   5   s2              r    r,   c                   &    e Zd Zd Zd Zd Zd ZdS )
ButtonTestc                    t           }t          j                    x}|_        t          j                    x}|_        |j        d                                          |                                 |                                 |`|`d S )NOk)r   r   Mockapplyr)   buttonsinvokeassert_called_once)r/   dr<   r)   s       r!   test_click_okzButtonTest.test_click_ok@   st    )++%"ikk)!)		$     """""$$$Iqwwwr    c                    t           }t          j                    x}|_        t          j                    x}|j        _        t          j                    x}|_        |j        d                                          |	                                 |	                                 |	                                 |j        `|`|`d S )NApply)
r   r   r;   deactivate_current_configextpagesave_all_changed_extensionsr3   r=   r>   r?   )r/   r@   
deactivatesave_extactivates        r!   test_click_applyzButtonTest.test_click_applyI   s    379;;>
Q0;?9;;F198/3y{{:1,		'!!###%%'''##%%%##%%%I1%q'B'B'Br    c                    t           }t                      |_        dt          d         d<   |j        d                                          |                     t          d         i            |                     |j        j        d           |`d S )N   r   	somethingCancel)r   r   r)   r   r=   r>   assertEqualcalledr/   r@   s     r!   test_click_cancelzButtonTest.test_click_cancelU   sw    FF	'($		(""$$$"---)1---IIIr    c                    t           j                            t           j                   t          j                            t          dt                    5 }t           j	        d         
                                 |j        d         |j        d         }}d d d            n# 1 swxY w Y   |                     |d           |                     |                    d          o|                    d                     d S )	N	view_text)new_callableHelptitlecontentszHelp for IDLE preferenceszWhen you clickza different name.
)r   noteselectkeyspager   patchobjectr   r   r=   r>   kwdsrO   
assertTrue
startswithendswith)r/   viewrW   rX   s       r!   test_click_helpzButtonTest.test_click_help^   s8   6?+++Z|[,0  2 2 	H59N6"))+++"i0$)J2G8E	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	 ;<<<++,<== A ))*?@@	B 	B 	B 	B 	Bs   ?B!!B%(B%N)r4   r5   r6   rA   rJ   rR   rc   r   r    r!   r8   r8   >   sX          
C 
C 
C  B B B B Br    r8   c                   n    e Zd 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S )FontPageTestzTest that font widgets enable users to make font changes.

    Test that widget actions set vars, that var changes add three
    options to changes and call set_samples, and that set_samples
    changes the font of both sample boxes.
    c                     t           j        x}| _        t           j                            |           t                      |_        |                                 d S r$   )r   fontpagepagerY   rZ   r   set_samplesupdateclsrh   s     r!   
setUpClasszFontPageTest.setUpClassp   sC     /)sx4   66r    c                     | j         `d S r$   )rh   ri   rl   s    r!   tearDownClasszFontPageTest.tearDownClassw   s    H   r    c                 ,    t          j                     d S r$   r   r'   r.   s    r!   setUpzFontPageTest.setUp{       r    c                    t          j                     | j        }|j                            d           |j                            d           |j                            d           d|j        _        |	                                 | 
                    |j                                        d           | 
                    |j                                        d           |                     |j                                                   |                     |j        j        d           t          j                     d S )NFake1Tr   rL   )r   r&   rh   	font_nameset	font_size	font_boldri   rP   load_font_cfgassertNotEqualgetassertFalserO   attachrQ   s     r!   test_load_font_cfgzFontPageTest.test_load_font_cfg~   s    	I			 	AKOO--v666AKOO--s333**+++-q111r    c                    | j         }|j                                        dk     r|                     d           |j        }|                    d           |j                            d          }|                                 |                                 |                    d           |                    d           |                    d          }| 	                    ||           | 
                    |j                                        |                                           |                                 |                                 |                    d           |                    d           |                    d          }|                     ||           | 
                    |j                                        |                                           d S )	N   need at least 2 fontsr   activez
<Key-Down>z<KeyRelease-Down>z<Key-Up>z<KeyRelease-Up>)rh   fontlistsizeskipTestrI   r~   focus_forcerj   event_generater}   assertInrx   lowerrO   )r/   r@   r   font	down_fontup_fonts         r!   test_fontlist_keyzFontPageTest.test_fontlist_key   s   I:??q  MM1222:!z~~h'' 	--- 3444LL**	It,,,akoo''):):;;; 	
+++ 1222,,x(($'''akoo''99999r    c                    | j         }|j                                        dk     r|                     d           |j        }|                    d           |                                 |                    d           |                                 |                    d          \  }}}}||dz  z  }||dz  z  }|	                    d||           |	                    d||           |
                    d          }|
                    d          }|                     ||           |                     |j        
                                |                                           d S )	Nr   r   r   rL   
<Button-1>xy<ButtonRelease-1>anchor)rh   r   r   r   rI   r   seerj   bboxr   r~   rO   r   rx   r   )	r/   r@   r   r   r   dxdyfont1select_fonts	            r!   test_fontlist_mousez FontPageTest.test_fontlist_mouse   sO   I:??q  MM1222:! 	Q}}Q''1b"	R1W	R1WQ777 3qA>>>Qll8,,e,,,akoo''77777r    c                     | j         }|j        j                            d           |                     |j                                        d           d S )N(   40)rh   sizelistvariablery   rO   rz   r~   rQ   s     r!   test_sizelistzFontPageTest.test_sizelist   sJ    I	
###**D11111r    c                 \   | j         }|j                            d           |j                                         |                     |j                                                   |j                                         |                     |j                                                   d S )NF)rh   r{   ry   bold_toggler>   r_   r~   r   rQ   s     r!   test_bold_togglezFontPageTest.test_bold_toggle   s    I		))***	**+++++r    c                    t          j        t          dd          }t          |d                   }|d         dk    }| j        }|j                            |           |j                            |           d|j        _	        |j
                            d           dd|t          |          di}|                     t          |           |                     |j        j	        d           t          j                     |j                            d	           ddd	t          |          di}|                     t          |           |                     |j        j	        d           t          j                     |j                            |            ddd	t          |           di}|                     t          |           |                     |j        j	        d
           d S )Nr   EditorWindowrL   r   boldr   z	Test Font)r   z	font-sizez	font-bold20   )r   GetFontr   strrh   rz   ry   r{   ri   rP   rx   rO   mainpager   r'   )r/   default_fontdefault_sizedefault_boldr@   expecteds         r!   test_font_setzFontPageTest.test_font_set   s   
  'fnEE<?++#A&0I	%%%	%%% 	$$$"[2>25l2C2C%E %E F 	8,,,-q111	"[2625l2C2C%E %E F 	8,,,-q111	L()))"[2625,6F2G2G%I %I J 	8,,,-q11111r    c                    | j         }|`|j        |j        f}i i c|_        |_        |j                            d           |j                            d           |j                            d           ddi}|                                 |                     |j        |j        cxk    o|k    nc            |\  |_        |_        t                      |_        d S )Ntest5rL   r   )r   r   r   )
rh   ri   font_samplehighlight_samplerx   ry   rz   r{   r_   r   )r/   r@   orig_samplesr   s       r!   test_set_sampleszFontPageTest.test_set_samples   s    IM}a&88,.)q)			12 	
);GGGGxGGGGHHH,8)q)r    N)r4   r5   r6   __doc__classmethodrm   rp   rs   r   r   r   r   r   r   r   r   r    r!   re   re   i   s            [ ! ! [!     : : ::8 8 8.2 2 2, , ,"2 "2 "2H    r    re   c                       e Zd 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d Zd Zd Zd Zd Zd Zd ZdS )HighPageTestzTest that highlight tab widgets enable users to make changes.

    Test that widget actions set vars, that var changes add
    options to changes and that themes work correctly.
    c                 *   t           j        x}| _        t           j                            |           t                      |_        t                      |_        t                      |_        t                      |_	        |
                                 d S r$   )r   highpagerh   rY   rZ   r   set_theme_typepaint_theme_sampleset_highlight_targetset_color_samplerj   rk   s     r!   rm   zHighPageTest.setUpClass  sg     /)sx4   "ff"&&&$(FF! $r    c                 $    | j         }|`|`|`|`d S r$   )rh   r   r   r   r   )rl   r@   s     r!   rp   zHighPageTest.tearDownClass  s%    Ha2"A$6$6$6r    c                    | j         }t          j        dd          D ]'}t          j        d                             |           (t          j                     d|j        _        d|j	        _        d|j
        _        d|j        _        d S )Nuserr   r   )rh   r   GetSectionListr   remove_sectionr   r'   r   rP   r   r   r   r/   r@   sections      r!   rs   zHighPageTest.setUp  s    I  .v{CC 	B 	BG[)88AAAA"#&'#()%$%!!!r    c                     t          j                     | j        }| j        }t	          j        d          t          _        |                                 | 	                    |j
                                                    ||j                                        d            ||j                                        d            ||j                                        d            ||j        j        d            ||j        j        d            ||j        j        d           t          j        dddd	           t          j        dd
dd           |                                  ||j                                        d            ||j                                        d            ||j        j        d            ||j        j        d            ||j        j        d           t	          j        d
          t          _        t          j        dddd           |                                 |                     |j
                                                    ||j                                        d            ||j                                        d
            ||j        j        d            ||j        j        d            ||j        j        d           t          `t          j                     d S )NIDLE Classicreturn_value- no custom themes -disabledrL   r   test1optionvaluetest2option2value2r   r   Themedefault0r   )r   r&   rh   rO   r   r;   r   CurrentThemeload_theme_cfgr_   theme_sourcer~   builtin_namecustom_namecustom_theme_onstater   rP   r   r   	SetOptionr   r   r/   r@   eqs      r!   test_load_theme_cfgz HighPageTest.test_load_theme_cfg*  s   I !%	~ F F F	**,,---
1>000
1= 6777
1""$$m444
1"A&&&
1&***
1!(!,,, 	;7CCC;HEEE	
1>000
1=(((
1"A&&&
1&***
1!(!,,, !%	w ? ? ?67Is;;;	++--...
1>000
1=(((
1"A&&&
1&***
1!(!,,,!r    c                 L   | j         }| j        }t                      |_        t                      |_        |j                                          |t          dddii            ||j        j        d            ||j        j        d           t          j
                     |j                            d           |j                                         |                      t          dddii            ||j        j        d            ||j        j        d           |`|`d S )Nr   r   TruerL   r   z	!disabledFalse)rO   rh   r   var_changed_builtin_namevar_changed_custom_namebuiltin_theme_onr>   r   rP   r   r'   r   r   r/   r   r@   s      r!   test_theme_sourcezHighPageTest.test_theme_sourceS  s$   I%)VV"$(FF!	!!###
8g	623444
1%,a000
1$+Q/// 	
///	  """Gi-A#BCCC
1%,a000
1$+Q///&(A(A(Ar    c                    | j         }| j        }g d}t          j        dddd           |j                            |d            |t          ddddi            ||j        d	         d
            ||j        j	        d           t          j                     t          j        dddd           |j                            |d            |t          dddii            ||j        d	         d
            ||j        j	        d           t          j                     |j                            |d            |t          ddddi            ||j        d	         d            ||j        j	        d           d S )N)r   	IDLE DarkIDLE Newr   r   namespamr   r   r   name2textzNew theme, see HelprL   r   r   r   r   r   )rO   rh   r   r   builtinlistSetMenur   theme_messager   rP   r   r'   r/   r   r@   	item_lists       r!   test_builtin_namezHighPageTest.test_builtin_nameh  s   I===	 	67FF;;;	i555
8g)4 6  6 7 	8 	8 	8
1?6"$9:::
1&*** 	67FJ???	i555
8g56777
1?6"$9:::
1&*** 		i888
8gDDEFFF
1?6"B'''
1&*****r    c                    | j         }|j                            g d           |                     dt                     |                     |j        j        d           t          j	                     |j                            g dd           |                     t          dddii           |                     |j        j        d           d S )Nr   r   r   abcr  r   rL   )
rh   
customlistr   assertNotInr   rO   r   rP   r   r'   rQ   s     r!   test_custom_namezHighPageTest.test_custom_name  s    I 	
R!7888(+++-4a888 		___c222Gfc]#;<<<-4a88888r    c                     | j         }t                      |_        |j                            d           |                     |j        j        d           |`d S )NgreenrL   )rh   r   on_new_color_setcolorry   rO   rP   rQ   s     r!   
test_colorzHighPageTest.test_color  sQ    I!VV	G+2A666r    c                     | j         }| j        }|j                            g dd            ||j                                        d            ||j        j        d           d S )Nr   r  rL   )rO   rh   
targetlistr   highlight_targetr~   r   rP   r   s      r!    test_highlight_target_list_mousez-HighPageTest.test_highlight_target_list_mouse  sl    I	___c222
1!!##S)))
1!(!,,,,,r    c                   	 | j         }| j        i }d}j        		                                 	                    d           	                                 fd}	fd} ||           	                                D ]r}	                    |          dd d         D ]Q}|dz  } ||            |j        	                                ||                     |j
        j        |           Rsd S )Nr         ?c                 \    j                                         D ]\  }}|| |d         <   d S Nr   )theme_elementsitems)elemelementtagr@   s      r!   tag_to_elementzEHighPageTest.test_highlight_target_text_mouse.<locals>.tag_to_element  s>     ! 0 6 6 8 8 ' '&SV' 'r    c                                         |           \  }}}}||dz  z  }||dz  z  }                    ddd                               d||                               d||                               d||           d S )Nr   <Enter>r   r   <Motion><ButtonPress-1>r   )r   r   )startr   r   r   r   hss        r!   click_itz?HighPageTest.test_highlight_target_text_mouse.<locals>.click_it  s    775>>LAq"bqLAqLAi1222jA333/1:::1Q!<<<<<r    r   rL   )rO   rh   r   r   r   r(   	tag_names
tag_rangesr  r~   r   rP   )
r/   r   r  countr  r   r  start_indexr@   r  s
           @@r!    test_highlight_target_text_mousez-HighPageTest.test_highlight_target_text_mouse  sA   I

s
	' 	' 	' 	' 	'	= 	= 	= 	= 	= 	t <<>> 	9 	9C!}}S11!$Q$7 9 9
%%%1%))++T#Y7771)0%8888	9	9 	9r    c                    | j         }| j        }|j        }|                                 |                    d           |                                 |                    ddd           |                    ddd           t          d          D ]2}|                    ddd           |                    ddd           3 ||                    d	          d
           d S )Nr  r  r   r   r  r   r  r   selr   )	rO   rh   r   r   r   r(   r   ranger"  )r/   r   r@   r  _s        r!   "test_highlight_sample_double_clickz/HighPageTest.test_highlight_sample_double_click  s    I

s
 	)qA...
*Q///q 	= 	=A/1:::1Q!<<<<
2==$$$$$r    c                 2   | j         }| j        }|j        }|                                 |                    d           |                                 |                    d          \  }}}}}|                    d           |                    d           |                    d||           |                    d||           |                    d||           |                    d	||            ||                    d
          d           d S )Nr  z1.0z<Leave>r  r  r   r  z<B1-Motion>r   r'  r   )	rO   rh   r   r   r   r(   	dlineinfor   r"  )	r/   r   r@   r  r   r   r   r   offsets	            r!   test_highlight_sample_b1_motionz,HighPageTest.test_highlight_sample_b1_motion  s"   I

s
!||E221b"f 	)$$$
)$$$
*Q///
+qA666
-2444
-r:::
2==$$$$$r    c                    | j         }| j        }|`|j                            d           |                                  ||j        d         t                      ||j        d         t                      ||j	        
                                d           |j                            d           |                                  ||j        d         t                      ||j        
                                d            ||j        d         t                      ||j	        
                                d           t                      |_        d S NTr   r   Fselectedr   )rO   rh   r   r   ry   r   r   r  r   button_delete_customr   r   r   r   s      r!   test_set_theme_typez HighPageTest.test_set_theme_type  sD   I 	
4   	
1=!6***
1< (+++
1!''))=999 	
5!!!	
1=!8,,,
1""$$m444
1< &)))
1!''))2...66r    c                 f   | j         }| j        }t          j        j        }t                      x}t          j        _        t                      x}|_        |j                            d           |j	                            d           d|_
        |j                                          ||j	                                        d           d|j                            |j        d         d          f|_
        |j                                          ||j	                                        d           d|_
        |j	                            d           |j                            d           d|_
        |j                                          ||j        d	            ||j	                                        d           d
|_
        |j                                          ||j                                        |j
                    ||j	                                        d           |j	                            d           |j                            d           |j                                          ||j	                                        d           |`|t          j        _        d S )NzEditor Breakpointz#ffffff)NNr   style
background))g    k@        r8  #de0000TrL   zMy New Themer9  F)rO   rh   r   colorchooseraskcolorr   get_new_theme_namer  ry   r
  resultbutton_set_colorr>   r~   r6  lookupframe_color_setr   rP   r   )r/   r   r@   orig_chooserchoosergntns         r!   test_get_colorzHighPageTest.test_get_color  sO   I#097;vv=,+4&*ff,q#	2333	I &	!!###
17;;==)$$$ agnnQ->w-GVVW	!!###
17;;==)$$$ > 	
I	4    	!!###
4;
17;;==)$$$$	!!###
1=,,,
17;;==)$$$ 	
I	5!!!	!!###
17;;==)$$$ -9!***r    c                    | j         }d}|j                            d           |j                            d           |j                            d           |j                            |           |                     |j                            |j	        d         d          |           |                     |j
                            dd          |           |                     t          dd	|ii           d S )
Nz#3f7caePythonSelected TextTr6  r7  hilite
foregroundzhilite-foreground)rh   r   ry   r  fg_bg_toggler
  rO   r6  r?  r@  r   tag_cgetr   )r/   r@   r
  s      r!   test_on_new_color_setz"HighPageTest.test_on_new_color_set6  s    I	(###	///	4   	E(9'(BLQQSXYYY+44X|LLeTTT"%8%$@A	C 	C 	C 	C 	Cr    c                     t           j        }t          d          x}t           _        | j        }d|_        |                     |                    d          d           |t           _        d S )NTreturn_selfz	New Themer   )r   SectionNamer   rh   r=  rO   r<  r/   orig_sectionnamesnr@   s       r!   test_get_new_theme_namez$HighPageTest.test_get_new_theme_nameC  sc    '3(,(>(>(>>\%I	--b11;???#3   r    c                    | j         }t                      x}|_        |j                            d           d|_        |j                                         |                     |j        t          j
        d                    d|_        d|_        |                     |j        t          j
        d                    |j                                         |                     |j        t          j
        d                    |`d S )NTr   r   zmy new themer   )rh   r   r<  r   ry   r=  button_save_customr>   r  r   r   rP   r   )r/   r@   rC  s      r!   test_save_as_new_themez#HighPageTest.test_save_as_new_themeM  s    I&*ff,q#	4    	##%%%h&6{&CDDD %h&6{&CDDD	##%%%dk8#3K#@AAA   r    c                 N   | j         }| j        }|j                            d           |j                            d           d}d}|                     |t          j                   |                    |            |t          j	        dd          |g            |t          j
        dd          t          j
        d|                      ||j                                        |           |                     |j                                                    ||j        j        d           t!          j        d|d	d
           |                     |t          j                   |                    |            |t          j	        dd          ||g           |                     t          j
        d|          t          j
        d|                     t          j        d|d	d
            |t          j
        d|          t          j
        d|                     d S )NTr   zmy new custom themezmy second custom themer   r   r   rL   zhit-backgroundyellow)rO   rh   r   ry   r   r  r   r   
create_newr   GetThemeDictr   r~   r   r   rP   r   
add_optionr}   r   r/   r   r@   	first_new
second_news        r!   test_create_new_and_save_newz)HighPageTest.test_create_new_and_save_new`  s   I 	
4   	>***)	-
 	H$4555	Y
8"6;77)EEE
8 N;; 33	5 	5 	5
1=	***++--...
1"A&&& 	;	3CXNNNX%5666	Z   
8"6;77)Z9PQQQH1&)DD$1&*EE	G 	G 	G 	;	3CXNNN
8 33 44	6 	6 	6 	6 	6r    c                    | j         }| j        }|`|j                            d            ||j                                        d            ||j                                        d           |                     |j	                    ||j
        j        d           |j                            d            ||j                                        d            ||j                                        d           |                     |j	                    ||j
        j        d           t                      |_        d S )	NCursor)r   r2  r   rL   Commentr1  r   r   )rO   rh   r   r  ry   fg_onr   bg_onr_   rJ  r   rP   r   r   s      r!   test_set_highlight_targetz&HighPageTest.test_set_highlight_target  s$   I" 	
x(((
17==??4555
17==??M***'''
1$a((( 	
y)))
17==??M***
17==??B'''
1$a(((!%r    c                     | j         }|j        }|j                                         |                     |j        d           |j                                         |                     |j        d           d S )NrL   r   )rh   r   rd  r>   rO   rP   re  )r/   r@   scss      r!   test_set_color_sample_bindingz*HighPageTest.test_set_color_sample_binding  sk    I 	Q'''	Q'''''r    c                 t   | j         }|`|j                            d           |j                            d           |                                 |                     |j                            |j        d         d          |j	        
                    dd                     t                      |_        d S )NrG  Tr6  r7  rH  rI  )rh   r   r  ry   rJ  rO   r6  r?  r@  r   rK  r   rQ   s     r!   test_set_color_samplez"HighPageTest.test_set_color_sample  s    I	///	4   	q09<HH"++HlCC	E 	E 	E "VVr    c                    | j         }| j        }|`|j        j        }t
          j        }|j                            d           |j	                            d           d}|
                    |           d|j        _        |                                 ddd}|                                D ]%\  }}|                      |d|          |           & ||j        j        d	           |                                D ]\  }}t          j        d
|d|z   |            |                                 |                                D ]\  }} | |d|          |            ||j        j        d           t#                      |_        d S )NTr   z	IDLE Testr   bluerY  )rI  r7  consolerL   r   zconsole-r   )rO   rh   r   r   rK  r   GetHighlightr   ry   r   rZ  r   rP   r  r}   r   r\  r   )	r/   r   rh   hs_tagghthemenew_consolekeyr   s	            r!   test_paint_theme_samplez$HighPageTest.test_paint_theme_sample  s   y#&/" 	d###k***'($ 	!!!%+%-0 0%++-- 	? 	?JCy# 6 6>>>>
4 '+++ &++-- 	J 	JJC{E:c>5IIII!!!%++-- 	. 	.JCBvvi%%u----
4 '+++"&&&r    c                    | j         }| j        }|j                            d           t	                      x}|_        t	                      t          _        t	                      t          _        d}t          j
        d                             |dd           ddit          |<   d}t          j
        d                             |dd           dd	it          |<   |j                            d           |j                                         |j                            |           d
|_        |j                                          ||j        d            |t          |         ddi            |t          j        dd          ||g            |t          j        j        d            |t          j        j        d            ||j        j        d           d|_        |j                                          ||j        d           |                     |t                      |t          j        dd          |g            ||j                                        d            ||j                                        |            |t          j        j        d            |t          j        j        d            ||j        j        d           |j                            |           d|_        |j                                          ||j        d           |                     |t                      |t          j        dd          g             ||j                                        d            ||j                                        d            |t          j        j        d            |t          j        j        d            ||j        j        d           t          `t          `|`d S )Nr   z
spam themer   r   r   r   r   zother themer   FrL   r   r   Tr   r   r   r   r   )rO   rh   r3  r   r   askyesnor   rD   r3   r   r   r   r   r   r>   r   ry   r=  rP   r   r   r  r~   )r/   r   r@   yesno
theme_nametheme_name2s         r!   test_delete_customzHighPageTest.test_delete_custom  s   I	$$^444!VV#
+/66()-&!
%//
FGLLL (&1#%//VWMMM!)7 3 	
///	  """	*%%% 	%%'''
5<
8J(F!3444
8"6;77*k9RSSS
6+2A666
6)0!444
1"A&&& 	%%'''
5<X...
8"6;77+GGG
1""$$b)))
1=,,,
6+2A666
6)0!444
1"A&&& 	
+&&&	%%'''
5<X...
8"6;77<<<
1""$$m444
1= 6777
6+2A666
6)0!444
1"A&&&*F,LJJJr    N)r4   r5   r6   r   r   rm   rp   rs   r   r   r   r  r  r  r%  r*  r.  r4  rD  rL  rT  rW  r`  rf  ri  rk  ru  r{  r   r    r!   r   r     s           [ 7 7 [7

& 
& 
&' ' 'RB B B*+ + +89 9 9  - - -#9 #9 #9J% % %(% % %," " "*-: -: -:^C C C4 4 4! ! !&6 6 6@( ( (*( ( (	$ 	$ 	$) ) )@9 9 9 9 9r    r   c                       e Zd 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dS )KeysPageTestzTest that keys tab widgets enable users to make changes.

    Test that widget actions set vars, that var changes add
    options to changes and that key sets works correctly.
    c                     t           j        x}| _        t           j                            |           t                      |_        t                      |_        d S r$   )r   r[   rh   rY   rZ   r   set_keys_typeload_keys_listrk   s     r!   rm   zKeysPageTest.setUpClass  sD     /)sx4   !VV"ffr    c                     | j         }|`|`d S r$   )rh   r  r  rk   s     r!   rp   zKeysPageTest.tearDownClass  s    x 3 3 3r    c                     | j         }t          j        dd          D ]'}t          j        d                             |           (t          j                     d|j        _        d|j	        _        d S )Nr   r   r   )
rh   r   r   r   r   r   r'   r  rP   r  r   s      r!   rs   zKeysPageTest.setUp  sl    I  .vv>> 	= 	=GV$33G<<<<!""#r    c                 l   t          j                     | j        }| j        }t	          j        d          t          _        |                                 | 	                    |j
                                                    ||j                                        d            ||j                                        d            ||j                                        d            ||j        j        d            ||j        j        d            ||j        j        d           t          j        ddd	d
           t          j        dddd           |                                  ||j                                        d            ||j                                        d            ||j        j        d            ||j        j        d            ||j        j        d           t	          j        d          t          _        t	          j        d          t          _        t          j        dddd           |                                 |                     |j
                                                    ||j                                        d            ||j                                        d            ||j        j        d            ||j        j        d            ||j        j        d           t          `t          `t          j                     d S )NIDLE Classic OSXr   - no custom keys -r   rL   r  r   r   r   r   r   r   r   r   zIDLE Modern Unixr   Keysr   r   r   )r   )r   r&   rh   rO   r   r;   r   CurrentKeysload_key_cfgr_   keyset_sourcer~   r   r   custom_keyset_onr   r  rP   r  argsr   default_keysr   r   r   s      r!   test_load_key_cfgzKeysPageTest.test_load_key_cfg#  s   I  $y6HIII	++--...
1>!3444
1= 4555
1##%%}555
1?!1%%%
1"A&&&
1 "8999 	67Hg>>>67Ix@@@	
1>!3444
1=(((
1?!1%%%
1"A&&&
1 "8999  $yg>>> $	7I J J J669c:::	,,..///
1>!3444
1=(((
1?!1%%%
1"A&&&
1 +... ("7r    c                 L   | j         }| j        }t                      |_        t                      |_        |j                                          |t          dddii            ||j        j        d            ||j        j        d           t          j
                     |j                            d           |j                                         |                      t          dddii            ||j        j        d            ||j        j        d           |`|`d S )Nr  r   r   rL   r   r   r   )rO   rh   r   r   r   builtin_keyset_onr>   r   rP   r   r'   r  r   r   s      r!   test_keyset_sourcezKeysPageTest.test_keyset_sourceM  s$   I%)VV"$(FF!	""$$$
8fy&12333
1%,a000
1$+Q/// 	
  000	!!###FY,@#ABBB
1%,a000
1$+Q///&(A(A(Ar    c                    | j         }| j        }t          j        d                             d           g d}|j                            |d            |t          ddddi            ||j        d         d            ||j	        j
        d	            ||j	        j        d
           t          j                     t          j        dddd           |j                            |d            |t          dddii            ||j        d         d            ||j	        j
        d            ||j	        j        d
           t          j                     |j                            |d            |t          ddddi            ||j        d         d            ||j	        j
        d            ||j	        j        d           d S )Nr   r  )IDLE Classic Windowsr  IDLE Modern UNIXr  r  r   r   zNew key set, see HelprL   )r  r   zIDLE Classic Unixr   r   r  r   r   r  )rO   rh   r   r   r   r   r   r   keys_messager  rP   r  r   r'   r   r   s       r!   r   zKeysPageTest.test_builtin_nameb  s   I //777) ) )	 	
i);<<<
8f'=(:< < = 	> 	> 	>
1>&!#:;;;
1"A&&&
1 "8999 	6663FGGG	i);<<<
8fw(:;<===
1>&!#:;;;
1"A&&&
1 "8999 		i);<<<
8f'9BGGHIII
1>&!2&&&
1"A&&&
1 "899999r    c                    | j         }|j                            g d           |                     dt                     |                     |j        j        d           t          j	                     |j                            g dd           |                     t          dddii           |                     |j        j        d           d S )Nr  r  r   r   r  r   rL   )
rh   r  r   r  r   rO   r  rP   r   r'   rQ   s     r!   r  zKeysPageTest.test_custom_name  s    I 	
R!5666***)0!444 		___c222FVSM#:;;;)0!44444r    c                    t          j        dddd           | j        }|j                            d           |j                            dd           |j                            dd           |j                            d	d
           |j                            d           |j        	                    d           |j
                            d           |                     t          dddii           |j                            d	           |j        	                    d	           |j
                            d           |                     t          dd
dii           d S )Nr   ZzDummyenabler   zmy custom keysr   endcopyrL   zz-in	<Key-F11>ZzDummy_cfgBindings)r   r   rh   r   ry   bindingslistdeleteinsertselection_setselection_anchor
keybindingrO   r[   rE   rQ   s     r!   test_keybindingzKeysPageTest.test_keybinding  se   <HfEEEI	*+++	a'''	a(((	a(((	$$Q'''	''***	%%%*V[,AB	D 	D 	D 	
$$Q'''	''***	%%%/&+1FG	I 	I 	I 	I 	Ir    c                    | j         }| j        }|`|j                            d           |                                  ||j        d         t                      ||j        d         t                      ||j	        
                                d           |j                            d           |                                  ||j        d         t                      ||j        
                                d            ||j        d         t                      ||j	        
                                d           t                      |_        d S r0  )rO   rh   r  r  ry   r   r   r  r   button_delete_custom_keysr   r  r   r   s      r!   test_set_keys_typezKeysPageTest.test_set_keys_type  s<   IO 	
D!!!	
1=!6***
1< (+++
1&,,..>>> 	
E"""	
1=!8,,,
1##%%}555
1< &)))
1&,,..333&&r    c                    | j         }| j        }t          j        }t	          d          x}t          _        t	                      x}|_        |j                            d           |j        	                    dd           |j        
                    dd           |j                            d           |j                            d           |j                            d           |j                            d           d|_        |j                                          ||j                            d	          d            ||j                                        d           d
|_        d|_        |j                                          ||j        d            ||j                            d	          d           d|_        |j                                          ||j                                        |j                    ||j                            d	          d            ||j                                        d
           |j                            d           d|_        d|_        |j                                          ||j        d            ||j                            d	          d            ||j                                        d           |`|t          _        d S )NTrN  r   r   r  zcopy - <Control-Shift-Key-C>zKey-ar   r   r  rL   zMy New Key Setzcopy - <Key-F11>Fz<Key-p>zcopy - <Key-p>)rO   rh   r   GetKeysWindowr   get_new_keys_namebutton_new_keysr   r  r  r  r  r  r  ry   r  r=  r>   r~   rP   r   )r/   r   r@   orig_getkeysdialoggkdgnkns         r!   test_get_new_keyszKeysPageTest.test_get_new_keys  s   I)7+/D+A+A+AAl(%)VV+q"	///	a'''	a!?@@@	$$Q'''	''***	!!!	D!!! 
	  """
1>h'')GHHH
1<w''' !
	  """
4;
1>h'')GHHH&	  """
1=,,,
1>h'');<<<
1<{+++ 	
E"""
	  """
4;
1>h'')9:::
1<y)))%7"""r    c                     t           j        }t          d          x}t           _        | j        }d|_        |                     |                    d          d           |t           _        d S )NTrN  zNew Keysr   )r   rP  r   rh   r=  rO   r  rQ  s       r!   test_get_new_keys_namez#KeysPageTest.test_get_new_keys_name  sc    '3(,(>(>(>>\%I	,,R00*===#3   r    c                    | j         }t                      x}|_        |j                            d           d|_        |j                                         d|_        d|_        | 	                    |j        t          j        d                    |j                                         |                     |j        t          j        d                    |`d S )NTr   zmy new key setr   r   )rh   r   r  r  ry   r=  button_save_custom_keysr>   rP   r  r   r   r   )r/   r@   r  s      r!   test_save_as_new_key_setz%KeysPageTest.test_save_as_new_key_set  s    I%)VV+q"	D!!! 	!((*** 'h&6v&>???	!((***dk8#3F#;<<<r    c                 
   | j         }|j        }|                    dd           |                    dd           |                    dd           |                    d           |                                 |                    d           |                                 |                    d          \  }}}}||dz  z  }||dz  z  }|	                    ddd           |	                    d	||           |	                    d
||           |	                    d||           | 
                    |                    d          d           | 
                    |j                                        d           d S )Nr   r  r  rL   findr   r  r   r  r   r   r   r   )rh   r  r  r  rI   r   r   rj   r   r   rO   r~   r  r   )r/   r@   r  r   r   r   r   s          r!   test_on_bindingslist_selectz(KeysPageTest.test_on_bindingslist_select  sm   IN	E	F	F	

1		a	


vvayy1b"	R1W	R1W	a1---	qA...	a000	,Q777x&111*0022B77777r    c                 B   | j         }| j        }|j                            d           |j                            d           d}d}|                     |t          j                   |                    |            |t          j	        dd          |g            |t          j
        d          t          j
        |                      ||j                                        |           |                     |j                                                    ||j        j        d           t!          j        d|dd	           |                     |t          j                   |                    |            |t          j	        dd          ||g           |                     t          j
        |          t          j
        |                     t          j        d|dd	            |t          j
        |          t          j
        |                     d S )
NTr  zmy new custom key setzmy second custom keysetr   r   rL   r  r  )rO   rh   r  ry   r   r  r   r   create_new_key_setr   	GetKeySetr   r~   r   r  rP   r   r\  r}   r   r]  s        r!   ,test_create_new_key_set_and_save_new_key_setz9KeysPageTest.test_create_new_key_set_and_save_new_key_set  s   I 	
D!!!	1222+	.
 	H$4555	Y'''
8"6622YK@@@
8455i((	* 	* 	*
1=	***,,..///
1?!1%%% 	69fkBBBX%5666	Z(((
8"6622Y
4KLLLH.y99$.z::	< 	< 	< 	69fkBBB
8i(((*<Z*H*HIIIIIr    c                    | j         }| j        }t                      x}t          _        |`|j        }|                    dd           |                    dd           |                    dd           ddgdgd	gd
|_	        t          j        dddd           d}|                    d            ||                    dd          |            ||                    d          d            ||                                d           |                    d           |                    d           |                    d            ||                    dd          |            ||                    d          d            ||                                d           |                    d           |                    d           |                    d            ||                    dd          |            ||                    d          d            ||                                d           t                      |_        t          `d S )Nr   r  z<<find>>rL   z<<help>>z<Control-Key-c>z<Control-Key-C>z<Control-Key-space>r  )z<<copy>>z<<force-open-completions>>z<<spam>>r   zmy keysr   z<Shift-Key-a>)z&copy - <Control-Key-c> <Control-Key-C>,force-open-completions - <Control-Key-space>spam - <Shift-Key-a>r   r   r   r  )rL   r   r  )r   )rO   rh   r   r   r  r  r  r  r  r=  r   r\  r~   curselectionr  r  )r/   r   r@   gksr  r   s         r!   test_load_keys_listz KeysPageTest.test_load_keys_list:  sW   I#'66)h N	E	J	J#46G"H5J4K#.-1 1
 	69foFFF,
 	
###
155E??H%%%
155??B
1>>R    	
	1	###
155E??H%%%
155??JKKK
1>>U### 	
	1	###
155E??H%%%
155??2333
1>>U###66r    c                    | j         }| j        }|j                            d           t	                      x}|_        t	                      t          _        t	                      t          _        d}t          j
        d                             |dd           ddit          |<   d}t          j
        d                             |dd           dd	it          |<   |j                            d           |j                                         |j                            |           d
|_        |j                                          ||j        d            |t          |         ddi            |t          j        dd          ||g            |t          j        j        d            |t          j        j        d            ||j        j        d           d|_        |j                                          ||j        d           |                     |t                      |t          j        dd          |g            ||j                                        d            ||j                                        |            |t          j        j        d            |t          j        j        d            ||j        j        d           |j                            |           d|_        |j                                          ||j        d           |                     |t                      |t          j        dd          g             ||j                                        d            ||j                                        d            |t          j        j        d            |t          j        j        d            ||j        j        d           t          `t          `|`d S )Nr   zspam key setr   r   r   r   r   zother key setr   FrL   r   r   Tr   r   r   r   r  )rO   rh   r  r   r   rw  r   rD   r3   r   r   r   r[   r  r>   r   ry   r=  rP   r   r  r  r~   )r/   r   r@   rx  keyset_namekeyset_name2s         r!   test_delete_custom_keysz$KeysPageTest.test_delete_custom_keyse  s   I	#)).999!VV#
+/66()-&$ **;HHH!)6 2& **<III"*G!4 	
  000	!!###	+&&& 	#**,,,
5<
8K 8V"4555
8"6622[,4OPPP
6+2A666
6)0!444
1?!1%%% 	#**,,,
5<h///
8"6622\NCCC
1##%%r***
1=---
6+2A666
6)0!444
1?!1%%% 	
,'''	#**,,,
5<h///
8"6622B777
1##%%}555
1= 4555
6+2A666
6)0!444
1?!1%%%*F,LJJJr    N)r4   r5   r6   r   r   rm   rp   rs   r  r  r   r  r  r  r  r  r  r  r  r  r  r   r    r!   r}  r}    s3         % % [% 4 4 [4$ $ $( ( (TB B B*: : :@5 5 5I I I*! ! !*.8 .8 .8`4 4 4     $8 8 8*J J J>) ) )V9 9 9 9 9r    r}  c                   ^    e Zd ZdZed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd ZdS )WinPageTestzTest that general tab widgets enable users to make changes.

    Test that widget actions set vars, that var changes add
    options to changes.
    c                     t           j        x}| _        t           j                            |           |                                 d S r$   )r   winpagerh   rY   rZ   rj   rk   s     r!   rm   zWinPageTest.setUpClass  s7     .(sx4   r    c                 ,    t          j                     d S r$   rr   r.   s    r!   rs   zWinPageTest.setUp  rt   r    c                    | j         }| j        }|j                            d           |j                            d           |j                            d           |                                  ||j                                        d            ||j                                        d            ||j                                        d           d S )NrL   r   80r   )rO   rh   startup_editry   	win_width
win_heightload_windows_cfgr~   r   s      r!   test_load_windows_cfgz!WinPageTest.test_load_windows_cfg  s    I	1			
1>###
1;??d###
1<t$$$$$r    c                    | j         }|j                                         |                     t          dddii           t          j                     |j                                         |                     t          dddii           d S )NGeneralzeditor-on-startuprw   r   )rh   startup_editor_onr>   rO   r   r   r'   startup_shell_onrQ   s     r!   test_startupzWinPageTest.test_startup  s    I	""$$$#&93%?@	B 	B 	B	!!####&93%?@	B 	B 	B 	B 	Br    c                    | j         }|j                            dd           |j                            dd           |                     t
          dddii           t          j                     |j                            dd           |j                            dd           |                     t
          dddii           d S )Nr   r  11r   heightwidth)	rh   win_height_intr  r  rO   r   r   r'   win_width_intrQ   s     r!   test_editor_sizezWinPageTest.test_editor_size  s    I	5)))	4(((NXt4D#EFFF	q%(((	q$'''NWdO#DEEEEEr    c                     | j         }|j                            d           |                     |j                                        d           |                     t          dddii           d S )N   6Indentz
num-spaces)rh   indent_chooserry   rO   indent_spacesr~   r   rQ   s     r!   test_indent_spaceszWinPageTest.test_indent_spaces  sj    I	Q,,..444H|S.A#BCCCCCr    c                     | j         j                                         |                     t          dddii           d S )Nr   zcursor-blinkr   )rh   cursor_blink_boolr>   rO   r   r.   s    r!   test_cursor_blinkzWinPageTest.test_cursor_blink  s?    	#**,,,N^W4M#NOOOOOr    c                     | j         j                            dd           | j         j                            dd           |                     t
          dddii           d S )Nr   r  r  AutoComplete	popupwait)rh   auto_wait_intr  r  rO   rE   r.   s    r!   test_autocomplete_waitz"WinPageTest.test_autocomplete_wait  s^    	&&q%000	&&q$///>K3F"GHHHHHr    c                    | j         }| j        }|j        d                             d            |t          dddii           t          j                     |j                            dd           |j        	                    dd            |t          dddii           t          j                     |j
                                          |t          dd	d
ii           d S )Nmenur   
ParenMatchr6  openerr  r  zflash-delaybellr   )rh   rO   paren_style_typer>   rE   r   r'   paren_flash_timer  r  bell_onr   s      r!   test_parenmatchzWinPageTest.test_parenmatch  s    I	6"))!,,,
7\GX#67888	!!!U+++	!!!T***
7\M4#89:::		
7\FG#4566666r    c                     | j         j                            dd           | j         j                            dd           |                     t
          dddii           d S )Nr   r  r  FormatParagraphz	max-width)rh   format_width_intr  r  rO   rE   r.   s    r!   test_paragraphzWinPageTest.test_paragraph  s_    	"))!U333	"))!T222#4{D6I"JKKKKKr    N)r4   r5   r6   r   r   rm   rs   r  r  r  r  r  r  r  r  r   r    r!   r  r    s         
   [
  
% 
% 
%B B BF F FD D DP P PI I I
7 7 7L L L L Lr    r  c                   @    e Zd ZdZed             Zd Zd Zd Zd Z	dS )ShedPageTestzTest that shed tab widgets enable users to make changes.

    Test that widget actions set vars, that var changes add
    options to changes.
    c                     t           j        x}| _        t           j                            |           |                                 d S r$   )r   shedpagerh   rY   rZ   rj   rk   s     r!   rm   zShedPageTest.setUpClass  s7     /)sx4   r    c                 ,    t          j                     d S r$   rr   r.   s    r!   rs   zShedPageTest.setUp  rt   r    c                     | j         }| j        }|j                            d           |                                  ||j                                        d           d S )NrL   r   )rO   rh   autosavery   load_shelled_cfgr~   r   s      r!   test_load_shelled_cfgz"ShedPageTest.test_load_shelled_cfg  s[    I	
q	
1:>>Qr    c                     | j         }|j                                         |                     t          dddii           |j                                         |                     t          dddii           d S )Nr  r   rw   r   )rh   save_auto_onr>   rO   r   save_ask_onrQ   s     r!   test_autosavezShedPageTest.test_autosave	  sw    I	I
C/@#ABBB	I
C/@#ABBBBBr    c                     | j         j                            dd           | j         j                            dd           |                     t
          dddii           d S )Nr   r  rw   CodeContextmaxlines)rh   context_intr  r  rO   rE   r.   s    r!   test_contextzShedPageTest.test_context  s^    	$$Q...	$$Q,,,=:s2C"DEEEEEr    N)
r4   r5   r6   r   r   rm   rs   r  r  r  r   r    r!   r  r    s}         
   [
       C C CF F F F Fr    r  c                   (    e Zd ZdZed             ZdS )ExtPageTest/Test that the help source list works correctly.c                 \    t           j        }t           j                            |           d S r$   )r   rE   rY   rZ   rk   s     r!   rm   zExtPageTest.setUpClass  s%    ~4     r    N)r4   r5   r6   r   r   rm   r   r    r!   r  r    s3        99! ! [! ! !r    r  c                   n    e Zd 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S )HelpSourceTestr  c                    t           j        }t           j                            |           |j        x}| _        t                      x|_        |_        t                      x|_	        |_
        |                                 d S r$   )r   rE   rY   rZ   
frame_helpframer   ry   set_add_delete_stateupcupdate_help_changesrj   )rl   rh   r  s      r!   rm   zHelpSourceTest.setUpClass!  sd    ~4    O+	157	E.046	E-r    c                     | j         }|`|`|`|`|j                            dd           |j                                         d S )Nr   r  )	r  ry   r  r  r  helplistr  user_helplistr'   )rl   r  s     r!   rp   zHelpSourceTest.tearDownClass*  sP    	Iu1Iu0a'''!!#####r    c                 ,    t          j                     d S r$   rr   r.   s    r!   rs   zHelpSourceTest.setUp2  rt   r    c                 .   | j         }| j        }|j                            dd           ddg|_        t          j        dddd           |                                  ||j                            dd          d	            ||j        d
g           d S )Nr  badworser   	HelpFilesrw   z	name;filer   )r   )r   filerw   )	rO   r  r  r  r  r   r   load_helplistr~   r/   r   frs      r!   test_load_helplistz!HelpSourceTest.test_load_helplist5  s    Z
5%(((!7+6;[AAA

2;??1e$$i000
23455555r    c                 8   | j         }|j        |_        |j        |_        |j        }d}|                    |d           |                    |           |                                 |	                    |           |
                                 |                    |          \  }}}}||dz  z  }||dz  z  }dx|j        _        |j        _        |                    ddd           |                    d||           |                    d||           |                    d	||           |                     |                    d
          d           |                     |j        j                   |                     |j        j                   d S )Nr  sourcer   r   r  r   r  r   r   r   )r  r  ry   r  r  r  r  rI   r   r   rj   r   rP   r   rO   r~   r_   r   )r/   r#  r  dexr   r   r   r   s           r!   test_source_selectedz#HelpSourceTest.test_source_selected?  s   Z(';X&&&#S}}S))1b"	R1W	R1W())	Q!444
a1555Q777 3qA>>>h//:::&&&'''''r    c                    | j         }| j        }|`|j        }|j        }|                    dd            |              ||j                                        d            ||j                                        d           |                    dd            |              ||j                                        d            ||j                                        d           |	                    d            |              ||j                                        d            ||j                                        d           t                      |_        d S )Nr   r  r   r&  r   )rO   r  r  r  r  button_helplist_editr   button_helplist_remover  r  r   )r/   r   r#  sadhs        r!   test_set_add_delete_statez(HelpSourceTest.test_set_add_delete_stateW  sY   Z#%K	E
2"((**M:::
2$**,,m<<<	H
2"((**M:::
2$**,,m<<<	
2"((**B///
2$**,,b111"&&&r    c                 x   | j         }t          j        }t          d          x}t          _        | j        }|j                            dd           |j                                         dx|j	        _
        |j        _
        d|_        |                                 |                     t          |j                            dd                    |j        cxk    og k    nc            |                     |j        j
                   d|_        |                                 d|_        |                                  ||j                            dd          d            ||j        ddg            ||j        j
        d	           |                     |j	        j
                   |t          _        d S )
NTrN  r   r  r   name1file1r   file2)r1  r   r   )rO   r   
HelpSourcer   r  r  r  r  r'   ry   rP   r  r=  helplist_item_addr_   listr~   r   r/   r   orig_helpsourcer  r#  s        r!   test_helplist_item_addz%HelpSourceTest.test_helplist_item_addo  s    &1'+'='='==\$Z
1e$$$
   ())	
R[__Q6677(/ / / /,./ / / / 	0 	0 	0'''&	
&	

2;??1e$$&8999
202DEFFF
26=!'''"1r    c                    | j         }t          j        }t          d          x}t          _        | j        }|j                            dd           |j                            dd           |j                            d           |j        	                    d           |j
                                         |j
                            d           dx|j        _        |j        _        d|_        |                                 d|_        |                                  ||j                            dd          d            ||j
        dg           |                     |j        j                   d	|_        |                                  ||j                            dd          d
            ||j
        d	g           |                     |j        j        |j        j        cxk    odk    nc            |t          _        d S )NTrN  r   r  r1  r0  r   )r1  r3  )r   rL   )rO   r   r5  r   r  r  r  r  r  r  r  r'   appendry   rP   r  r=  helplist_item_editr~   r   r_   r8  s        r!   test_helplist_item_editz&HelpSourceTest.test_helplist_item_edit  s   &1'+'='='==\$Z
1e$$$
1g&&&
!!!$$$
$$Q'''
   
 2333())	
&	

2;??1e$$j111
201222'''&	

2;??1e$$j111
201222;;;;!;;;;<<<"1r    c                    | j         }| j        }|j                            dd           |j                            dd           |j                            d           |j                            d           |j                                         |j        	                    d           dx|j
        _        |j        _        |                                  ||j                            dd          d            ||j        g            |                     |j        j        |j
        j        cxk    odk    nc            d S )Nr   r  r1  r0  r   rL   )rO   r  r  r  r  r  r  r  r'   r<  ry   rP   r  helplist_item_remover~   r_   r"  s      r!   test_helplist_item_removez(HelpSourceTest.test_helplist_item_remove  s1   Z
1e$$$
1g&&&
!!!$$$
$$Q'''
   
 2333())
!!!
2;??1e$$b)))
2R   ;;;;!;;;;<<<<<r    c                 H   | j         }|`|j                                         |j                            d           |j                            d           |                                 |                     t          d         ddd           t                      |_        d S )Nr0  r3  r  zname1;file1zname2;file2)rw   2)r  r  r  r'   r<  rO   r   r   )r/   r#  s     r!   test_update_help_changesz'HelpSourceTest.test_update_help_changes  s    Z"
   
 2333
 2333
   +.,=AA	C 	C 	C!%r    N)r4   r5   r6   r   r   rm   rp   rs   r$  r(  r.  r:  r>  rA  rD  r   r    r!   r  r    s        99  [ $ $ [$  6 6 6( ( (0) ) )02 2 282 2 2<= = = 
( 
( 
( 
( 
(r    r  c                   j    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S )VarTraceTestc                     t          j                    | _        t          t                    | _        t          t                    | _        d S r$   )r   VarTracer   r
   r   ivr   bvro   s    r!   rm   zVarTraceTest.setUpClass  s2    "+--D!!r    c                     | ` | `| `d S r$   )r   rI  rJ  ro   s    r!   rp   zVarTraceTest.tearDownClass  s    Kr    c                 F    | j                                          d| _        d S r  )r   r'   rP   r.   s    r!   rs   zVarTraceTest.setUp  s!    r    c                 &    | xj         dz  c_         d S )N   )rP   r/   paramss     r!   var_changed_incrementz"VarTraceTest.var_changed_increment  s    rr    c                     d S r$   r   rO  s     r!   var_changed_booleanz VarTraceTest.var_changed_boolean  r1   r    c                     | j         }|                                 |                     |j        g            |                     |j        g            d S r$   )r   __init__rO   untracedtracedr/   trs     r!   	test_initzVarTraceTest.test_init  sL    \
b)))B'''''r    c                    | j         }|j                            d           |j                            d           |                                 |                     |j        g            |                     |j        g            d S )Nr   rL   )r   rV  r<  rW  r'   rO   rX  s     r!   
test_clearzVarTraceTest.test_clear  sx    \
1
	



b)))B'''''r    c                    | j         }t                      }t          j        |          x}|_        |                    | j        | j                  }|                     || j                   |                    | j	        | j
                  }|                     || j	                   t          t                    }|                    |d          }|                     ||           |                                 |                    |d           || j        f|| j
        f||fg}|                     |j        g            |                     |j        |           |`d S )Nr   r   r   r   )r   r   r   r;   make_callbackaddrI  rQ  assertIsrJ  rS  r	   r   r?   assert_called_withrO   rW  rV  )	r/   rY  funccbrI  rJ  svsv2r   s	            r!   test_addzVarTraceTest.test_add  sF   \vv $	t < < <<RVVDGT788b$'"""VVDGT566b$'"""t__ffR677c2

b"?@@@3412J  	B'''h///r    c                    | j                             | j        d          }|                     t	          |                     | j                            d           |                     dt          d                     |             |                     dt          d                    | 	                    t          d         d         d         d           t          j
                     d S )Nr^  *   r   r   r   42)r   r_  rI  r_   callablery   r  r   r   rO   r'   )r/   rd  s     r!   test_make_callbackzVarTraceTest.test_make_callback  s    \''1NOO%%%BGFO444
i1113H=tDDDr    c                    | j         }|                    | j        | j                  }|                    | j        | j                  }|| j        f|| j        fg}|                                 |                     |j        g            | 	                    |j
        |           |                    d           |                     |                                d           |                     | j        d           d| _        |                                 |                    d           |                     | j        d           d| _        |                                 |                     |j
        g            | 	                    |j        |           |                    d           |                     | j        d           d S )NrL   rN  r   )r   r`  rI  rQ  rJ  rS  r   rO   rV  assertCountEqualrW  ry   r~   rP   r&   )r/   rY  rI  rJ  r   s        r!   test_attach_detachzVarTraceTest.test_attach_detach  s   \VVDGT788VVDGT56634124 			b)))bi222
q			1%%%b)))
 
		
q			b))) 
		B'''bk8444
q			a(((((r    N)r4   r5   r6   r   rm   rp   rs   rQ  rS  rZ  r\  rg  rl  ro  r   r    r!   rF  rF    s        " " ["
 ( ( [(      ( ( (( ( (  0
 
 
) ) ) ) )r    rF  __main__r   )	verbosity).r   idlelibr   test.supportr   unittestr   idlelib.idle_test.mock_idler   tkinterr   r	   r
   r   r   r   r   idlelib.configdialogr   r   r   r   r%   IdleUserConfParserr   r   r   r   r   r[   rE   r"   r*   TestCaser,   r8   re   r   r}  r  r  r  r  rF  r4   r   r   r    r!   <module>rz     s    !           ! ! ! ! ! !         , , , , , , I I I I I I I I I I I I I I I I       ; ; ; ; ; ; ; ; ; ;
 
%F%b))**2..%F%b))+&+B//	  	6?;6?
,
B B B      x(   (B (B (B (B (B" (B (B (BV[ [ [ [ [8$ [ [ [|| | | | |8$ | | |~X X X X X8$ X X XvNL NL NL NL NL(# NL NL NLb!F !F !F !F !F8$ !F !F !FJ! ! ! ! !(# ! ! !d( d( d( d( d(X& d( d( d(Ne) e) e) e) e)8$ e) e) e)P zHMA r    