<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    „ fNÔ  ã               @   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)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   úH/opt/alt/python37/lib64/python3.7/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 )Nr   )Úselfr   r   r   Útest_deactivate_current_config7   s    z/ConfigDialogTest.test_deactivate_current_configc             C   s   d S )Nr   )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   sd   t }t ¡  }|_t ¡  }|_t ¡  }|_|jd  ¡  | ¡  | ¡  | ¡  |`|`|`d S )NZApply)	r   r   r*   Údeactivate_current_configZsave_all_changed_extensionsr%   r,   r-   r.   )r#   r/   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#   r/   r   r   r   Útest_click_cancelU   s    zButtonTest.test_click_cancelc          	   C   sz   t j t j¡ tjjtdtd*}t j	d  
¡  |jd |jd  }}W d Q R X |  |d¡ |  | d¡or| 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-   Úkwdsr5   Ú
assertTrueÚ
startswithÚendswith)r#   Zviewr8   r9   r   r   r   Útest_click_help^   s    

 zButtonTest.test_click_helpN)r&   r'   r(   r0   r3   r7   rB   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 )N)r   ÚfontpageÚpager:   r;   r   Úset_samplesÚupdate)ÚclsrE   r   r   r   Ú
setUpClassp   s    zFontPageTest.setUpClassc             C   s
   | j `d S )N)rE   rF   )rH   r   r   r   ÚtearDownClassw   s    zFontPageTest.tearDownClassc             C   s   t  ¡  d S )N)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   r4   )r   r   rE   Ú	font_nameÚsetÚ	font_sizeÚ	font_boldrF   r6   Zload_font_cfgÚassertNotEqualÚgetÚassertFalser5   Úattach)r#   r/   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é   zneed at least 2 fontsr   Zactivez
<Key-Down>z<KeyRelease-Down>z<Key-Up>z<KeyRelease-Up>)rE   ÚfontlistÚsizeÚskipTestr2   rR   Úfocus_forcerG   Úevent_generaterQ   ÚassertInrM   Úlowerr5   )r#   r/   rW   Ú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 )	NrV   zneed at least 2 fontsr   r4   z
<Button-1>)ÚxÚyz<ButtonRelease-1>Úanchor)rE   rW   rX   rY   r2   rZ   ÚseerG   Úbboxr[   rR   r5   r\   rM   r]   )	r#   r/   rW   r`   ra   Ú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)rE   ZsizelistZvariablerN   r5   rO   rR   )r#   r/   r   r   r   Útest_sizelistÂ   s    zFontPageTest.test_sizelistc             C   sJ   | j }|j d¡ |j ¡  |  |j ¡ ¡ |j ¡  |  |j ¡ ¡ d S )NF)rE   rP   rN   Zbold_toggler-   r?   rR   rS   )r#   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   ÚEditorWindowr4   rV   Úboldr   z	Test Font)r^   z	font-sizez	font-boldZ20é   )r   ZGetFontr   ÚstrrE   rO   rN   rP   rF   r6   rM   r5   Úmainpager   r   )r#   Zdefault_fontZdefault_sizeZdefault_boldr/   Úexpectedr   r   r   Útest_font_setÑ   s6    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Ú5r4   r^   )rs   rt   rm   )
rE   rF   Zfont_sampleÚhighlight_samplerM   rN   rO   rP   r?   r   )r#   r/   Zorig_samplesrq   r   r   r   Útest_set_samplesõ   s    "zFontPageTest.test_set_samplesN)r&   r'   r(   Ú__doc__ÚclassmethodrI   rJ   rK   rU   r_   rg   rj   rk   rr   rv   r   r   r   r   rC   i   s   	$rC   c               @   s(   e Zd Zedd„ ƒZdd„ Zdd„ ZdS )Ú
IndentTestc             C   s   t j| _| j ¡  d S )N)r   rD   rE   rG   )rH   r   r   r   rI   	  s    zIndentTest.setUpClassc             C   s0   | j }|j d¡ | ¡  |  |j ¡ d¡ d S )Né   é   )rE   Ú	space_numrN   Zload_tab_cfgr5   rR   )r#   r/   r   r   r   Útest_load_tab_cfg  s    zIndentTest.test_load_tab_cfgc             C   sD   | j }t ¡  |j d¡ |  |j ¡ d¡ |  tdddii¡ d S )Né   rz   ZIndentz
num-spacesZ16)	rE   r   r   Zindent_scalerN   r5   r|   rR   rp   )r#   r/   r   r   r   Útest_indent_scale  s
    zIndentTest.test_indent_scaleN)r&   r'   r(   rx   rI   r}   r   r   r   r   r   ry     s   ry   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 )N)r   ÚhighpagerE   r:   r;   r   Úset_theme_typeÚpaint_theme_sampleÚset_highlight_targetÚset_color_samplerG   )rH   rE   r   r   r   rI   #  s    zHighPageTest.setUpClassc             C   s   | j }|`|`|`|`d S )N)rE   r‚   rƒ   r„   r…   )rH   r/   r   r   r   rJ   -  s    zHighPageTest.tearDownClassc             C   sX   | j }x$t dd¡D ]}tjd  |¡ qW t ¡  d|j_d|j	_d|j
