a
    åze0Ø  ã                   @   s¶  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 d¡e d¡e d¡e d¡dœZdadaed Zed Zed Zed Zdd„ Zdd„ Z G dd„ dej!ƒZ"G dd„ dej!ƒZ#G dd„ dej!ƒZ$G dd„ dej!ƒZ%G dd„ dej!ƒZ&G dd „ d ej!ƒZ'G d!d"„ d"ej!ƒZ(G d#d$„ d$ej!ƒZ)G d%d&„ d&ej!ƒZ*G d'd(„ d(ej!ƒZ+e,d)kr²ej-d*d+ dS ),zfTest configdialog, coverage 94%.

Half the class creates dialog, half works with user customizations.
é    )Úconfigdialog)ÚrequiresZguiN)Úmock)ÚFunc)ÚTkÚ	StringVarÚIntVarÚ
BooleanVarÚDISABLEDÚNORMAL)Úconfig)ÚidleConfÚchangesÚtracersÚ )ÚmainÚ	highlightÚkeysÚ
extensionsr   r   r   r   c                   C   s    t t_tƒ atjtdddad S )NZTestT)Z_utest)Útestcfgr   ÚuserCfgr   Úrootr   ZConfigDialogÚdialog© r   r   ú9/usr/lib/python3.9/idlelib/idle_test/test_configdialog.pyÚsetUpModule"   s    r   c                   C   s:   t t_t ¡  t ¡  t ¡  t ¡  t 	¡  d  aa
d S ©N)Úusercfgr   r   r   ÚdetachÚclearr   r   Úupdate_idletasksÚdestroyr   r   r   r   r   ÚtearDownModule*   s    r"   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚConfigDialogTestc                 C   s   d S r   r   ©Úselfr   r   r   Útest_deactivate_current_config7   s    z/ConfigDialogTest.test_deactivate_current_configc                 C   s   d S r   r   r$   r   r   r   Úactivate_config_changes:   s    z(ConfigDialogTest.activate_config_changesN)Ú__name__Ú
__module__Ú__qualname__r&   r'   r   r   r   r   r#   5   s   r#   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú
ButtonTestc                 C   sJ   t }t ¡  }|_t ¡  }|_|jd  ¡  | ¡  | ¡  |`|`d S )NZOk)r   r   ÚMockÚapplyr!   ÚbuttonsÚinvokeÚassert_called_once)r%   Údr-   r!   r   r   r   Útest_click_ok@   s    zButtonTest.test_click_okc                 C   sh   t }t ¡  }|_t ¡  }|j_t ¡  }|_|jd  ¡  | 	¡  | 	¡  | 	¡  |j`|`|`d S )NZApply)
r   r   r,   Údeactivate_current_configÚextpageZsave_all_changed_extensionsr'   r.   r/   r0   )r%   r1   Z
deactivateZsave_extÚactivater   r   r   Útest_click_applyI   s    zButtonTest.test_click_applyc                 C   sN   t }tƒ |_dtd d< |jd  ¡  |  td i ¡ |  |jjd¡ |`d S )Né   r   Z	somethingZCancel)r   r   r!   r   r.   r/   ÚassertEqualÚcalled©r%   r1   r   r   r   Útest_click_cancelU   s    zButtonTest.test_click_cancelc                 C   sŽ   t j t j¡ tjjtdtd4}t j	d  
¡  |jd |jd  }}W d   ƒ n1 sZ0    Y  |  |d¡ |  | d¡o†| d¡¡ d S )	NZ	view_text)Znew_callableZHelpÚtitleÚcontentszHelp for IDLE preferenceszWhen you clickza different name.
)r   ÚnoteÚselectÚkeyspager   ZpatchÚobjectr   r   r.   r/   Úkwdsr8   Ú
assertTrueÚ
startswithÚendswith)r%   Úviewr<   r=   r   r   r   Útest_click_help^   s    
ÿ4ÿzButtonTest.test_click_helpN)r(   r)   r*   r2   r6   r;   rG   r   r   r   r   r+   >   s   		r+   c                   @   sh   e Zd ZdZedd„ ƒZedd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚFontPageTestzîTest 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                 C   s,   t j }| _t j |¡ tƒ |_| ¡  d S r   )r   ZfontpageÚpager>   r?   r   Úset_samplesÚupdate©ÚclsrI   r   r   r   Ú
setUpClassp   s    zFontPageTest.setUpClassc                 C   s
   | j `d S r   )rI   rJ   ©rM   r   r   r   ÚtearDownClassw   s    zFontPageTest.tearDownClassc                 C   s   t  ¡  d S r   ©r   r   r$   r   r   r   ÚsetUp{   s    zFontPageTest.setUpc                 C   s’   t  ¡  | j}|j d¡ |j d¡ |j d¡ d|j_| 	¡  |  
|j ¡ d¡ |  
|j ¡ d¡ |  |j ¡ ¡ |  |jjd¡ t  ¡  d S )NZFakeÚ1Tr   r7   )r   r   rI   Ú	font_nameÚsetÚ	font_sizeÚ	font_boldrJ   r9   Zload_font_cfgÚassertNotEqualÚgetÚassertFalser8   Úattachr:   r   r   r   Útest_load_font_cfg~   s    zFontPageTest.test_load_font_cfgc                 C   sÞ   | 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   Zactivez
<Key-Down>z<KeyRelease-Down>z<Key-Up>z<KeyRelease-Up>)rI   ÚfontlistÚsizeÚskipTestr5   rY   Úfocus_forcerK   Úevent_generaterX   ÚassertInrT   Úlowerr8   )r%   r1   r_   ÚfontZ	down_fontZup_fontr   r   r   Útest_fontlist_keyŽ   s(    







zFontPageTest.test_fontlist_keyc           	      C   sÌ   | j }|j ¡ dk r|  d¡ |j}| d¡ | ¡  | d¡ | ¡  | d¡\}}}}||d 7 }||d 7 }|j	d||d |j	d||d | 
d¡}| 
d¡}|  ||¡ |  |j 
¡ | ¡ ¡ d S )	Nr]   r^   r   r7   ú
<Button-1>©ÚxÚyú<ButtonRelease-1>Úanchor)rI   r_   r`   ra   r5   rb   ÚseerK   Úbboxrc   rY   r8   rd   rT   re   )	r%   r1   r_   rj   rk   ÚdxÚdyZfont1Zselect_fontr   r   r   Útest_fontlist_mouse«   s"    




