B
    Ûö›\gÂ  ã               @   sn  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'e(d!krje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   ú4lib/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_idletasksZdestroyr   r   r   r   r   ÚtearDownModule(   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ÚpageÚnoteÚselectr   Úset_samplesÚupdate)Úclsr#   r   r   r   Ú
setUpClass:   s    zFontPageTest.setUpClassc             C   s
   | j `d S )N)r#   r&   )r(   r   r   r   ÚtearDownClassA   s    zFontPageTest.tearDownClassc             C   s   t  ¡  d S )N)r   r   )Úselfr   r   r   ÚsetUpE   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   é   )r   r   r#   Ú	font_nameÚsetÚ	font_sizeÚ	font_boldr&   ÚcalledZload_font_cfgÚassertNotEqualÚgetÚassertFalseÚassertEqualÚattach)r+   Údr   r   r   Útest_load_font_cfgH   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>)r#   ÚfontlistÚsizeÚskipTestÚactivater5   Úfocus_forcer'   Úevent_generater4   ÚassertInr/   Úlowerr7   )r+   r9   r<   ÚfontZ	down_fontZup_fontr   r   r   Útest_fontlist_keyX   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;   zneed at least 2 fontsr   r.   z
<Button-1>)ÚxÚyz<ButtonRelease-1>Úanchor)r#   r<   r=   r>   r?   r@   Úseer'   ÚbboxrA   r5   r7   rB   r/   rC   )	r+   r9   r<   rF   rG   ÚdxÚdyZfont1Zselect_fontr   r   r   Útest_fontlist_mouseu   s"    




z FontPageTest.test_fontlist_mousec             C   s*   | j }|jj d¡ |  |j ¡ d¡ d S )Né(   Ú40)r#   ZsizelistZvariabler0   r7   r1   r5   )r+   r9   r   r   r   Útest_sizelistŒ   s    zFontPageTest.test_sizelistc             C   sJ   | j }|j d¡ |j ¡  |  |j ¡ ¡ |j ¡  |  |j ¡ ¡ d S )NF)r#   r2   r0   Zbold_toggleÚinvokeÚ
assertTruer5   r6   )r+   r9   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   ÚEditorWindowr.   r;   Úboldr   z	Test Font)rD   z	font-sizez	font-boldZ20é   )r   ZGetFontr   Ústrr#   r1   r0   r2   r&   r3   r/   r7   Úmainpager   r   )r+   Zdefault_fontZdefault_sizeZdefault_boldr9   Ú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Ú5r.   rD   )r[   r\   rU   )
r#   r&   Zfont_sampleÚhighlight_sampler/   r0   r1   r2   rR   r   )r+   r9   Zorig_samplesrY   r   r   r   Útest_set_samples¿   s    "zFontPageTest.test_set_samplesN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr)   r*   r,   r:   rE   rM   rP   rS   rZ   r^   r   r   r   r   r!   3   s   	$r!   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   r"   r#   r'   )r(   r   r   r   r)   Ó   s    zIndentTest.setUpClassc             C   s0   | j }|j d¡ | ¡  |  |j ¡ d¡ d S )Né   é   )r#   Ú	space_numr0   Zload_tab_cfgr7   r5   )r+   r9   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é   re   ZIndentz
num-spacesZ16)	r#   r   r   Zindent_scaler0   r7   rg   r5   rX   )r+   r9   r   r   r   Útest_indent_scaleÞ   s
    zIndentTest.test_indent_scaleN)r_   r`   ra   rc   r)   rh   rj   r   r   r   r   rd   Ñ   s   rd   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,S )-Ú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   Úhighpager#   r$   r%   r   Úset_theme_typeÚpaint_theme_sampleÚset_highlight_targetÚset_color_sampler'   )r(   r#   r   r   r   r)   í   s    zHighPageTest.setUpClassc             C   s   | j }|`|`|`|`d S )N)r#   rm   rn   ro   rp   )r(   r9   r   r   r   r*   ÷   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   )r#   r   ÚGetSectionListr   Úremove_sectionr   r   rm   r3   rn   ro   rp   )r+   r9   Úsectionr   r   r   r,   ý   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 -)Údisabledr.   r   Útest1ÚoptionÚvalueÚtest2Úoption2Úvalue2r;   r   ÚThemeÚdefaultÚ0rV   )r   r   r#   r7   r   ÚMockr   ZCurrentThemeZload_theme_cfgrR   Útheme_sourcer5   Úbuiltin_nameÚcustom_nameÚcustom_theme_onÚstaterm   r3   rn   ro   Ú	SetOptionr6   r8   )r+   r9   Ú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~   ÚTruer.   r   )z	!disabledÚFalse)r7   r#   r   Úvar_changed_builtin_nameÚvar_changed_custom_nameZbuiltin_theme_onrQ   rX   r3   r   r   r„   r…   )r+   r‡   r9   r   r   r   Útest_theme_source2  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 Helpr.   r   r;   r   rV   )r7   r#   r   r†   ÚbuiltinlistÚSetMenurX   Ztheme_messagern   r3   r   r   )r+   r‡   r9   Ú	item_listr   r   r   Útest_builtin_nameG  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Ž   r.   )