_d|j_d S )NÚuserr   r   )rE   r   ÚGetSectionListr   Úremove_sectionr   r   r‚   r6   rƒ   r„   r…   )r#   r/   Úsectionr   r   r   rK   3  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 )NzIDLE Classic)Úreturn_valuez- no custom themes -)Údisabledr4   r   Útest1ÚoptionÚvalueÚtest2Úoption2Úvalue2rV   r   ÚThemeÚdefaultÚ0rn   )r   r   rE   r5   r   r*   r   ZCurrentThemeZload_theme_cfgr?   Útheme_sourcerR   Úbuiltin_nameÚcustom_nameÚcustom_theme_onÚstater‚   r6   rƒ   r„   Ú	SetOptionrS   rT   )r#   r/   Ú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“   ÚTruer4   r   )z	!disabledÚFalse)r5   rE   r   Úvar_changed_builtin_nameÚvar_changed_custom_nameZbuiltin_theme_onr-   rp   r6   r   r   r˜   r™   )r#   r›   r/   r   r   r   Útest_theme_sourceh  s    

zHighPageTest.test_theme_sourcec             C   s  | j }| j}dddg}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 )NzIDLE Classicz	IDLE DarkzIDLE Newr   r’   ÚnameÚspam)r¢   Úname2ÚtextzNew theme, see Helpr4   r¤   rV   r   rn   )r5   rE   r   rš   ÚbuiltinlistÚSetMenurp   Ztheme_messagerƒ   r6   r   r   )r#   r›   r/   Ú	item_listr   r   r   Útest_builtin_name}  s(    
zHighPageTest.test_builtin_namec             C   st   | j }|j g d¡ |  dt¡ |  |jjd¡ t 	¡  |j dddgd¡ |  tdddii¡ |  |jjd¡ d S )	Nz- no custom themes -r’   r   ÚaÚbÚcr¢   r4   )
rE   Ú
customlistr§   ÚassertNotInrp   r5   rƒ   r6   r   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greenr4   )rE   r   Zon_new_color_setÚcolorrN   r5   r6   )r#   r/   r   r   r   Ú
test_color§  s
    zHighPageTest.test_colorc             C   sB   | j }| j}|j dddgd¡ ||j ¡ dƒ ||jjdƒ d S )Nrª   r«   r¬   r4   )r5   rE   Z