z FontPageTest.test_fontlist_mousec                 C   s*   | j }|jj d¡ |  |j ¡ d¡ d S )Né(   Ú40)rI   ZsizelistÚvariablerU   r8   rV   rY   r:   r   r   r   Útest_sizelistÂ   s    zFontPageTest.test_sizelistc                 C   sJ   | j }|j d¡ |j ¡  |  |j ¡ ¡ |j ¡  |  |j ¡ ¡ d S )NF)rI   rW   rU   Zbold_toggler/   rC   rY   rZ   r:   r   r   r   Útest_bold_toggleÈ   s    

zFontPageTest.test_bold_togglec                 C   s  t  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 d	¡ ddd	t|ƒdœi}|  t|¡ |  |jj	d¡ t ¡  |j | ¡ ddd	t| ƒdœi}|  t|¡ |  |jj	d
¡ d S )Nr   ÚEditorWindowr7   r]   Úboldr   z	Test Font)rf   z	font-sizez	font-boldZ20é   )r   ZGetFontr   ÚstrrI   rV   rU   rW   rJ   r9   rT   r8   Úmainpager   r   )r%   Zdefault_fontZdefault_sizeZdefault_boldr1   Úexpectedr   r   r   Útest_font_setÑ   s<    þþþzFontPageTest.test_font_setc                 C   s’   | j }|`|j|jf}i i  |_|_|j d¡ |j d¡ |j d¡ ddi}| ¡  |  |j|j  kor|kn  ¡ |\|_|_t	ƒ |_d S )NÚtestÚ5r7   rf   )r   r€   ry   )
rI   rJ   Zfont_sampleÚhighlight_samplerT   rU   rV   rW   rC   r   )r%   r1   Zorig_samplesr}   r   r   r   Útest_set_samplesõ   s    "zFontPageTest.test_set_samplesN)r(   r)   r*   Ú__doc__ÚclassmethodrN   rP   rR   r\   rg   rr   rv   rw   r~   r‚   r   r   r   r   rH   i   s   

	$rH   c                   @   sÐ   e Zd ZdZedd„ ƒZedd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0S )1ÚHighPageTestz¶Test 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                 C   sD   t j }| _t j |¡ tƒ |_tƒ |_tƒ |_tƒ |_	| 
¡  d S r   )r   ÚhighpagerI   r>   r?   r   Úset_theme_typeÚpaint_theme_sampleÚset_highlight_targetÚset_color_samplerK   rL   r   r   r   rN     s    zHighPageTest.setUpClassc                 C   s   | j }|`|`|`|`d S r   )rI   r‡   rˆ   r‰   rŠ   )rM   r1   r   r   r   rP     s    zHighPageTest.tearDownClassc                 C   sT   | j }t dd¡D ]}tjd  |¡ qt ¡  d|j_d|j	_d|j
_d|j_d S )NÚuserr   r   )rI   r   ÚGetSectionListr   Úremove_sectionr   r   r‡   r9   rˆ   r‰   rŠ   ©r%   r1   Úsectionr   r   r   rR     s    zHighPageTest.setUpc                 C   s–  t  ¡  | j}| j}tjddt_| ¡  |  	|j
 ¡ ¡ ||j ¡ dƒ ||j ¡ dƒ ||j ¡ dƒ ||jjdƒ ||jjdƒ ||jjdƒ t dddd	¡ t dd
dd¡ | ¡  ||j ¡ dƒ ||j ¡ dƒ ||jjdƒ ||jjdƒ ||jjdƒ tjd
dt_t dddd¡ | ¡  |  |j
 ¡ ¡ ||j ¡ dƒ ||j ¡ d
ƒ ||jjdƒ ||jjdƒ ||jjdƒ t`t  ¡  d S )NúIDLE Classic©Zreturn_valueú- no custom themes -©Údisabledr7   r   Útest1ÚoptionÚvalueÚtest2Úoption2Úvalue2r]   r   ÚThemeÚdefaultÚ0rz   )r   r   rI   r8   r   r,   r   ZCurrentThemeZload_theme_cfgrC   Útheme_sourcerY   Úbuiltin_nameÚcustom_nameÚcustom_theme_onÚstater‡   r9   rˆ   r‰   Ú	SetOptionrZ   r[   ©r%   r1   Úeqr   r   r   Útest_load_theme_cfg*  s>    z HighPageTest.test_load_theme_cfgc                 C   s®   | j }| j}tƒ |_tƒ |_|j ¡  |tdddiiƒ ||jjdƒ ||jjdƒ t	 
¡  |j d¡ |j ¡  |   tdddii¡ ||jjdƒ ||jjdƒ |`|`d S )Nr›   rœ   ÚTruer7   r   ©z	!disabledÚFalse)r8   rI   r   Úvar_changed_builtin_nameÚvar_changed_custom_nameZbuiltin_theme_onr/   r|   r9   r   r   r¡   r¢   ©r%   r¥   r1   r   r   r   Útest_theme_sourceS  s    