r#   Ú
customlistr“   ÚassertNotInrX   r7   rn   r3   r   r   )r+   r9   r   r   r   Útest_custom_namec  s    zHighPageTest.test_custom_namec             C   s2   | j }tƒ |_|j d¡ |  |jjd¡ |`d S )NZgreenr.   )r#   r   Zon_new_color_setÚcolorr0   r7   r3   )r+   r9   r   r   r   Ú
test_colorq  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˜   r.   )r7   r#   Z
targetlistr“   Úhighlight_targetr5   ro   r3   )r+   r‡   r9   r   r   r   Ú test_highlight_target_list_mousey  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)ÚelemÚelementÚtag)r9   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;   z<Enter>r   )rF   rG   z<Motion>z<ButtonPress-1>z<ButtonRelease-1>)rJ   rA   )ÚstartrF   rG   rK   rL   )Úhsr   r   Úclick_it’  s    z?HighPageTest.test_highlight_target_text_mouse.<locals>.click_itr;   r.   )r7   r#   r]   r@   rI   r   Z	tag_namesZ
tag_rangesrž   r5   ro   r3   )r+   r‡   r¡   Úcountr¤   r§   r£   Zstart_indexr   )r9   r¦   r   Ú test_highlight_target_text_mouse‚  s"    

z-HighPageTest.test_highlight_target_text_mousec             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…   )rv   F)Úselectedr   )r7   r#   rm   r   r0   r’   r   r™   r
   Úbutton_delete_customr…   r„   r   )r+   r‡   r9   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#de0000Tr.   zMy New Themez#de0000F)r7   r#   r   ZtkColorChooserZaskcolorr   Úget_new_theme_namerž   r0   rœ   ÚresultZbutton_set_colorrQ   r5   r­   ÚlookupÚframe_color_setr   r3   rƒ   )r+   r‡   r9   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)r#   rƒ   r0   rž   Úfg_bg_togglerœ   r7   r­   r±   r²   r]   Útag_cgetrl   )r+   r9   rœ   r   r   r   Útest_on_new_color_setë  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   r#   r°   r7   r¯   )r+   Úorig_sectionnameÚsnr9   r   r   r   Útest_get_new_theme_nameø  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   )r#   r   r¯   r   r0   r°   Zbutton_save_customrQ   rš   r   r   r3   rB   )r+   r9   r³   r   r   r   Útest_save_as_new_theme  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 themerq   r   r~   r.   zhit-backgroundÚyellow)r7   r#   r   r0   r‚   rš   r   r   Ú
create_newrr   ZGetThemeDictrƒ   r5   r6   rm   r3   r   Ú
add_optionr4   r†   )r+   r‡   r9   Ú	first_newÚ
second_newr   r   r   Útest_create_new_and_save_new  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)rv   rª   )rv   r.   ÚComment)rª   r   r;   )r7   r#   ro   rž   r0   Úfg_onr…   Úbg_onrR   r¸   rp   r3   r   )r+   r‡   r9   r   r   r   Útest_set_highlight_target5  s    z&HighPageTest.test_set_highlight_targetc             C   s@   | j }|j}|j ¡  |  |jd¡ |j ¡  |  |jd¡ d S )Nr.   r;   )r#   rp   rÈ   rQ   r7   r3   rÉ   )r+   r9   Zscsr   r   r   Útest_set_color_sample_bindingJ  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·   )r#   rp   rž   r0   r¸   r7   r­   r±   r²   r]   r¹   r   )r+   r9   r   r   r   Útest_set_color_sampleT  s    z"HighPageTest.test_set_color_samplec             C   sX  | j }| j}|`|jj}tj}d}d}|j d¡ |j	 d¡ d}| 
|¡ d|j_| ¡  ||d|ƒ||ddd	ƒ ||d
|ƒ||ddd	ƒ |  |d|ƒd¡ |  |d|ƒd¡ ||jjdƒ t d|dd¡ t d|dd¡ | ¡  ||d|ƒ||ddd	ƒ ||d
|ƒ||ddd	ƒ ||d|ƒdƒ ||d|ƒdƒ ||jjdƒ tƒ |_d S )Nr·   r®   Tz	IDLE Darkz	IDLE Testr   ÚbreakÚfg)ZfgBgZcursorZnormalÚbgZconsoleZbluerÁ   r.   r   zconsole-foregroundzconsole-backgroundr;   )r7   r#   rn   r]   r¹   r   ZGetHighlightr   r0   r‚   rÂ   rp   r3   r4   r   rÃ   r   )r+   r‡   r9   Zhs_tagZghrÎ   rÏ   Zthemer   r   r   Útest_paint_theme_sample_  s6    
z$HighPageTest.test_paint_theme_samplec             C   sp  | j }| j}|j d¡ tƒ  }|_tƒ t_tƒ t_d}t	j
d  |dd¡ ddit|< |j d¡ |j |¡ d|_|j ¡  ||jd	ƒ |t| ddiƒ |t	 d
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 ¡ dƒ |tjjd	ƒ |tjjd	ƒ ||jjd	ƒ t`t`|`d S )N)z	!disabledz
spam themer   rŽ   ry   rx   r‰   Fr.   rq   r   Tr;   )rv   z- no custom themes -)r7   r#   r«   r…   r   Úaskyesnor   Údeactivate_current_configÚactivate_config_changesr   r   r†   rl   r   r0   rƒ   r°   rQ   r3   rr   rm   rš   r„   r5   )r+   r‡   r9   ÚyesnoZ
theme_namer   r   r   Útest_delete_custom„  s>    

zHighPageTest.test_delete_customN)r_   r`   ra   rb   rc   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   rk   æ   s,   
)	%/
 
