£Á°è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
    YI~dN                 @   s  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 )'    )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               @   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 )FontPageTestc             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sizelist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^   )rt   ru   rn   )
rE   rF   Zfont_samplehighlight_samplerM   rN   rO   rP   r?   r   )r#   r/   Zorig_samplesrr   r   r   r   test_set_samples   s    "zFontPageTest.test_set_samplesN)r&   r'   r(   classmethodrI   rJ   rK   rU   r_   rg   rk   rl   rs   rw   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   rq   )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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d/S )0HighPageTestc             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0ro   )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-   rq   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   ro   )r5   rE   r   r   builtinlistSetMenurq   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   assertNotInrq   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   rv   rZ   rc   r   Z	tag_names
tag_rangesr   rR   r   r6   )r#   r   r   countr   r   r   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   rv   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   rv   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   rv   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   rv   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   rv   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   ro   )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(   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     s.   
)	%/
 
 r   c               @   s   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d Zdd Zdd Zdd Zdd Zdd  Zd!S )"KeysPageTestc             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   ro   )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-   rq   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   ro   )zIDLE Classic OSX)r5   rE   r   r   r   r   r   rq   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   rq   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   rr   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   ro   )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(   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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 )&GenPageTestc             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   rq   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   11rm   Zheightwidth)	rE   Zwin_height_intr   r   r5   rq   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 )Nrm   zcursor-blinkr   )rE   Zcursor_blink_boolr-   r5   rq   )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   rq   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   rq   r   )r#   r/   r   r   r   test_update_help_changes  s    

z$GenPageTest.test_update_help_changesN)r&   r'   r(   rx   rI   rJ   rK   r  r  r  r  r  r   r!  r"  r#  r%  r'  r.  r0  r1  r3  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   r5  r6  )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#   r8  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addr5  r9  ZassertIsr6  r:  r   r   r.   Zassert_called_withr5   r=  r<  )	r#   r>  funccbr5  r6  svZsv2rr   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   rA  r5  r?   callablerN   r   r   r\   r5   r   )r#   rD  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   r7  r   )r   rB  r5  r9  r6  r:  rT   r5   r<  ZassertCountEqualr=  rN   rR   r6   r   )r#   r>  r5  r6  rr   r   r   r   test_attach_detach  s*    


zVarTraceTest.test_attach_detachN)r&   r'   r(   rx   rI   rJ   rK   r9  r:  r?  r@  rF  rI  rJ  r   r   r   r   r4    s   r4  __main__rV   )	verbosity)+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   rq   r   r<   r   r   r!   ZTestCaser"   r)   rC   ry   r   r   r  r4  r&   r   r   r   r   r   <module>   sP    	+         oh