zHighPageTest.test_theme_sourcec                 C   s  | j }| j}g d¢}t dddd¡ |j |d¡ |tddddœiƒ ||jd	 d
ƒ ||jj	dƒ t
 ¡  t dddd¡ |j |d¡ |tdddiiƒ ||jd	 d
ƒ ||jj	dƒ t
 ¡  |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 Helpr7   r¯   r³   r]   r   rz   )r8   rI   r   r£   ÚbuiltinlistÚSetMenur|   Ztheme_messagerˆ   r9   r   r   ©r%   r¥   r1   Z	item_listr   r   r   Útest_builtin_nameh  s*    ÿ
zHighPageTest.test_builtin_namec                 C   sr   | j }|j g d¡ |  dt¡ |  |jjd¡ t 	¡  |j g d¢d¡ |  tdddii¡ |  |jjd¡ d S )Nr’   r›   r   ©ÚaÚbÚcr¼   r°   r7   )
rI   Ú
customlistr¶   ÚassertNotInr|   r8   rˆ   r9   r   r   r:   r   r   r   Útest_custom_name„  s    zHighPageTest.test_custom_namec                 C   s2   | j }tƒ |_|j d¡ |  |jjd¡ |`d S )NZgreenr7   )rI   r   Zon_new_color_setÚcolorrU   r8   r9   r:   r   r   r   Ú
test_color’  s
    zHighPageTest.test_colorc                 C   s@   | j }| j}|j g d¢d¡ ||j ¡ dƒ ||jjdƒ d S )Nr¹   r¼   r7   )r8   rI   Z
targetlistr¶   Úhighlight_targetrY   r‰   r9   r¬   r   r   r   Ú test_highlight_target_list_mouseš  s
    z-HighPageTest.test_highlight_target_list_mousec                    s²   | j }| j‰ i }d}ˆ j‰ˆ ¡  ˆ d¡ ˆ ¡  ‡ fdd„}‡fdd„}||ƒ ˆ ¡ D ]P}ˆ |¡dd d… D ]6}|d7 }||ƒ |ˆ j 	¡ || ƒ |ˆ j
j|ƒ qtq\d S )	Nr   ç      ð?c                    s$   ˆ j  ¡ D ]\}}|| |d < q
d S ©Nr   )Ztheme_elementsÚitems)ÚelemÚelementÚtag)r1   r   r   Útag_to_element¯  s    zEHighPageTest.test_highlight_target_text_mouse.<locals>.tag_to_elementc                    sn   ˆ   | ¡\}}}}||d 7 }||d 7 }ˆ jdddd ˆ jd||d ˆ jd||d ˆ jd||d d S )Nr]   ú<Enter>r   ri   ú<Motion>ú<ButtonPress-1>rl   )ro   rc   )Ústartrj   rk   rp   rq   )Úhsr   r   Úclick_it³  s    z?HighPageTest.test_highlight_target_text_mouse.<locals>.click_itr]   r7   )r8   rI   r   rb   rn   r    Z	tag_namesÚ
tag_rangesrÂ   rY   r‰   r9   )r%   r¥   rÇ   ÚcountrÊ   rÐ   rÉ   Ústart_indexr   )r1   rÏ   r   Ú test_highlight_target_text_mouse£  s"    

z-HighPageTest.test_highlight_target_text_mousec                 C   sŽ   | j }| j}|j}| ¡  | d¡ | ¡  |jdddd |jdddd tdƒD ]$}|jdddd |jdddd qT|| d	¡d
ƒ d S )NrÄ   rË   r   ri   rÌ   r]   rÍ   rl   Úselr   )	r8   rI   r   rb   rn   r    rc   ÚrangerÑ   )r%   r¥   r1   rÏ   Ú_r   r   r   Ú"test_highlight_sample_double_clickÈ  s    
z/HighPageTest.test_highlight_sample_double_clickc           	      C   s¨   | j }| j}|j}| ¡  | d¡ | ¡  | d¡\}}}}}| d¡ | d¡ |jd||d |jd||d |jd||d |jd	||d || d
¡dƒ d S )NrÄ   z1.0z<Leave>rË   rÌ   ri   rÍ   z<B1-Motion>rl   rÕ   r   )	r8   rI   r   rb   rn   r    Z	dlineinforc   rÑ   )	r%   r¥   r1   rÏ   rj   rk   rp   rq   Úoffsetr   r   r   Útest_highlight_sample_b1_motionÜ  s    


z,HighPageTest.test_highlight_sample_b1_motionc                 C   s´   | 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   )r8   rI   r‡   rž   rU   rµ   r   r½   r
   Úbutton_delete_customr¢   r¡   r   r¬   r   r   r   Útest_set_theme_typeò  s    z HighPageTest.test_set_theme_typec                 C   sX  | j }| j}tjj}tƒ  }tj_tƒ  }|_|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@ç        râ   ú#de0000Tr7   zMy New Themerã   F)r8   rI   r   ZcolorchooserZaskcolorr   Úget_new_theme_namerÂ   rU   rÀ   ÚresultZbutton_set_colorr/   rY   rà   ÚlookupÚframe_color_setrž   r9   r    )r%   r¥   r1   Zorig_chooserZchooserÚgntnr   r   r   Útest_get_color  s<    




zHighPageTest.test_get_colorc                 C   s„   | 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 TextTrà   rá   ÚhiliteÚ
foregroundzhilite-foreground)rI   r    rU   rÂ   Úfg_bg_togglerÀ   r8   rà   ræ   rç   r   Útag_cgetr†   )r%   r1   rÀ   r   r   r   Útest_on_new_color_set6  s    
ÿz"HighPageTest.test_on_new_color_setc                 C   s>   t j}tdd }t _| j}d|_|  | d¡d¡ |t _d S )NT©Zreturn_selfz	New Themer   )r   ÚSectionNamer   rI   rå   r8   rä   ©r%   Zorig_sectionnameZsnr1   r   r   r   Útest_get_new_theme_nameC  s    z$HighPageTest.test_get_new_theme_namec                 C   sˆ   | j }tƒ  }|_|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   )rI   r   rä   rž   rU   rå   Zbutton_save_customr/   r¾   r   r   r9   rd   )r%   r1   rè   r   r   r   Útest_save_as_new_themeM  s    

z#HighPageTest.test_save_as_new_themec                 C   s(  | j }| j}|j d¡ |j d¡ d}d}|  |tj¡ | |¡ |t 	dd¡|gƒ |t 
dd¡t 
d|¡ƒ ||j ¡ |ƒ |  |j ¡ ¡ ||jjdƒ t d|d	d
¡ |  |tj¡ | |¡ |t 	dd¡||gƒ |  t 
d|¡t 
d|¡¡ t d|d	d
¡ |t 
d|¡t 
d|¡ƒ d S )NTr   zmy new custom themezmy second custom themer‹   r   rœ   r7   zhit-backgroundÚyellow)r8   rI   rž   rU   rŸ   r¾   r   r   Ú
create_newrŒ   ZGetThemeDictr    rY   rZ   r‡   r9   r   Ú
add_optionrX   r£   ©r%   r¥   r1   Z	first_newZ
second_newr   r   r   Útest_create_new_and_save_new`  s4    