%rk   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   Úkeyspager#   r$   r%   r   Úset_keys_typeÚload_keys_list)r(   r#   r   r   r   r)   µ  s    zKeysPageTest.setUpClassc             C   s   | j }|`|`d S )N)r#   rØ   rÙ   )r(   r#   r   r   r   r*   ¼  s    zKeysPageTest.tearDownClassc             C   sH   | j }x$t dd¡D ]}tjd  |¡ qW t ¡  d|j_d|j	_d S )Nrq   r   r   )
r#   r   rr   r   rs   r   r   rØ   r3   rÙ   )r+   r9   rt   r   r   r   r,   Á  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)ru   z- no custom keys -)rv   r.   )zIDLE Classic OSXr   rw   rx   ry   rz   r{   r|   r;   zIDLE Modern Unixr   ÚKeysr~   r   rV   )rz   )r   r   r#   r7   r   r€   r   ZCurrentKeysZload_key_cfgrR   Úkeyset_sourcer5   r‚   rƒ   Úcustom_keyset_onr…   rØ   r3   rÙ   Úargsr†   Zdefault_keysr6   r8   )r+   r9   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‰   r.   r   )z	!disabledrŠ   )r7   r#   r   r‹   rŒ   Zbuiltin_keyset_onrQ   rX   r3   r   r   rÜ   r…   )r+   r‡   r9   r   r   r   Útest_keyset_sourceõ  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 Helpr.   )zIDLE Modern UNIXrŽ   zIDLE Classic Unixr   r;   r   rV   )zIDLE Classic OSX)r7   r#   r   r   rs   r’   r“   rX   Zkeys_messagerÙ   r3   rÝ   r   r   r†   )r+   r‡   r9   r”   r   r   r   r•   
  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Ž   r.   )
