£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<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re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 )FontPageTestzTest that font widgets enable users to make font changes.

    Test that widget actions set vars, that var changes add three
    options to changes and call set_samples, and that set_samples
    changes the font of both sample boxes.
    c             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HighPageTestzTest that highlight tab widgets enable users to make changes.

    Test that widget actions set vars, that var changes add
    options to changes and that themes work correctly.
    c             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| | qW |  x$| D ]\}}||d|| qW ||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 )#KeysPageTestzTest that keys tab widgets enable users to make changes.

    Test that widget actions set vars, that var changes add
    options to changes and that key sets works correctly.
    c             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 )'GenPageTestzTest 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od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