ÿ

ÿ
ÿz)HighPageTest.test_create_new_and_save_newc                 C   s¨   | 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 )	NZCursor)r”   rÝ   r“   r7   ÚCommentrÜ   r   r]   )r8   rI   r‰   rÂ   rU   Úfg_onr¢   Úbg_onrC   rî   rŠ   r9   r   r¬   r   r   r   Útest_set_highlight_target€  s    z&HighPageTest.test_set_highlight_targetc                 C   s@   | j }|j}|j ¡  |  |jd¡ |j ¡  |  |jd¡ d S )Nr7   r]   )rI   rŠ   rü   r/   r8   r9   rý   )r%   r1   Zscsr   r   r   Útest_set_color_sample_binding•  s    

z*HighPageTest.test_set_color_sample_bindingc                 C   s\   | j }|`|j d¡ |j d¡ | ¡  |  |j |jd d¡|j	 
dd¡¡ tƒ |_d S )Nrë   Trà   rá   rì   rí   )rI   rŠ   rÂ   rU   rî   r8   rà   ræ   rç   r   rï   r   r:   r   r   r   Útest_set_color_sampleŸ  s    þz"HighPageTest.test_set_color_samplec           	      C   sú   | j }| j}|`|jj}tj}|j d¡ |j	 d¡ d}| 
|¡ d|j_| ¡  dddœ}| ¡ D ]\}}|  |d|ƒ|¡ qf||jjd	ƒ | ¡ D ]\}}t d
|d| |¡ q˜| ¡  | ¡ D ]\}}||d|ƒ|ƒ qÆ||jjdƒ tƒ |_d S )NTr®   z	IDLE Testr   Zbluerö   )rí   rá   Zconsoler7   r   zconsole-r]   )r8   rI   rˆ   r   rï   r   ZGetHighlightrž   rU   rŸ   r÷   rŠ   r9   rÆ   rX   r   rø   r   )	r%   r¥   rI   Zhs_tagZghZthemeZnew_consoleÚkeyr—   r   r   r   Útest_paint_theme_sampleª  s0    
ÿz$HighPageTest.test_paint_theme_samplec                 C   s2  | j }| j}|j d¡ tƒ  }|_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	 dd¡||gƒ |tjjdƒ |tjjdƒ ||jjdƒ d|_|j ¡  ||jdƒ |  |t¡ |t	 dd¡|gƒ ||j ¡ dƒ ||j ¡ |ƒ |tjjdƒ |tjjdƒ ||jjdƒ |j |¡ d|_|j ¡  ||jdƒ |  |t¡ |t	 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©   Fr7   r‹   r   Tr]   r   rz   r“   r’   )r8   rI   rÞ   r¢   r   Úaskyesnor   r3   r'   r   r   r£   r†   r¡   r/   r    rU   rå   r9   rŒ   r‡   r¾   rY   )r%   r¥   r1   ÚyesnoZ
theme_nameZtheme_name2r   r   r   Útest_delete_customÊ  s\    



zHighPageTest.test_delete_customN)r(   r)   r*   rƒ   r„   rN   rP   rR   r¦   r­   r¸   r¿   rÁ   rÃ   rÔ   rØ   rÚ   rß   ré   rð   rô   rõ   rú   rþ   rÿ   r   r  r  r   r   r   r   r…     s4   
	
)	%/
 
 r…   c                   @   s˜   e Zd ZdZedd„ ƒZedd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"S )#ÚKeysPageTestz´Test 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                 C   s,   t j }| _t j |¡ tƒ |_tƒ |_d S r   )r   r@   rI   r>   r?   r   Úset_keys_typeÚload_keys_listrL   r   r   r   rN     s    zKeysPageTest.setUpClassc                 C   s   | j }|`|`d S r   )rI   r  r  rL   r   r   r   rP     s    zKeysPageTest.tearDownClassc                 C   sD   | j }t dd¡D ]}tjd  |¡ qt ¡  d|j_d|j	_d S )Nr‹   r   r   )