r#   r™   r“   rš   rX   r7   rÙ   r3   r   r   )r+   r9   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Úcopyr.   zz-inz	<Key-F11>ZZzDummy_cfgBindings)r   r†   r#   rƒ   r0   ÚbindingslistÚdeleteÚinsertÚselection_setÚselection_anchorÚ
keybindingr7   r×   Úextpage)r+   r9   r   r   r   Útest_keybinding8  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…   )rv   F)rª   r   )r7   r#   rØ   rÛ   r0   r’   r   r™   r
   Úbutton_delete_custom_keysr…   rÜ   r   )r+   r‡   r9   r   r   r   Útest_set_keys_typeM  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   rH   z	<Key-F11>r.   zMy New Key Setzcopy - <Key-F11>Fz<Key-p>zcopy - <Key-p>)r7   r#   r   ZGetKeysDialogr   Úget_new_keys_nameÚbutton_new_keysr…   rã   rä   rå   ræ   rç   rè   r0   rÛ   r°   rQ   r5   r3   rƒ   )r+   r‡   r9   Zorig_getkeysdialogZgkdÚgnknr   r   r   Útest_get_new_keysb  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   r#   r°   r7   rí   )r+   r½   r¾   r9   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   )r#   r   rí   rÛ   r0   r°   Zbutton_save_custom_keysrQ   r3   rš   r   r   rB   )r+   r9   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â   r.   Úfindr;   z<Enter>)rF   rG   z<Motion>z
<Button-1>z<ButtonRelease-1>rH   r   )r#   rã   rä   rå   r?   r@   rI   r'   rJ   rA   r7   r5   rî   r…   )r+   r9   r—   rF   rG   rK   rL   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 keysetrq   r   r.   râ   z	<Key-F11>)r7   r#   rÛ   r0   r‚   rš   r   r   Zcreate_new_key_setrr   Ú	GetKeySetrƒ   r5   r6   rØ   r3   r   rÃ   r4   r†   )r+   r‡   r9   rÄ   rÅ   r   r   r   Ú,test_create_new_key_set_and_save_new_key_setÃ  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>>r.   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>rH   r   r   z,force-open-completions - <Control-Key-space>)r.   r;   zspam - <Shift-Key-a>)r;   )r7   r#   r   r   rõ   rÙ   rã   rä   rå   r°   r   rÃ   r5   Zcurselectionræ   rç   )r+   r‡   r9   Zgksr—   rY   r   r   r   Útest_load_keys_listâ  s>    






z KeysPageTest.test_load_keys_listc             C   sp  | j }| j}|j d¡ tƒ  }|_tƒ t_tƒ t_d}t	j
d  |dd¡ ddit|< |j d¡ |j |¡ d|_|j ¡  ||jd	ƒ |t| ddiƒ |t	 d
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 ¡ dƒ |tjjd	ƒ |tjjd	ƒ ||jjd	ƒ t`t`|`d S )N)z	!disabledzspam key setr   rŽ   ry   rx   r‰   Fr.   rq   r   Tr;   )rv   z- no custom keys -)r7   r#   rë   r…   r   rÑ   r   rÒ   rÓ   r   r   r†   r×   rÛ   r0   rƒ   r°   rQ   r3   rr   rØ   rš   rÜ   r5   )r+   r‡   r9   rÔ   Zkeyset_namer   r   r   Útest_delete_custom_keys  s>    

z$KeysPageTest.test_delete_custom_keysN)r_   r`   ra   rb   rc   r)   r*   r,   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$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genpager#   r$   r%   r   r0   Úset_add_delete_stateÚupcÚupdate_help_changesr'   )r(   r#   r   r   r   r)   =  s
    zGenPageTest.setUpClassc             C   s2   | j }|`|`|`|`|j dd¡ |j ¡  d S )Nr   rá   )	r#   r0   rú   rû   rü   Úhelplisträ   Úuser_helplistr   )r(   r#   r   r   r   r*   E  s
    zGenPageTest.tearDownClassc             C   s   t  ¡  d S )N)r   r   )r+   r   r   r   r,   M  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 )Nr.   rá   ZbadZworser   Ú	HelpFilesr-   z	name;filer   Z80rO   )rŽ   )rŽ   Úfiler-   )r7   r#   Zstartup_editr0   ÚautosaveZ	win_widthZ