targetlistr§   Úhighlight_targetrR   r„   r6   )r#   r›   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„}||ƒ x`ˆ ¡ D ]T}xNˆ |¡dd d… D ]6}|d7 }||ƒ |ˆ j 	¡ || ƒ |ˆ j
j|ƒ qxW q^W d S )	Nr   g      ð?c                s(   x"ˆ j  ¡ D ]\}}|| |d < qW d S )Nr   )Ztheme_elementsÚitems)ÚelemZelementÚtag)r/   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 )NrV   z<Enter>r   )r`   ra   z<Motion>z<ButtonPress-1>z<ButtonRelease-1>)rd   r[   )Ústartr`   ra   re   rf   )Úhsr   r   Úclick_itÈ  s    z?HighPageTest.test_highlight_target_text_mouse.<locals>.click_itrV   r4   )r5   rE   ru   rZ   rc   r   Z	tag_namesÚ
tag_rangesr²   rR   r„   r6   )r#   r›   rµ   Úcountr·   rº   r¶   Zstart_indexr   )r/   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 x0tdƒD ]$}|jdddd |jdddd qVW || d	¡d
ƒ d S )Ng      ð?z<Enter>r   )r`   ra   z<Motion>rV   z<ButtonPress-1>z<ButtonRelease-1>Úselr   )	r5   rE   ru   rZ   rc   r   r[   Úranger»   )r#   r›   r/   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 )Ng      ð?z1.0z<Leave>z<Enter>z<Motion>)r`   ra   z<ButtonPress-1>z<B1-Motion>z<ButtonRelease-1>r¾   r   )	r5   rE   ru   rZ   rc   r   Z	dlineinfor[   r»   )	r#   r›   r/   r¹   r`   ra   re   rf   Ú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   )r5   rE   r‚   r•   rN   r¦   r   r­   r
   Úbutton_delete_customr™   r˜   r   )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@g        g        z#de0000Tr4   zMy New Themez#de0000F)r5   rE   r   ZtkColorChooserZaskcolorr   Úget_new_theme_namer²   rN   r°   ÚresultZbutton_set_colorr-   rR   rÇ   ÚlookupÚframe_color_setr•   r6   r—   )r#   r›   r/   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ÚPythonzSelected TextTrÇ   rÈ   ÚhiliteÚ
foregroundzhilite-foreground)rE   r—   rN   r²   Úfg_bg_toggler°   r5   rÇ   rË   rÌ   ru   Útag_cgetr   )r#   r/   r°   r   r   r   Útest_on_new_color_setK  s    z"HighPageTest.test_on_new_color_setc             C   s>   t j}tdd }t _| j}d|_|  | d¡d¡ |t _d S )NT)Úreturn_selfz	New Themer   )r   ÚSectionNamer   rE   rÊ   r5   rÉ   )r#   Úorig_sectionnameÚsnr/   r   r   r   Útest_get_new_theme_nameX  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   )rE   r   rÉ   r•   rN   rÊ   Zbutton_save_customr-   r®   r   r   r6   r\   )r#   r/   rÍ   r   r   r   Útest_save_as_new_themeb  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 )NTzIDLE Classiczmy new custom themezmy second custom themer†   r   r“   r4   zhit-backgroundÚyellow)r5   rE   r•   rN   r–   r®   r   r   Ú
create_newr‡   ZGetThemeDictr—   rR   rS   r‚   r6   r   Ú
add_optionrQ   rš   )r#   r›   r/   Ú	first_newÚ
second_newr   r   r   Útest_create_new_and_save_newu  s.    

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‹   r4   ÚComment)rÄ   r   rV   )r5   rE   r„   r²   rN   Úfg_onr™   Úbg_onr?   rÒ   r…   r6   r   )r#   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 )Nr4   rV   )rE   r…   râ   r-   r5   r6   rã   )r#   r/   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 )NzSelected TextTrÇ   rÈ   rÐ   rÑ   )rE   r…   r²   rN   rÒ   r5   rÇ   rË   rÌ   ru   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œ}x&| ¡ D ]\}}|  |d|ƒ|¡ qhW ||jjd	ƒ x(| ¡ D ]\}}t d
|d| |¡ qžW | ¡  x$| ¡ D ]\}}||d|ƒ|ƒ qÐW ||jjdƒ tƒ |_d S )NTz	IDLE Darkz	IDLE Testr   ZbluerÛ   )rÑ   rÈ   Zconsoler4   r   zconsole-rV   )r5   rE   rƒ   ru   rÓ   r   ZGetHighlightr•   rN   r–   rÜ   r…   r6   r´   rQ   r   rÝ   r   )	r#   r›   rE   Zhs_tagZghZthemeZnew_consoleÚkeyrŽ   r   r   r   Útest_paint_theme_sample¿  s.    
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 )N)z	!disabledz
spam themer   r¢   rŽ   r   r   zother themerž   Fr4   r†   r   TrV   r   rn   )r‹   z- no custom themes -)r5   rE   rÅ   r™   r   Úaskyesnor   r1   r%   r   r   rš   r   r˜   r-   r—   rN   rÊ   r6   r‡   r‚   r®   rR   )r#   r›   r/   ÚyesnoZ
theme_nameZtheme_name2r   r   r   Útest_delete_customß  s\    