rI   r   rŒ   r   r   r   r   r  r9   r  rŽ   r   r   r   rR     s    zKeysPageTest.setUpc                 C   s¨  t  ¡  | j}| j}tjddt_| ¡  |  	|j
 ¡ ¡ ||j ¡ dƒ ||j ¡ dƒ ||j ¡ dƒ ||jjdƒ ||jjdƒ ||jjdƒ t ddd	d
¡ t dddd¡ | ¡  ||j ¡ dƒ ||j ¡ dƒ ||jjdƒ ||jjdƒ ||jjdƒ tjddt_tjddt_t dddd¡ | ¡  |  |j
 ¡ ¡ ||j ¡ dƒ ||j ¡ dƒ ||jjdƒ ||jjdƒ ||jjdƒ t`t`t  ¡  d S )NúIDLE Classic OSXr‘   ú- no custom keys -r“   r7   ©r	  r   r•   r–   r—   r˜   r™   rš   r]   zIDLE Modern Unixr   ÚKeysrœ   r   rz   )r˜   )r   r   rI   r8   r   r,   r   ZCurrentKeysZload_key_cfgrC   Úkeyset_sourcerY   rŸ   r    Úcustom_keyset_onr¢   r  r9   r  Úargsr£   Zdefault_keysrZ   r[   r¤   r   r   r   Útest_load_key_cfg#  s@    zKeysPageTest.test_load_key_cfgc                 C   s®   | j }| j}tƒ |_tƒ |_|j ¡  |tdddiiƒ ||jjdƒ ||jjdƒ t	 
¡  |j d¡ |j ¡  |   tdddii¡ ||jjdƒ ||jjdƒ |`|`d S )Nr  rœ   r§   r7   r   r¨   r©   )r8   rI   r   rª   r«   Zbuiltin_keyset_onr/   r|   r9   r   r   r  r¢   r¬   r   r   r   Útest_keyset_sourceM  s    

zKeysPageTest.test_keyset_sourcec                 C   s0  | 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 ¡  t dddd¡ |j |d¡ |tdddiiƒ ||jd dƒ ||j	j
dƒ ||j	jd
ƒ t ¡  |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 Helpr7   )r  r°   zIDLE Classic Unixr³   r]   r	  r   rz   r  )r8   rI   r   r   r   rµ   r¶   r|   Zkeys_messager  r9   r  r   r   r£   r·   r   r   r   r¸   b  s0    ÿ
zKeysPageTest.test_builtin_namec                 C   sr   | j }|j g d¡ |  dt¡ |  |jjd¡ t 	¡  |j g d¢d¡ |  tdddii¡ |  |jjd¡ d S )Nr
  r  r   r¹   r¼   r°   r7   )
rI   r½   r¶   r¾   r|   r8   r  r9   r   r   r:   r   r   r   r¿   ‚  s    zKeysPageTest.test_custom_namec                 C   sÀ   t  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   ZZzDummyÚenabler§   zmy custom keysr   ÚendÚcopyr7   zz-inú	<Key-F11>ZZzDummy_cfgBindings)r   r£   rI   r    rU   ÚbindingslistÚdeleteÚinsertÚselection_setÚselection_anchorÚ
keybindingr8   r@   r4   r:   r   r   r   Útest_keybinding  s$    
ÿ
ÿzKeysPageTest.test_keybindingc                 C   s´   | 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 rÛ   )r8   rI   r  r  rU   rµ   r   r½   r
   Úbutton_delete_custom_keysr¢   r  r   r¬   r   r   r   Útest_set_keys_type¥  s    zKeysPageTest.test_set_keys_typec                 C   sŽ  | j }| j}tj}tdd }t_tƒ  }|_|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 )NTrñ   r¨   r   r  zcopy - <Control-Shift-Key-C>zKey-ar   rm   r  r7   zMy New Key Setzcopy - <Key-F11>Fz<Key-p>zcopy - <Key-p>)r8   rI   r   ZGetKeysDialogr   Úget_new_keys_nameÚbutton_new_keysr¢   r  r  r  r  r  r  rU   r  rå   r/   rY   r9   r    )r%   r¥   r1   Zorig_getkeysdialogZgkdÚgnknr   r   r   Útest_get_new_keysº  sF    