win_heightrý   rå   rþ   r   r†   Zload_general_cfgr5   )r+   r‡   r9   r   r   r   Útest_load_general_cfgP  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-startupr-   r   )r#   Zstartup_editor_onrQ   r7   rX   r   r   Zstartup_shell_on)r+   r9   r   r   r   Útest_startupc  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á   Ú11rT   ZheightÚwidth)	r#   Zwin_height_inträ   rå   r7   rX   r   r   Zwin_width_int)r+   r9   r   r   r   Útest_editor_sizem  s    zGenPageTest.test_editor_sizec             C   s8   | j j dd¡ | j j dd¡ |  tdddii¡ d S )Nr   rá   r  ZAutoCompleteZ	popupwait)r#   Zauto_wait_inträ   rå   r7   ré   )r+   r   r   r   Útest_autocomplete_waitw  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Š   )r#   r7   Zparen_style_typerQ   ré   r   r   Zparen_flash_timerä   rå   Zbell_on)r+   r9   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  r-   r   )r#   Zsave_auto_onrQ   r7   rX   Zsave_ask_on)r+   r9   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)r#   Zformat_width_inträ   rå   r7   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á   r-   ZCodeContextZmaxlines)r#   Zcontext_inträ   rå   r7   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á   Úsourcer;   r   z<Enter>)rF   rG   z<Motion>z
<Button-1>z<ButtonRelease-1>rH   )r#   rú   r0   rü   rû   rý   rå   r?   r@   rI   r'   rJ   r3   rA   r7   r5   rR   r6   )r+   r9   rý   ZdexrF   rG   rK   rL   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á   )rv   r  r   )r7   r#   rú   rý   rä   Zbutton_helplist_editr…   Zbutton_helplist_removerå   ræ   r   )r+   r‡   r9   ZsadÚhr   r   r   Útest_set_add_delete_state²  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   r;   )r7   r   Ú
HelpSourcer   r#   rý   rä   rþ   r   r0   r3   rû   r°   Zhelplist_item_addrR   Úlistr5   r6   )r+   r‡   Úorig_helpsourcer¦   r9   r   r   r   Útest_helplist_item_addÊ  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   r.   )r7   r   r  r   r#   rý   rä   rå   ræ   rç   rþ   r   Úappendr0   r3   rû   r°   Zhelplist_item_editr5   r6   rR   )r+   r‡   r  r¦   r9   r   r   r   Útest_helplist_item_editæ  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   r.   )r7   r#   rý   rä   rå   ræ   rç   rþ   r   r  r0   r3   rû   Zhelplist_item_remover5   rR   )r+   r‡   r9   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)r-   Ú2)r#   rü   rþ   r   r  r7   rX   r   )r+   r9   r   r   r   Útest_update_help_changes  s    

z$GenPageTest.test_update_help_changesN)r_   r`   ra   rb   rc   r)   r*   r,   r  r  r  r  r
  r  r  r  r  r  r  r  r  r  r   r   r   r   rù   7  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)r(   r   r   r   r)   #  s    

zVarTraceTest.setUpClassc             C   s   | ` | `| `d S )N)r   r  r   )r(   r   r   r   r*   )  s    zVarTraceTest.tearDownClassc             C   s   | j  ¡  d| _d S )Nr   )r   r   r3   )r+   r   r   r   r,   -  s    
zVarTraceTest.setUpc             G   s   |  j d7  _ d S )Né   )r3   )r+   Úparamsr   r   r   Úvar_changed_increment1  s    z"VarTraceTest.var_changed_incrementc             G   s   d S )Nr   )r+   r"  r   r   r   Úvar_changed_boolean4  s    z VarTraceTest.var_changed_booleanc             C   s.   | j }| ¡  |  |jg ¡ |  |jg ¡ d S )N)r   Ú__init__r7   ÚuntracedÚtraced)r+   Útrr   r   r   Ú	test_init7  s    zVarTraceTest.test_initc             C   sF   | j }|j d¡ |j d¡ | ¡  |  |jg ¡ |  |jg ¡ d S )Nr   r.   )r   r&  r  r'  r   r7   )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)ru   )r   rt   rx   )r   r   r   r€   Úmake_callbackÚaddr  r#  ZassertIsr   r$  r   r   Zassert_called_onceZassert_called_withr7   r'  r&  )	r+   r(  ÚfuncÚcbr  r   ZsvZsv2rY   r   r   r   Útest_addE  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   rt   rx   é*   rt   r   rx   Z42)r   r+  r  rR   Úcallabler0   rš   r   rB   r7   r   )r+   r.  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 )Nr.   r!  r   )r   r,  r  r#  r   r$  r8   r7   r&  ZassertCountEqualr'  r0   r5   r3   r   )r+   r(  r  r   rY   r   r   r   Útest_attach_detachi  s*    


zVarTraceTest.test_attach_detachN)r_   r`   ra   rc   r)   r*   r,   r#  r$  r)  r*  r/  r2  r3  r   r   r   r   r  !  s   r  Ú__main__r;   )Ú	verbosity)*rb   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   rX   rl   r×   ré   r   r    ZTestCaser!   rd   rk   rÖ   rù   r  r_   r   r   r   r   r   Ú<module>   sL        K    kh