zHighPageTest.test_delete_customN)r&   r'   r(   rw   rx   rI   rJ   rK   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€     s0   
)	%/
 
 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 )N)r   r<   rE   r:   r;   r   Úset_keys_typeÚload_keys_list)rH   rE   r   r   r   rI   "  s    zKeysPageTest.setUpClassc             C   s   | j }|`|`d S )N)rE   rí   rî   )rH   rE   r   r   r   rJ   )  s    zKeysPageTest.tearDownClassc             C   sH   | j }x$t dd¡D ]}tjd  |¡ qW t ¡  d|j_d|j	_d S )Nr†   r   r   )
rE   r   r‡   r   rˆ   r   r   rí   r6   rî   )r#   r/   r‰   r   r   r   rK   .  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 )NzIDLE Classic OSX)rŠ   z- no custom keys -)r‹   r4   )zIDLE Classic OSXr   rŒ   r   rŽ   r   r   r‘   rV   zIDLE Modern Unixr   ÚKeysr“   r”   rn   )r   )r   r   rE   r5   r   r*   r   ZCurrentKeysZload_key_cfgr?   Úkeyset_sourcerR   r–   r—   Úcustom_keyset_onr™   rí   r6   rî   Úargsrš   Zdefault_keysrS   rT   )r#   r/   r›   r   r   r   Útest_load_key_cfg8  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   r4   r   )z	!disabledrž   )r5   rE   r   rŸ   r    Zbuiltin_keyset_onr-   rp   r6   r   r   rñ   r™   )r#   r›   r/   r   r   r   Útest_keyset_sourceb  s    

zKeysPageTest.test_keyset_sourcec             C   s2  | j }| j}tjd  d¡ dddg}|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ï   zIDLE Classic WindowszIDLE Classic OSXzIDLE Modern UNIX)r¢   r¤   r¥   zNew key set, see Helpr4   )zIDLE Modern UNIXr¢   zIDLE Classic Unixr¤   rV   r   rn   )zIDLE Classic OSX)r5   rE   r   r   rˆ   r¦   r§   rp   Zkeys_messagerî   r6   rò   r   r   rš   )r#   r›   r/   r¨   r   r   r   r©   w  s0    zKeysPageTest.test_builtin_namec             C   st   | j }|j g d¡ |  dt¡ |  |jjd¡ t 	¡  |j dddgd¡ |  tdddii¡ |  |jjd¡ d S )	Nz- no custom keys -rï   r   rª   r«   r¬   r¢   r4   )
rE   r­   r§   r®   rp   r5   rî   r6   r   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ZzDummyZenabler   zmy custom keysr   ÚendÚcopyr4   zz-inz	<Key-F11>ZZzDummy_cfgBindings)r   rš   rE   r—   rN   ÚbindingslistÚdeleteÚinsertÚselection_setÚselection_anchorÚ
keybindingr5   r<   Úextpage)r#   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 )NTr™   )r‹   F)rÄ   r   )r5   rE   rí   rð   rN   r¦   r   r­   r
   Úbutton_delete_custom_keysr™   rñ   r   )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 )NT)rÕ   )z	!disabledr   rõ   zcopy - <Control-Shift-Key-C>zKey-ar   rb   z	<Key-F11>r4   zMy New Key Setzcopy - <Key-F11>Fz<Key-p>zcopy - <Key-p>)r5   rE   r   ZGetKeysDialogr   Úget_new_keys_nameÚbutton_new_keysr™   r÷   rø   rù   rú   rû   rü   rN   rð   rÊ   r-   rR   r6   r—   )r#   r›   r/   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 )NT)rÕ   zNew Keysr   )r   rÖ   r   rE   rÊ   r5   r  )r#   r×   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   )rE   r   r  rð   rN   rÊ   Zbutton_save_custom_keysr-   r6   r®   r   r   r\   )r#   r/   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ö   r4   ÚfindrV   z<Enter>)r`   ra   z<Motion>z