zKeysPageTest.test_get_new_keysc                 C   s>   t j}tdd }t _| j}d|_|  | d¡d¡ |t _d S )NTrñ   zNew Keysr   )r   rò   r   rI   rå   r8   r!  ró   r   r   r   Útest_get_new_keys_nameê  s    z#KeysPageTest.test_get_new_keys_namec                 C   st   | j }tƒ  }|_|j d¡ d|_|j ¡  d|_d|_|  	|jt
jd ¡ |j ¡  |  |jt
jd ¡ |`d S )NTr   zmy new key setr   r   )rI   r   r!  r  rU   rå   Zbutton_save_custom_keysr/   r9   r¾   r   r   rd   )r%   r1   r#  r   r   r   Útest_save_as_new_key_setô  s    

z%KeysPageTest.test_save_as_new_key_setc                 C   sæ   | j }|j}| dd¡ | dd¡ | dd¡ | d¡ | ¡  | d¡ | ¡  | d¡\}}}}||d 7 }||d 7 }|j	dddd |j	d	||d |j	d
||d |j	d||d |  
| d¡d¡ |  
|j ¡ d¡ d S )Nr   r  r  r7   Úfindr]   rË   ri   rÌ   rh   rl   rm   r   )rI   r  r  r  r5   rb   rn   rK   ro   rc   r8   rY   r"  r¢   )r%   r1   r»   rj   rk   rp   rq   r   r   r   Útest_on_bindingslist_select  s$    

z(KeysPageTest.test_on_bindingslist_selectc                 C   s  | j }| j}|j d¡ |j d¡ d}d}|  |tj¡ | |¡ |t 	dd¡|gƒ |t 
d¡t 
|¡ƒ ||j ¡ |ƒ |  |j ¡ ¡ ||jjdƒ t d|dd	¡ |  |tj¡ | |¡ |t 	dd¡||gƒ |  t 
|¡t 
|¡¡ t d|dd	¡ |t 
|¡t 
|¡ƒ d S )
NTr  zmy new custom key setzmy second custom keysetr‹   r   r7   r  r  )r8   rI   r  rU   rŸ   r¾   r   r   Zcreate_new_key_setrŒ   Ú	GetKeySetr    rY   rZ   r  r9   r   rø   rX   r£   rù   r   r   r   Ú,test_create_new_key_set_and_save_new_key_set  s0    

ÿ
ÿz9KeysPageTest.test_create_new_key_set_and_save_new_key_setc                 C   sV  | j }| j}tƒ  }t_|`|j}| dd¡ | dd¡ | dd¡ ddgdgd	gd
œ|_	t
 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>>r7   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>rm   r   r   r+  )r7   r]   r,  )r]   )r8   rI   r   r   r)  r  r  r  r  rå   r   rø   rY   Zcurselectionr  r  )r%   r¥   r1   Zgksr»   r}   r   r   r   Útest_load_keys_list:  s@    þ






z KeysPageTest.test_load_keys_listc                 C   s2  | j }| j}|j d¡ tƒ  }|_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	 dd¡||gƒ |tjjdƒ |tjjdƒ ||jjdƒ d|_|j ¡  ||jdƒ |  |t¡ |t	 dd¡|gƒ ||j ¡ dƒ ||j ¡ |ƒ |tjjdƒ |tjjdƒ ||jjdƒ |j |¡ d|_|j ¡  ||jdƒ |  |t¡ |t	 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©   Fr7   r‹   r   Tr]   r   rz   r“   r
  )r8   rI   r  r¢   r   r  r   r3   r'   r   r   r£   r@   r  r/   r    rU   rå   r9   rŒ   r  r¾   rY   )r%   r¥   r1   r  Zkeyset_nameZkeyset_name2r   r   r   Útest_delete_custom_keyse  s\    



z$KeysPageTest.test_delete_custom_keysN)r(   r)   r*   rƒ   r„   rN   rP   rR   r  r  r¸   r¿   r  r   r$  r%  r&  r(  r*  r-  r.  r   r   r   r   r    s&   


* 0
+r  c                   @   sd   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚWinPageTestz•Test that general tab widgets enable users to make changes.

    Test that widget actions set vars, that var changes add
    options to changes.
    c                 C   s$   t j }| _t j |¡ | ¡  d S r   )r   ZwinpagerI   r>   r?   rK   rL   r   r   r   rN   §  s    zWinPageTest.setUpClassc                 C   s   t  ¡  d S r   rQ   r$   r   r   r   rR   ­  s    zWinPageTest.setUpc                 C   sl   | j }| j}|j d¡ |j d¡ |j d¡ | ¡  ||j ¡ dƒ ||j ¡ dƒ ||j ¡ dƒ d S )Nr7   r   Z80rt   )r8   rI   Zstartup_editrU   Z	win_widthZ
win_heightZload_windows_cfgrY   r¬   r   r   r   Útest_load_windows_cfg°  s    z!WinPageTest.test_load_windows_cfgc                 C   sN   | j }|j ¡  |  tdddii¡ t ¡  |j ¡  |  tdddii¡ d S )NÚGeneralzeditor-on-startuprS   r   )rI   Zstartup_editor_onr/   r8   r|   r   r   Zstartup_shell_onr:   r   r   r   Útest_startup¼  s    

ÿ

ÿzWinPageTest.test_startupc                 C   sr   | j }|j dd¡ |j dd¡ |  tdddii¡ t ¡  |j dd¡ |j dd¡ |  tdddii¡ d S )Nr   r  Ú11rx   ZheightÚwidth)	rI   Zwin_height_intr  r  r8   r|   r   r   Zwin_width_intr:   r   r   r   Útest_editor_sizeÆ  s    zWinPageTest.test_editor_sizec                 C   s<   | j }|j d¡ |  |j ¡ d¡ |  tdddii¡ d S )Né   Ú6ZIndentz
num-spaces)rI   Zindent_chooserrU   r8   Zindent_spacesrY   r|   r:   r   r   r   Útest_indent_spacesÐ  s    zWinPageTest.test_indent_spacesc                 C   s$   | j j ¡  |  tdddii¡ d S )Nrx   zcursor-blinkr©   )rI   Zcursor_blink_boolr/   r8   r|   r$   r   r   r   Útest_cursor_blinkÖ  s    zWinPageTest.test_cursor_blinkc                 C   s8   | j j dd¡ | j j dd¡ |  tdddii¡ d S )Nr   r  r3  ZAutoCompleteZ	popupwait)rI   Zauto_wait_intr  r  r8   r4   r$   r   r   r   Útest_autocomplete_waitÚ  s    z"WinPageTest.test_autocomplete_waitc                 C   sŒ   | j }| j}|jd  d¡ |tdddiiƒ t ¡  |j dd¡ |j 	dd¡ |tdddiiƒ t ¡  |j
 ¡  |tdd	d
iiƒ d S )NZmenur   Z
ParenMatchrà   Úopenerr  r3  zflash-delayZbellr©   )rI   r8   Zparen_style_typer/   r4   r   r   Zparen_flash_timer  r  Zbell_onr¤   r   r   r   Útest_parenmatchß  s    
zWinPageTest.test_parenmatchc                 C   s8   | j j dd¡ | j j dd¡ |  tdddii¡ d S )Nr   r  r3  ZFormatParagraphz	max-width)rI   Zformat_width_intr  r  r8   r4   r$   r   r   r   Útest_paragraphì  s    zWinPageTest.test_paragraphN)r(   r)   r*   rƒ   r„   rN   rR   r0  r2  r5  r8  r9  r:  r<  r=  r   r   r   r   r/  ¡  s   


r/  c                   @   s<   e Zd ZdZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dS )ÚShedPageTestz’Test that shed tab widgets enable users to make changes.

    Test that widget actions set vars, that var changes add
    options to changes.
    c                 C   s$   t j }| _t j |¡ | ¡  d S r   )r   ZshedpagerI   r>   r?   rK   rL   r   r   r   rN   ø  s    zShedPageTest.setUpClassc                 C   s   t  ¡  d S r   rQ   r$   r   r   r   rR   þ  s    zShedPageTest.setUpc                 C   s4   | j }| j}|j d¡ | ¡  ||j ¡ dƒ d S )Nr7   r   )r8   rI   ÚautosaverU   Zload_shelled_cfgrY   r¬   r   r   r   Útest_load_shelled_cfg  s
    z"ShedPageTest.test_load_shelled_cfgc                 C   sF   | j }|j ¡  |  tdddii¡ |j ¡  |  tdddii¡ d S )Nr1  r?  rS   r   )rI   Zsave_auto_onr/   r8   r|   Zsave_ask_onr:   r   r   r   Útest_autosave	  s
    

zShedPageTest.test_autosavec                 C   s8   | j j dd¡ | j j dd¡ |  tdddii¡ d S )Nr   r  rS   ZCodeContextZmaxlines)rI   Zcontext_intr  r  r8   r4   r$   r   r   r   Útest_context  s    zShedPageTest.test_contextN)
r(   r)   r*   rƒ   r„   rN   rR   r@  rA  rB  r   r   r   r   r>  ò  s   
r>  c                   @   s   e Zd ZdZedd„ ƒZdS )ÚExtPageTestú/Test that the help source list works correctly.c                 C   s   t j}t j |¡ d S r   )r   r4   r>   r?   rL   r   r   r   rN     s    zExtPageTest.setUpClassN)r(   r)   r*   rƒ   r„   rN   r   r   r   r   rC    s   rC  c                   @   sh   e Zd ZdZedd„ ƒZedd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚHelpSourceTestrD  c                 C   sF   t j}t j |¡ |j }| _tƒ  |_|_tƒ  |_	|_
| ¡  d S r   )r   r4   r>   r?   Z
frame_helpÚframer   rU   Úset_add_delete_stateÚupcÚupdate_help_changesrK   )rM   rI   rF  r   r   r   rN   !  s    zHelpSourceTest.setUpClassc                 C   s2   | j }|`|`|`|`|j dd¡ |j ¡  d S )Nr   r  )	rF  rU   rG  rH  rI  Úhelplistr  Úuser_helplistr   )rM   rF  r   r   r   rP   *  s
    zHelpSourceTest.tearDownClassc                 C   s   t  ¡  d S r   rQ   r$   r   r   r   rR   2  s    zHelpSourceTest.setUpc                 C   sb   | j }| j}|j dd¡ ddg|_t dddd¡ | ¡  ||j dd¡d	ƒ ||jd
gƒ d S )Nr  ZbadZworser   Ú	HelpFilesrS   z	name;filer   )r°   )r°   ÚfilerS   )	r8   rF  rJ  r  rK  r   r£   Zload_helplistrY   ©r%   r¥   Úfrr   r   r   Útest_load_helplist5  s    
z!HelpSourceTest.test_load_helplistc                 C   sü   | j }|j|_|j|_|j}d}| |d¡ | |¡ | ¡  | 	|¡ | 
¡  | |¡\}}}}||d 7 }||d 7 }d |j_|j_|jdddd |jd||d |jd||d |jd	||d |  | d
¡d¡ |  |jj¡ |  |jj¡ d S )Nr  Úsourcer]   r   rË   ri   rÌ   rh   rl   rm   )rF  rG  rU   rI  rH  rJ  r  r5   rb   rn   rK   ro   r9   rc   r8   rY   rC   rZ   )r%   rO  rJ  Zdexrj   rk   rp   rq   r   r   r   Útest_source_selected?  s*    