<Button-1>z<ButtonRelease-1>rb   r   )rE   r÷   rø   rù   r2   rZ   rc   rG   rd   r[   r5   rR   r  r™   )r#   r/   r«   r`   ra   re   rf   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 )
NTzIDLE Classic Windowszmy new custom key setzmy second custom keysetr†   r   r4   rö   z	<Key-F11>)r5   rE   rð   rN   r–   r®   r   r   Zcreate_new_key_setr‡   Ú	GetKeySetr—   rR   rS   rí   r6   r   rÝ   rQ   rš   )r#   r›   r/   rÞ   rß   r   r   r   Ú,test_create_new_key_set_and_save_new_key_set0  s,    


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>>r4   z<<help>>z<Control-Key-c>z<Control-Key-C>z<Control-Key-space>z	<Key-F11>)z<<copy>>z<<force-open-completions>>z<<spam>>r   zmy keysr£   z<Shift-Key-a>)z&copy - <Control-Key-c> <Control-Key-C>z,force-open-completions - <Control-Key-space>zspam - <Shift-Key-a>rb   r   r   z,force-open-completions - <Control-Key-space>)r4   rV   zspam - <Shift-Key-a>)rV   )r5   rE   r   r   r	  rî   r÷   rø   rù   rÊ   r   rÝ   rR   Zcurselectionrú   rû   )r#   r›   r/   Zgksr«   rq   r   r   r   Útest_load_keys_listO  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 )N)z	!disabledzspam key setr   r¢   rŽ   r   r   zother key setrž   Fr4   r†   r   TrV   r   rn   )r‹   z- no custom keys -)r5   rE   rÿ   r™   r   ré   r   r1   r%   r   r   rš   r<   rñ   r-   r—   rN   rÊ   r6   r‡   rí   r®   rR   )r#   r›   r/   rê   Zkeyset_nameZkeyset_name2r   r   r   Útest_delete_custom_keysz  s\    



z$KeysPageTest.test_delete_custom_keysN)r&   r'   r(   rw   rx   rI   rJ   rK   ró   rô   r©   r¯   rþ   r   r  r  r  r  r
  r  r  r   r   r   r   rì     s"   
* 0
+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"d#„ Zd$d%„ Zd&S )'ÚGenPageTestz·Test that general tab widgets enable users to make changes.

    Test that widget actions set vars, that var changes add
    options to changes and that helplist works correctly.
    c             C   s@   t j }| _t j |¡ tƒ  |_|_tƒ  |_|_	| 
¡  d S )N)r   ZgenpagerE   r:   r;   r   rN   Úset_add_delete_stateÚupcÚupdate_help_changesrG   )rH   rE   r   r   r   rI   ¼  s
    zGenPageTest.setUpClassc             C   s2   | j }|`|`|`|`|j dd¡ |j ¡  d S )Nr   rõ   )	rE   rN   r  r  r  Úhelplistrø   Úuser_helplistr   )rH   rE   r   r   r   rJ   Ä  s
    zGenPageTest.tearDownClassc             C   s   t  ¡  d S )N)r   r   )r#   r   r   r   rK   Ì  s    zGenPageTest.setUpc             C   sÒ   | j }| j}|j d¡ |j d¡ |j d¡ |j d¡ |j dd¡ ddg|_	t
 dddd¡ | ¡  ||j ¡ d	ƒ ||j ¡ d	ƒ ||j ¡ d