z#HelpSourceTest.test_source_selectedc                 C   s¼   | 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“   rQ  r   )r8   rF  rG  rJ  r  Zbutton_helplist_editr¢   Zbutton_helplist_remover  r  r   )r%   r¥   rO  ZsadÚhr   r   r   Útest_set_add_delete_stateW  s$    
z(HelpSourceTest.test_set_add_delete_statec                 C   sú   | j }tj}tdd }t_| j}|j dd¡ |j ¡  d |j	_
|j_
d|_| ¡  |  t|j dd¡ƒ|j  ko~g kn  ¡ |  |jj
¡ d|_| ¡  d|_| ¡  ||j dd¡dƒ ||jddgƒ ||jj
d	ƒ |  |j	j
¡ |t_d S )
NTrñ   r   r  r   ©Úname1Zfile1©r³   Zfile2)rV  r³   r]   )r8   r   Ú
HelpSourcer   rF  rJ  r  rK  r   rU   r9   rH  rå   Zhelplist_item_addrC   ÚlistrY   rZ   ©r%   r¥   Zorig_helpsourcerÏ   rO  r   r   r   Útest_helplist_item_addo  s0    
ÿÿz%HelpSourceTest.test_helplist_item_addc                 C   s*  | j }tj}tdd }t_| j}|j dd¡ |j dd¡ |j d¡ |j 	d¡ |j
 ¡  |j
 d¡ d |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  kodkn  ¡ |t_d S )NTrñ   r   r  rV  rU  r   )rV  rW  )r³   r7   )r8   r   rX  r   rF  rJ  r  r  r  r  rK  r   ÚappendrU   r9   rH  rå   Zhelplist_item_editrY   rZ   rC   rZ  r   r   r   Útest_helplist_item_edit‹  s0    
(z&HelpSourceTest.test_helplist_item_editc                 C   s¸   | j }| j}|j dd¡ |j dd¡ |j d¡ |j d¡ |j ¡  |j 	d¡ d |j
_|j_| ¡  ||j dd¡dƒ ||jg ƒ |  |jj|j
j  ko¬dkn  ¡ d S )Nr   r  rV  rU  r   r7   )r8   rF  rJ  r  r  r  r  rK  r   r\  rU   r9   rH  Zhelplist_item_removerY   rC   rN  r   r   r   Útest_helplist_item_remove©  s    
z(HelpSourceTest.test_helplist_item_removec                 C   sV   | j }|`|j ¡  |j d¡ |j d¡ | ¡  |  td dddœ¡ tƒ |_d S )NrU  rW  rL  zname1;file1zname2;file2)rS   Ú2)rF  rI  rK  r   r\  r8   r|   r   )r%   rO  r   r   r   Útest_update_help_changes¹  s    

ÿz'HelpSourceTest.test_update_help_changesN)r(   r)   r*   rƒ   r„   rN   rP   rR   rP  rR  rT  r[  r]  r^  r`  r   r   r   r   rE    s   


rE  c                   @   sd   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚVarTraceTestc                 C   s"   t  ¡ | _ttƒ| _ttƒ| _d S r   )r   ZVarTracer   r   r   Úivr	   ÚbvrO   r   r   r   rN   È  s    

zVarTraceTest.setUpClassc                 C   s   | ` | `| `d S r   )r   rb  rc  rO   r   r   r   rP   Î  s    zVarTraceTest.tearDownClassc                 C   s   | j  ¡  d| _d S rÅ   )r   r   r9   r$   r   r   r   rR   Ò  s    
zVarTraceTest.setUpc                 G   s   |  j d7  _ d S )Né   )r9   ©r%   Úparamsr   r   r   Úvar_changed_incrementÖ  s    z"VarTraceTest.var_changed_incrementc                 G   s   d S r   r   re  r   r   r   Úvar_changed_booleanÙ  s    z VarTraceTest.var_changed_booleanc                 C   s.   | j }| ¡  |  |jg ¡ |  |jg ¡ d S r   )r   Ú__init__r8   ÚuntracedÚtraced©r%   Útrr   r   r   Ú	test_initÜ  s    zVarTraceTest.test_initc                 C   sF   | j }|j d¡ |j d¡ | ¡  |  |jg ¡ |  |jg ¡ d S )Nr   r7   )r   rj  r\  rk  r   r8   rl  r   r   r   Ú
test_clearâ  s    zVarTraceTest.test_clearc           	      C   sÌ   | j }tƒ }tj|d }|_| | 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Úaddrb  rg  ZassertIsrc  rh  r   r   r0   Zassert_called_withr8   rk  rj  )	r%   rm  ÚfuncÚcbrb  rc  ÚsvZsv2r}   r   r   r   Útest_addê  s&    þzVarTraceTest.test_addc                 C   st   | j  | jd¡}|  t|ƒ¡ | j d¡ |  dtd ¡ |ƒ  |  dtd ¡ |  	td d d d¡ t 
¡  d S )Nrp  é*   r   r   r–   Z42)r   rq  rb  rC   ÚcallablerU   r¾   r   rd   r8   r   )r%   rt  r   r   r   Útest_make_callback  s    zVarTraceTest.test_make_callbackc                 C   sò   | 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 )Nr7   rd  r   )r   rr  rb  rg  rc  rh  r[   r8   rj  ZassertCountEqualrk  rU   rY   r9   r   )r%   rm  rb  rc  r}   r   r   r   Útest_attach_detach  s,    ÿ


zVarTraceTest.test_attach_detachN)r(   r)   r*   r„   rN   rP   rR   rg  rh  rn  ro  rv  ry  rz  r   r   r   r   ra  Æ  s   

ra  Ú__main__r]   )Ú	verbosity).rƒ   Zidlelibr   Ztest.supportr   Zunittestr   Zidlelib.idle_test.mock_idler   Útkinterr   r   r   r	   r
   r   r   Zidlelib.configdialogr   r   r   r   r   ZIdleUserConfParserr   r   r   r|   r†   r@   r4   r   r"   ZTestCaser#   r+   rH   r…   r  r/  r>  rC  rE  ra  r(   r   r   r   r   r   Ú<module>   sX    ü	+        Q% (h