ƒ ||j ¡ dƒ ||j d	d¡dƒ ||j	dgƒ d S )Nr4   rõ   ZbadZworser   Ú	HelpFilesrL   z	name;filer   Z80ri   )r¢   )r¢   ÚfilerL   )r5   rE   Zstartup_editrN   ÚautosaveZ	win_widthZ
win_heightr  rù   r  r   rš   Zload_general_cfgrR   )r#   r›   r/   r   r   r   Útest_load_general_cfgÏ  s     
z!GenPageTest.test_load_general_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-startuprL   r”   )rE   Zstartup_editor_onr-   r5   rp   r   r   Zstartup_shell_on)r#   r/   r   r   r   Útest_startupâ  s    

zGenPageTest.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õ   Ú11rl   ZheightÚwidth)	rE   Zwin_height_intrø   rù   r5   rp   r   r   Zwin_width_int)r#   r/   r   r   r   Útest_editor_sizeì  s    zGenPageTest.test_editor_sizec             C   s$   | j j ¡  |  tdddii¡ d S )Nrl   zcursor-blinkrž   )rE   Zcursor_blink_boolr-   r5   rp   )r#   r   r   r   Útest_cursor_blinkö  s    zGenPageTest.test_cursor_blinkc             C   s8   | j j dd¡ | j j dd¡ |  tdddii¡ d S )Nr   rõ   r  ZAutoCompleteZ	popupwait)rE   Zauto_wait_intrø   rù   r5   rý   )r#   r   r   r   Útest_autocomplete_waitú  s    z"GenPageTest.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õ   r  zflash-delayZbellrž   )rE   r5   Zparen_style_typer-   rý   r   r   Zparen_flash_timerø   rù   Zbell_on)r#   r/   r›   r   r   r   Útest_parenmatchÿ  s    
zGenPageTest.test_parenmatchc             C   sF   | j }|j ¡  |  tdddii¡ |j ¡  |  tdddii¡ d S )Nr  r  rL   r”   )rE   Zsave_auto_onr-   r5   rp   Zsave_ask_on)r#   r/   r   r   r   Útest_autosave  s
    

zGenPageTest.test_autosavec             C   s8   | j j dd¡ | j j dd¡ |  tdddii¡ d S )Nr   rõ   r  ZFormatParagraphz	max-width)rE   Zformat_width_intrø   rù   r5   rý   )r#   r   r   r   Útest_paragraph  s    zGenPageTest.test_paragraphc             C   s8   | j j dd¡ | j j dd¡ |  tdddii¡ d S )Nr   rõ   rL   ZCodeContextZmaxlines)rE   Zcontext_intrø   rù   r5   rý   )r#   r   r   r   Útest_context  s    zGenPageTest.test_contextc             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õ   ÚsourcerV   r   z<Enter>)r`   ra   z<Motion>z
<Button-1>z<ButtonRelease-1>rb   )rE   r  rN   r  r  r  rù   r2   rZ   rc   rG   rd   r6   r[   r5   rR   r?   rS   )r#   r/   r  Zdexr`   ra   re   rf   r   r   r   Útest_source_selected  s*    

z GenPageTest.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‹   r#  r   )r5   rE   r  r  rø   Zbutton_helplist_editr™   Zbutton_helplist_removerù   rú   r   )r#   r›   r/   ZsadÚhr   r   r   Útest_set_add_delete_state5  s$    
z%GenPageTest.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 )
NT)rÕ   r   rõ   r   )Úname1Úfile1)r¤   Úfile2)r'  r¤   rV   )r5   r   Ú
HelpSourcer   rE   r  rø   r  r   rN   r6   r  rÊ   Zhelplist_item_addr?   ÚlistrR   rS   )r#   r›   Úorig_helpsourcer¹   r/   r   r   r   Útest_helplist_item_addM  s*    
z"GenPageTest.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 )NT)rÕ   r   rõ   r'  )r'  r(  r   )r'  )r¤   r)  )r¤   r4   )r5   r   r*  r   rE   r  rø   rù   rú   rû   r  r   ÚappendrN   r6   r  rÊ   Zhelplist_item_editrR   rS   r?   )r#   r›   r,  r¹   r/   r   r   r   Útest_helplist_item_editi  s0    
(z#GenPageTest.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õ   r'  )r'  r(  r   r4   )r5   rE   r  rø   rù   rú   rû   r  r   r.  rN   r6   r  Zhelplist_item_removerR   r?   )r#   r›   r/   r   r   r   Útest_helplist_item_remove‡  s    
z%GenPageTest.test_helplist_item_removec             C   sV   | j }|`|j ¡  |j d¡ |j d¡ | ¡  |  td dddœ¡ tƒ |_d S )N)r'  r(  )r¤   r)  r  zname1;file1zname2;file2)rL   Ú2)rE   r  r  r   r.  r5   rp   r   )r#   r/   r   r   r   Útest_update_help_changes—  s    

z$GenPageTest.test_update_help_changesN)r&   r'   r(   rw   rx   rI   rJ   rK   r  r  r  r  r  r  r   r!  r"  r$  r&  r-  r/  r0  r2  r   r   r   r   r  ¶  s&   

r  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 )N)r   ZVarTracer   r   r   Úivr	   Úbv)rH   r   r   r   rI   ¦  s    

zVarTraceTest.setUpClassc             C   s   | ` | `| `d S )N)r   r4  r5  )rH   r   r   r   rJ   ¬  s    zVarTraceTest.tearDownClassc             C   s   | j  ¡  d| _d S )Nr   )r   r   r6   )r#   r   r   r   rK   °  s    
zVarTraceTest.setUpc             G   s   |  j d7  _ d S )Né   )r6   )r#   Úparamsr   r   r   Úvar_changed_increment´  s    z"VarTraceTest.var_changed_incrementc             G   s   d S )Nr   )r#   r7  r   r   r   Úvar_changed_boolean·  s    z VarTraceTest.var_changed_booleanc             C   s.   | j }| ¡  |  |jg ¡ |  |jg ¡ d S )N)r   Ú__init__r5   Ú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   r4   )r   r;  r.  r<  r   r5   )r#   r=  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 )N)rŠ   )r   r‰   r   )r   r   r   r*   Úmake_callbackÚaddr4  r8  ZassertIsr5  r9  r   r   r.   Zassert_called_withr5   r<  r;  )	r#   r=  ÚfuncÚcbr4  r5  ZsvZsv2rq   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 )N)r   r‰   r   é*   r‰   r   r   Z42)r   r@  r4  r?   ÚcallablerN   r®   r   r\   r5   r   )r#   rC  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 )Nr4   r6  r   )r   rA  r4  r8  r5  r9  rT   r5   r;  ZassertCountEqualr<  rN   rR   r6   r   )r#   r=  r4  r5  rq   r   r   r   Útest_attach_detachì  s*    


zVarTraceTest.test_attach_detachN)r&   r'   r(   rx   rI   rJ   rK   r8  r9  r>  r?  rD  rG  rH  r   r   r   r   r3  ¤  s   r3  Ú__main__rV   )Ú	verbosity),rw   Zidlelibr   Ztest.supportr   Zunittestr   Zidlelib.idle_test.mock_idler   Ztkinterr   r   r   r	   r
   r   r   Zidlelib.configdialogr   r   r   r   r   ZIdleUserConfParserr   r   r   rp   r   r<   rý   r   r!   ZTestCaser"   r)   rC   ry   r€   rì   r  r3  r&   r   r   r   r   r   Ú<module>   sR    	+         oh
