o
    JAf0Ø  ã                   @   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(G d$d%„ d%ej ƒZ)G d&d'„ d'ej ƒZ*e+d(krÙej,d)d* dS 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   ú:/usr/lib/python3.10/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   ó   d S r   r   ©Úselfr   r   r   Útest_deactivate_current_config7   ó   z/ConfigDialogTest.test_deactivate_current_configc                 C   r$   r   r   r%   r   r   r   Úactivate_config_changes:   r(   z(ConfigDialogTest.activate_config_changesN)Ú__name__Ú
__module__Ú__qualname__r'   r)   r   r   r   r   r#   5   s    r#   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
Ú
ButtonTestc                 C   sJ   t }t ¡  }|_t ¡  }|_|jd  ¡  | ¡  | ¡  |`|`d S )NZOk)r   r   ÚMockÚapplyr!   ÚbuttonsÚinvokeÚassert_called_once)r&   Údr/   r!   r   r   r   Útest_click_ok@   s   zButtonTest.test_click_okc                 C   sh   t }t ¡  }|_t ¡  }|j_t ¡  }|_|jd  ¡  | 	¡  | 	¡  | 	¡  |j`|`|`d S )NZApply)
r   r   r.   Údeactivate_current_configÚextpageZsave_all_changed_extensionsr)   r0   r1   r2   )r&   r3   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   r0   r1   ÚassertEqualÚcalled©r&   r3   r   r   r   Útest_click_cancelU   s   zButtonTest.test_click_cancelc                 C   sŽ   t j t j¡ tjjtdtd}t j	d  
¡  |jd |jd }}W d   ƒ n1 s-w   Y  |  |d¡ |  | d¡oC| 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   r0   r1   Úkwdsr:   Ú
assertTrueÚ
startswithÚendswith)r&   Úviewr>   r?   r   r   r   Útest_click_help^   s   
ÿýÿzButtonTest.test_click_helpN)r*   r+   r,   r4   r8   r=   rI   r   r   r   r   r-   >   s
    		r-   c                   @   óf   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 r   )r   ZfontpageÚpager@   rA   r   Úset_samplesÚupdate©ÚclsrL   r   r   r   Ú
setUpClassp   ó   zFontPageTest.setUpClassc                 C   s
   | j `d S r   )rL   rM   ©rP   r   r   r   ÚtearDownClassw   s   
zFontPageTest.tearDownClassc                 C   ó   t  ¡  d S r   ©r   r   r%   r   r   r   ÚsetUp{   ó   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   r9   )r   r   rL   Ú	font_nameÚsetÚ	font_sizeÚ	font_boldrM   r;   Zload_font_cfgÚassertNotEqualÚgetÚassertFalser:   Úattachr<   r   r   r   Útest_load_font_cfg~   s   zFontPageTest.test_load_font_cfgc                 C   sÞ   | j }|j ¡ dk r|  d¡ |j}| d¡ |j d¡}| ¡  | ¡  | d¡ | d¡ | d¡}|  	||¡ |  
|j ¡ | ¡ ¡ | ¡  | ¡  | d¡ | d¡ | d¡}|  ||¡ |  
|j ¡ | ¡ ¡ d S )	Né   úneed at least 2 fontsr   Zactivez
<Key-Down>z<KeyRelease-Down>z<Key-Up>z<KeyRelease-Up>)rL   ÚfontlistÚsizeÚskipTestr7   r_   Úfocus_forcerN   Úevent_generater^   ÚassertInrZ   Úlowerr:   )r&   r3   re   Ú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 )	Nrc   rd   r   r9   ú
<Button-1>©ÚxÚyú<ButtonRelease-1>Úanchor)rL   re   rf   rg   r7   rh   ÚseerN   Úbboxri   r_   r:   rj   rZ   rk   )	r&   r3   re   rp   rq   Ú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)rL   ZsizelistÚvariabler[   r:   r\   r_   r<   r   r   r   Útest_sizelistÂ   s   zFontPageTest.test_sizelistc                 C   sJ   | j }|j d¡ |j ¡  |  |j ¡ ¡ |j ¡  |  |j ¡ ¡ d S )NF)rL   r]   r[   Zbold_toggler1   rE   r_   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   ÚEditorWindowr9   rc   Úboldr   z	Test Font)rl   z	font-sizez	font-boldZ20é   )r   ZGetFontr   ÚstrrL   r\   r[   r]   rM   r;   rZ   r:   Úmainpager   r   )r&   Zdefault_fontZdefault_sizeZdefault_boldr3   Úexpectedr   r   r   Útest_font_setÑ   s<   þþþzFontPageTest.test_font_setc                 C   s’   | j }|`|j|jf}i i |_|_|j d¡ |j d¡ |j d¡ ddi}| ¡  |  |j|j  ko9|kn  ¡ |\|_|_t	ƒ |_d S )NÚtestÚ5r9   rl   )r…   r†   r   )
rL   rM   Zfont_sampleÚhighlight_samplerZ   r[   r\   r]   rE   r   )r&   r3   Zorig_samplesrƒ   r   r   r   Útest_set_samplesõ   s   "zFontPageTest.test_set_samplesN)r*   r+   r,   ÚclassmethodrQ   rT   rW   rb   rm   rx   r|   r}   r„   rˆ   r   r   r   r   rK   i   s    

	$rK   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 r   )r   ÚhighpagerL   r@   rA   r   Úset_theme_typeÚpaint_theme_sampleÚset_highlight_targetÚset_color_samplerN   rO   r   r   r   rQ     s   zHighPageTest.setUpClassc                 C   s   | j }|`|`|`|`d S r   )rL   rŒ   r   rŽ   r   )rP   r3   r   r   r   rT     s   zHighPageTest.tearDownClassc                 C   sT   | j }t dd¡D ]
}tjd  |¡ q	t ¡  d|j_d|j	_d|j
_d|j_d S )NÚuserr   r   )rL   r   ÚGetSectionListr   Úremove_sectionr   r   rŒ   r;   r   rŽ   r   ©r&   r3   Úsectionr   r   r   rW     s   zHighPageTest.setUpc                 C   s–  t  ¡  | j}| j}tjddt_| ¡  |  	|j
 ¡ ¡ ||j ¡ dƒ ||j ¡ dƒ ||j ¡ dƒ ||jjdƒ ||jjdƒ ||jjdƒ t dddd	¡ t dd
dd¡ | ¡  ||j ¡ dƒ ||j ¡ dƒ ||jjdƒ ||jjdƒ ||jjdƒ tjd
dt_t dddd¡ | ¡  |  |j
 ¡ ¡ ||j ¡ dƒ ||j ¡ d
ƒ ||jjdƒ ||jjdƒ ||jjdƒ t`t  ¡  d S )NúIDLE Classic©Zreturn_valueú- no custom themes -©Údisabledr9   r   Útest1ÚoptionÚvalueÚtest2Úoption2Úvalue2rc   r   ÚThemeÚdefaultÚ0r€   )r   r   rL   r:   r   r.   r   ZCurrentThemeZload_theme_cfgrE   Útheme_sourcer_   Úbuiltin_nameÚcustom_nameÚcustom_theme_onÚstaterŒ   r;   r   rŽ   Ú	SetOptionr`   ra   ©r&   r3   Úeqr   r   r   Útest_load_theme_cfg*  s>   z HighPageTest.test_load_theme_cfgc                 C   ó®   | 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¡   ÚTruer9   r   ©z	!disabledÚFalse)r:   rL   r   Úvar_changed_builtin_nameÚvar_changed_custom_nameZbuiltin_theme_onr1   r‚   r;   r   r   r¦   r§   ©r&   rª   r3   r   r   r   Útest_theme_sourceS  ó   

zHighPageTest.test_theme_sourcec                 C   s  | j }| j}g d¢}t dddd¡ |j |d¡ |tddddœiƒ ||jd	 d
ƒ ||jj	dƒ t
 ¡  t dddd¡ |j |d¡ |tdddiiƒ ||jd	 d
ƒ ||jj	dƒ t
 ¡  |j |d¡ |tddddœiƒ ||jd	 dƒ ||jj	dƒ d S )N)r•   ú	IDLE DarkúIDLE Newr   r    ÚnameÚspamrµ   r•   ©r·   Úname2ÚtextzNew theme, see Helpr9   r¶   rº   rc   r   r€   )r:   rL   r   r¨   ÚbuiltinlistÚSetMenur‚   Ztheme_messager   r;   r   r   ©r&   rª   r3   Z	item_listr   r   r   Útest_builtin_nameh  s*   
ÿzHighPageTest.test_builtin_namec                 C   ór   | j }|j g d¡ |  dt¡ |  |jjd¡ t 	¡  |j g d¢d¡ |  tdddii¡ |  |jjd¡ d S )Nr—   r    r   ©ÚaÚbÚcrÄ   r·   r9   )
rL   Ú
customlistr½   ÚassertNotInr‚   r:   r   r;   r   r   r<   r   r   r   Útest_custom_name„  ó   zHighPageTest.test_custom_namec                 C   s2   | j }tƒ |_|j d¡ |  |jjd¡ |`d S )NZgreenr9   )rL   r   Zon_new_color_setÚcolorr[   r:   r;   r<   r   r   r   Ú
test_color’  s
   zHighPageTest.test_colorc                 C   s@   | j }| j}|j g d¢d¡ ||j ¡ dƒ ||jjdƒ d S )NrÁ   rÄ   r9   )r:   rL   Z
targetlistr½   Úhighlight_targetr_   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„}||ƒ ˆ ¡ D ](}ˆ |¡dd d… D ]}|d7 }||ƒ |ˆ j 	¡ || ƒ |ˆ j
j|ƒ q:q.d S )	Nr   ç      ð?c                    s$   ˆ j  ¡ D ]
\}}|| |d < qd S ©Nr   )Ztheme_elementsÚitems)ÚelemÚelementÚtag)r3   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 )Nrc   ú<Enter>r   ro   ú<Motion>ú<ButtonPress-1>rr   )ru   ri   )Ústartrp   rq   rv   rw   )Úhsr   r   Úclick_it³  s   z?HighPageTest.test_highlight_target_text_mouse.<locals>.click_itrc   r9   )r:   rL   r‡   rh   rt   r    Z	tag_namesÚ
tag_rangesrË   r_   rŽ   r;   )r&   rª   rÐ   ÚcountrÓ   rÙ   rÒ   Ústart_indexr   )r3   rØ   r   Ú test_highlight_target_text_mouse£  s&   

üÿz-HighPageTest.test_highlight_target_text_mousec                 C   sŽ   | j }| j}|j}| ¡  | d¡ | ¡  |jdddd |jdddd tdƒD ]}|jdddd |jdddd q*|| d	¡d
ƒ d S )NrÍ   rÔ   r   ro   rÕ   rc   rÖ   rr   Úselr   )	r:   rL   r‡   rh   rt   r    ri   ÚrangerÚ   )r&   rª   r3   rØ   Ú_r   r   r   Ú"test_highlight_sample_double_clickÈ  s   
z/HighPageTest.test_highlight_sample_double_clickc           	      C   s¨   | j }| j}|j}| ¡  | d¡ | ¡  | d¡\}}}}}| d¡ | d¡ |jd||d |jd||d |jd||d |jd	||d || d
¡dƒ d S )NrÍ   z1.0z<Leave>rÔ   rÕ   ro   rÖ   z<B1-Motion>rr   rÞ   r   )	r:   rL   r‡   rh   rt   r    Z	dlineinfori   rÚ   )	r&   rª   r3   rØ   rp   rq   rv   rw   Úoffsetr   r   r   Útest_highlight_sample_b1_motionÜ  s   


z,HighPageTest.test_highlight_sample_b1_motionc                 C   ó´   | 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   )r:   rL   rŒ   r£   r[   r¼   r   rÅ   r
   Úbutton_delete_customr§   r¦   r   r²   r   r   r   Útest_set_theme_typeò  ó   z HighPageTest.test_set_theme_typec                 C   sX  | j }| j}tjj}tƒ  }tj_tƒ  }|_|j d¡ |j	 d¡ d|_
|j ¡  ||j	 ¡ dƒ d|j |jd d¡f|_
|j ¡  ||j	 ¡ dƒ d|_
|j	 d¡ |j d¡ d|_
|j ¡  ||jd	ƒ ||j	 ¡ dƒ d
|_
|j ¡  ||j ¡ |j
ƒ ||j	 ¡ dƒ |j	 d¡ |j d¡ |j ¡  ||j	 ¡ dƒ |`|tj_d S )NzEditor Breakpointz#ffffff)NNr   ÚstyleÚ
background))g    ÀÛk@ç        rí   ú#de0000Tr9   zMy New Themerî   F)r:   rL   r   ZcolorchooserZaskcolorr   Úget_new_theme_namerË   r[   rÉ   ÚresultZbutton_set_colorr1   r_   rë   ÚlookupÚframe_color_setr£   r;   r¥   )r&   rª   r3   Zorig_chooserZchooserÚgntnr   r   r   Útest_get_color  s<   




zHighPageTest.test_get_colorc                 C   s„   | j }d}|j d¡ |j d¡ |j d¡ |j |¡ |  |j |j	d d¡|¡ |  |j
 dd¡|¡ |  tdd	|ii¡ d S )
Nz#3f7caeÚPythonúSelected TextTrë   rì   ÚhiliteÚ
foregroundzhilite-foreground)rL   r¥   r[   rË   Úfg_bg_togglerÉ   r:   rë   rñ   rò   r‡   Útag_cgetr‹   )r&   r3   rÉ   r   r   r   Útest_on_new_color_set6  s   
ÿz"HighPageTest.test_on_new_color_setc                 C   ó>   t j}tdd }t _| j}d|_|  | d¡d¡ |t _d S )NT©Zreturn_selfz	New Themer   )r   ÚSectionNamer   rL   rð   r:   rï   ©r&   Zorig_sectionnameZsnr3   r   r   r   Útest_get_new_theme_nameC  ó   
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   )rL   r   rï   r£   r[   rð   Zbutton_save_customr1   rÆ   r   r   r;   rj   )r&   r3   ró   r   r   r   Útest_save_as_new_themeM  s   

z#HighPageTest.test_save_as_new_themec                 C   s(  | j }| j}|j d¡ |j d¡ d}d}|  |tj¡ | |¡ |t 	dd¡|gƒ |t 
dd¡t 
d|¡ƒ ||j ¡ |ƒ |  |j ¡ ¡ ||jjdƒ t d|d	d
¡ |  |tj¡ | |¡ |t 	dd¡||gƒ |  t 
d|¡t 
d|¡¡ t d|d	d
¡ |t 
d|¡t 
d|¡ƒ d S )NTr•   zmy new custom themezmy second custom themer   r   r¡   r9   zhit-backgroundÚyellow)r:   rL   r£   r[   r¤   rÆ   r   r   Ú
create_newr‘   ZGetThemeDictr¥   r_   r`   rŒ   r;   r   Ú
add_optionr^   r¨   ©r&   rª   r3   Z	first_newZ
second_newr   r   r   Útest_create_new_and_save_new`  s4   

ÿ

ÿ
ÿz)HighPageTest.test_create_new_and_save_newc                 C   s¨   | j }| j}|`|j d¡ ||j ¡ dƒ ||j ¡ dƒ |  |j	¡ ||j
jdƒ |j d¡ ||j ¡ dƒ ||j ¡ dƒ |  |j	¡ ||j
jdƒ tƒ |_d S )	NZCursor)r™   rç   r˜   r9   ÚCommentræ   r   rc   )r:   rL   rŽ   rË   r[   Úfg_onr§   Úbg_onrE   rù   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 )Nr9   rc   )rL   r   r	  r1   r:   r;   r
  )r&   r3   Zscsr   r   r   Útest_set_color_sample_binding•  s   

z*HighPageTest.test_set_color_sample_bindingc                 C   s\   | j }|`|j d¡ |j d¡ | ¡  |  |j |jd d¡|j	 
dd¡¡ tƒ |_d S )Nrö   Trë   rì   r÷   rø   )rL   r   rË   r[   rù   r:   rë   rñ   rò   r‡   rú   r   r<   r   r   r   Útest_set_color_sampleŸ  s   þz"HighPageTest.test_set_color_samplec           	      C   sú   | j }| j}|`|jj}tj}|j d¡ |j	 d¡ d}| 
|¡ d|j_| ¡  dddœ}| ¡ D ]\}}|  |d|ƒ|¡ q3||jjd	ƒ | ¡ D ]\}}t d
|d| |¡ qL| ¡  | ¡ D ]\}}||d|ƒ|ƒ qc||jjdƒ tƒ |_d S )NTrµ   z	IDLE Testr   Zbluer  )rø   rì   Zconsoler9   r   zconsole-rc   )r:   rL   r   r‡   rú   r   ZGetHighlightr£   r[   r¤   r  r   r;   rÏ   r^   r   r  r   )	r&   rª   rL   Zhs_tagZghZthemeZnew_consoleÚkeyrœ   r   r   r   Útest_paint_theme_sampleª  s0   
ÿz$HighPageTest.test_paint_theme_samplec                 C   ó2  | j }| j}|j d¡ tƒ  }|_tƒ t_tƒ t_d}t	j
d  |dd¡ ddit|< d}t	j
d  |dd¡ dd	it|< |j d¡ |j ¡  |j |¡ d
|_|j ¡  ||jdƒ |t| ddiƒ |t	 dd¡||gƒ |tjjdƒ |tjjdƒ ||jjdƒ d|_|j ¡  ||jdƒ |  |t¡ |t	 dd¡|gƒ ||j ¡ dƒ ||j ¡ |ƒ |tjjdƒ |tjjdƒ ||jjdƒ |j |¡ d|_|j ¡  ||jdƒ |  |t¡ |t	 dd¡g ƒ ||j ¡ dƒ ||j ¡ dƒ |tjjdƒ |tjjdƒ ||jjdƒ t`t`|`d S )Nr®   z
spam themer   r·   rœ   r›   r­   zother themer¯   Fr9   r   r   Trc   r   r€   r˜   r—   )r:   rL   rè   r§   r   Úaskyesnor   r5   r)   r   r   r¨   r‹   r¦   r1   r¥   r[   rð   r;   r‘   rŒ   rÆ   r_   )r&   rª   r3   ÚyesnoZ
theme_nameZtheme_name2r   r   r   Útest_delete_customÊ  ó\   



zHighPageTest.test_delete_customN)r*   r+   r,   r‰   rQ   rT   rW   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Š     s6    
	
)	%/
 
 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 r   )r   rB   rL   r@   rA   r   Úset_keys_typeÚload_keys_listrO   r   r   r   rQ     rR   zKeysPageTest.setUpClassc                 C   s   | j }|`|`d S r   )rL   r  r  rO   r   r   r   rT     s   zKeysPageTest.tearDownClassc                 C   sD   | j }t dd¡D ]
}tjd  |¡ q	t ¡  d|j_d|j	_d S )Nr   r   r   )
rL   r   r‘   r   r’   r   r   r  r;   r  r“   r   r   r   rW     s   zKeysPageTest.setUpc                 C   s¨  t  ¡  | j}| j}tjddt_| ¡  |  	|j
 ¡ ¡ ||j ¡ dƒ ||j ¡ dƒ ||j ¡ dƒ ||jjdƒ ||jjdƒ ||jjdƒ t ddd	d
¡ t dddd¡ | ¡  ||j ¡ dƒ ||j ¡ dƒ ||jjdƒ ||jjdƒ ||jjdƒ tjddt_tjddt_t dddd¡ | ¡  |  |j
 ¡ ¡ ||j ¡ dƒ ||j ¡ dƒ ||jjdƒ ||jjdƒ ||jjdƒ t`t`t  ¡  d S )NúIDLE Classic OSXr–   ú- no custom keys -r˜   r9   ©r  r   rš   r›   rœ   r   rž   rŸ   rc   zIDLE Modern Unixr   ÚKeysr¡   r¢   r€   )r   )r   r   rL   r:   r   r.   r   ZCurrentKeysZload_key_cfgrE   Úkeyset_sourcer_   r¤   r¥   Úcustom_keyset_onr§   r  r;   r  Úargsr¨   Zdefault_keysr`   ra   r©   r   r   r   Útest_load_key_cfg#  s@   zKeysPageTest.test_load_key_cfgc                 C   r¬   )Nr  r¡   r­   r9   r   r®   r¯   )r:   rL   r   r°   r±   Zbuiltin_keyset_onr1   r‚   r;   r   r   r  r§   r²   r   r   r   Útest_keyset_sourceM  r´   zKeysPageTest.test_keyset_sourcec                 C   s0  | j }| j}tjd  d¡ g d¢}|j |d¡ |tddddœiƒ ||jd dƒ ||j	j
d	ƒ ||j	jd
ƒ t ¡  t dddd¡ |j |d¡ |tdddiiƒ ||jd dƒ ||j	j
dƒ ||j	jd
ƒ t ¡  |j |d¡ |tddddœiƒ ||jd dƒ ||j	j
dƒ ||j	jdƒ d S )Nr   r  )úIDLE Classic Windowsr  úIDLE Modern UNIXr"  r!  r¹   r»   zNew key set, see Helpr9   )r"  r·   zIDLE Classic Unixrº   rc   r  r   r€   r  )r:   rL   r   r   r’   r¼   r½   r‚   Zkeys_messager  r;   r  r   r   r¨   r¾   r   r   r   r¿   b  s0   
ÿzKeysPageTest.test_builtin_namec                 C   rÀ   )Nr  r  r   rÁ   rÄ   r·   r9   )
rL   rÅ   r½   rÆ   r‚   r:   r  r;   r   r   r<   r   r   r   rÇ   ‚  rÈ   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Úcopyr9   zz-inú	<Key-F11>ZZzDummy_cfgBindings)r   r¨   rL   r¥   r[   ÚbindingslistÚdeleteÚinsertÚselection_setÚselection_anchorÚ
keybindingr:   rB   r6   r<   r   r   r   Útest_keybinding  s$   
ÿ
ÿzKeysPageTest.test_keybindingc                 C   rä   rå   )r:   rL   r  r  r[   r¼   r   rÅ   r
   Úbutton_delete_custom_keysr§   r  r   r²   r   r   r   Útest_set_keys_type¥  rê   zKeysPageTest.test_set_keys_typec                 C   sŽ  | j }| j}tj}tdd }t_tƒ  }|_|j d¡ |j 	dd¡ |j 
dd¡ |j d¡ |j d¡ |j d¡ |j d¡ d|_|j ¡  ||j d	¡dƒ ||j ¡ dƒ d
|_d|_|j ¡  ||jdƒ ||j d	¡dƒ d|_|j ¡  ||j ¡ |jƒ ||j d	¡dƒ ||j ¡ d
ƒ |j d¡ d|_d|_|j ¡  ||jdƒ ||j d	¡dƒ ||j ¡ dƒ |`|t_d S )NTrý   r®   r   r$  zcopy - <Control-Shift-Key-C>zKey-ar   rs   r&  r9   zMy New Key Setzcopy - <Key-F11>Fz<Key-p>zcopy - <Key-p>)r:   rL   r   ZGetKeysWindowr   Úget_new_keys_nameÚbutton_new_keysr§   r'  r(  r)  r*  r+  r,  r[   r  rð   r1   r_   r;   r¥   )r&   rª   r3   Zorig_getkeysdialogZgkdÚgnknr   r   r   Útest_get_new_keysº  sF   




zKeysPageTest.test_get_new_keysc                 C   rü   )NTrý   zNew Keysr   )r   rþ   r   rL   rð   r:   r0  rÿ   r   r   r   Útest_get_new_keys_nameê  r  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   )rL   r   r0  r  r[   rð   Zbutton_save_custom_keysr1   r;   rÆ   r   r   rj   )r&   r3   r2  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%  r9   Úfindrc   rÔ   ro   rÕ   rn   rr   rs   r   )rL   r'  r(  r)  r7   rh   rt   rN   ru   ri   r:   r_   r1  r§   )r&   r3   rÃ   rp   rq   rv   rw   r   r   r   Útest_on_bindingslist_select  s$   

z(KeysPageTest.test_on_bindingslist_selectc                 C   s  | j }| j}|j d¡ |j d¡ d}d}|  |tj¡ | |¡ |t 	dd¡|gƒ |t 
d¡t 
|¡ƒ ||j ¡ |ƒ |  |j ¡ ¡ ||jjdƒ t d|dd	¡ |  |tj¡ | |¡ |t 	dd¡||gƒ |  t 
|¡t 
|¡¡ t d|dd	¡ |t 
|¡t 
|¡ƒ d S )
NTr!  zmy new custom key setzmy second custom keysetr   r   r9   r%  r&  )r:   rL   r  r[   r¤   rÆ   r   r   Zcreate_new_key_setr‘   Ú	GetKeySetr¥   r_   r`   r  r;   r   r  r^   r¨   r  r   r   r   Ú,test_create_new_key_set_and_save_new_key_set  s0   

ÿ
ÿz9KeysPageTest.test_create_new_key_set_and_save_new_key_setc                 C   sV  | j }| j}tƒ  }t_|`|j}| dd¡ | dd¡ | dd¡ ddgdgd	gd
œ|_	t
 dddd¡ d}| d¡ || dd¡|ƒ || d¡dƒ || ¡ dƒ | d¡ | d¡ | d¡ || dd¡|ƒ || d¡dƒ || ¡ dƒ | d¡ | d¡ | d¡ || dd¡|ƒ || d¡dƒ || ¡ dƒ tƒ |_t`d S )Nr   r$  z<<find>>r9   z<<help>>z<Control-Key-c>z<Control-Key-C>z<Control-Key-space>r&  )z<<copy>>z<<force-open-completions>>z<<spam>>r   zmy keysr¸   z<Shift-Key-a>)z&copy - <Control-Key-c> <Control-Key-C>ú,force-open-completions - <Control-Key-space>úspam - <Shift-Key-a>rs   r   r   r:  )r9   rc   r;  )rc   )r:   rL   r   r   r8  r  r'  r(  r)  rð   r   r  r_   Zcurselectionr*  r+  )r&   rª   r3   ZgksrÃ   rƒ   r   r   r   Útest_load_keys_list:  s@   þ






z KeysPageTest.test_load_keys_listc                 C   r  )Nr®   zspam key setr   r·   rœ   r›   r­   zother key setr¯   Fr9   r   r   Trc   r   r€   r˜   r  )r:   rL   r.  r§   r   r  r   r5   r)   r   r   r¨   rB   r  r1   r¥   r[   rð   r;   r‘   r  rÆ   r_   )r&   rª   r3   r  Zkeyset_nameZkeyset_name2r   r   r   Útest_delete_custom_keyse  r  z$KeysPageTest.test_delete_custom_keysN)r*   r+   r,   r‰   rQ   rT   rW   r  r   r¿   rÇ   r-  r/  r3  r4  r5  r7  r9  r<  r=  r   r   r   r   r    s(    


* 0
+r  c                   @   sb   e Zd Z	 edd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚWinPageTestc                 C   ó$   t j }| _t j |¡ | ¡  d S r   )r   ZwinpagerL   r@   rA   rN   rO   r   r   r   rQ   §  ó   zWinPageTest.setUpClassc                 C   rU   r   rV   r%   r   r   r   rW   ­  rX   zWinPageTest.setUpc                 C   sl   | j }| j}|j d¡ |j d¡ |j d¡ | ¡  ||j ¡ dƒ ||j ¡ dƒ ||j ¡ dƒ d S )Nr9   r   Z80rz   )r:   rL   Zstartup_editr[   Z	win_widthZ
win_heightZload_windows_cfgr_   r²   r   r   r   Útest_load_windows_cfg°  s   z!WinPageTest.test_load_windows_cfgc                 C   sN   | j }|j ¡  |  tdddii¡ t ¡  |j ¡  |  tdddii¡ d S )NÚGeneralzeditor-on-startuprY   r¢   )rL   Zstartup_editor_onr1   r:   r‚   r   r   Zstartup_shell_onr<   r   r   r   Útest_startup¼  s   

ÿ

ÿzWinPageTest.test_startupc                 C   sr   | j }|j dd¡ |j dd¡ |  tdddii¡ t ¡  |j dd¡ |j dd¡ |  tdddii¡ d S )Nr   r$  Ú11r~   ZheightÚwidth)	rL   Zwin_height_intr(  r)  r:   r‚   r   r   Zwin_width_intr<   r   r   r   Útest_editor_sizeÆ  s   zWinPageTest.test_editor_sizec                 C   s<   | j }|j d¡ |  |j ¡ d¡ |  tdddii¡ d S )Né   Ú6ZIndentz
num-spaces)rL   Zindent_chooserr[   r:   Zindent_spacesr_   r‚   r<   r   r   r   Útest_indent_spacesÐ  s   zWinPageTest.test_indent_spacesc                 C   s$   | j j ¡  |  tdddii¡ d S )Nr~   zcursor-blinkr¯   )rL   Zcursor_blink_boolr1   r:   r‚   r%   r   r   r   Útest_cursor_blinkÖ  s   zWinPageTest.test_cursor_blinkc                 C   ó8   | j j dd¡ | j j dd¡ |  tdddii¡ d S )Nr   r$  rD  ZAutoCompleteZ	popupwait)rL   Zauto_wait_intr(  r)  r:   r6   r%   r   r   r   Útest_autocomplete_waitÚ  ó   z"WinPageTest.test_autocomplete_waitc                 C   sŒ   | j }| j}|jd  d¡ |tdddiiƒ t ¡  |j dd¡ |j 	dd¡ |tdddiiƒ t ¡  |j
 ¡  |tdd	d
iiƒ d S )NZmenur   Z
ParenMatchrë   Úopenerr$  rD  zflash-delayZbellr¯   )rL   r:   Zparen_style_typer1   r6   r   r   Zparen_flash_timer(  r)  Zbell_onr©   r   r   r   Útest_parenmatchß  s   
zWinPageTest.test_parenmatchc                 C   rK  )Nr   r$  rD  ZFormatParagraphz	max-width)rL   Zformat_width_intr(  r)  r:   r6   r%   r   r   r   Útest_paragraphì  rM  zWinPageTest.test_paragraphN)r*   r+   r,   r‰   rQ   rW   rA  rC  rF  rI  rJ  rL  rO  rP  r   r   r   r   r>  ¡  s    


r>  c                   @   s:   e Zd Z	 edd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚShedPageTestc                 C   r?  r   )r   ZshedpagerL   r@   rA   rN   rO   r   r   r   rQ   ø  r@  zShedPageTest.setUpClassc                 C   rU   r   rV   r%   r   r   r   rW   þ  rX   zShedPageTest.setUpc                 C   s4   | j }| j}|j d¡ | ¡  ||j ¡ dƒ d S )Nr9   r   )r:   rL   Úautosaver[   Zload_shelled_cfgr_   r²   r   r   r   Útest_load_shelled_cfg  s
   z"ShedPageTest.test_load_shelled_cfgc                 C   sF   | j }|j ¡  |  tdddii¡ |j ¡  |  tdddii¡ d S )NrB  rR  rY   r¢   )rL   Zsave_auto_onr1   r:   r‚   Zsave_ask_onr<   r   r   r   Útest_autosave	  s
   

zShedPageTest.test_autosavec                 C   rK  )Nr   r$  rY   ZCodeContextZmaxlines)rL   Zcontext_intr(  r)  r:   r6   r%   r   r   r   Útest_context  rM  zShedPageTest.test_contextN)	r*   r+   r,   r‰   rQ   rW   rS  rT  rU  r   r   r   r   rQ  ò  s    
rQ  c                   @   s   e Zd Z	 edd„ ƒZdS )ÚExtPageTestc                 C   s   t j}t j |¡ d S r   )r   r6   r@   rA   rO   r   r   r   rQ     s   zExtPageTest.setUpClassN)r*   r+   r,   r‰   rQ   r   r   r   r   rV    s    rV  c                   @   rJ   )ÚHelpSourceTestc                 C   sF   t j}t j |¡ |j }| _tƒ  |_|_tƒ  |_	|_
| ¡  d S r   )r   r6   r@   rA   Z
frame_helpÚframer   r[   Úset_add_delete_stateÚupcÚupdate_help_changesrN   )rP   rL   rX  r   r   r   rQ   !  s   zHelpSourceTest.setUpClassc                 C   s2   | j }|`|`|`|`|j dd¡ |j ¡  d S )Nr   r$  )	rX  r[   rY  rZ  r[  Úhelplistr(  Úuser_helplistr   )rP   rX  r   r   r   rT   *  s
   zHelpSourceTest.tearDownClassc                 C   rU   r   rV   r%   r   r   r   rW   2  rX   zHelpSourceTest.setUpc                 C   sb   | j }| j}|j dd¡ ddg|_t dddd¡ | ¡  ||j dd¡d	ƒ ||jd
gƒ d S )Nr$  ZbadZworser   Ú	HelpFilesrY   z	name;filer   )r·   )r·   ÚfilerY   )	r:   rX  r\  r)  r]  r   r¨   Zload_helplistr_   ©r&   rª   Úfrr   r   r   Útest_load_helplist5  s   
z!HelpSourceTest.test_load_helplistc                 C   sü   | j }|j|_|j|_|j}d}| |d¡ | |¡ | ¡  | 	|¡ | 
¡  | |¡\}}}}||d 7 }||d 7 }d |j_|j_|jdddd |jd||d |jd||d |jd	||d |  | d
¡d¡ |  |jj¡ |  |jj¡ d S )Nr$  Úsourcerc   r   rÔ   ro   rÕ   rn   rr   rs   )rX  rY  r[   r[  rZ  r\  r)  r7   rh   rt   rN   ru   r;   ri   r:   r_   rE   r`   )r&   ra  r\  Zdexrp   rq   rv   rw   r   r   r   Útest_source_selected?  s*   

z#HelpSourceTest.test_source_selectedc                 C   s¼   | j }| j}|`|j}|j}| dd¡ |ƒ  ||j ¡ dƒ ||j ¡ dƒ | dd¡ |ƒ  ||j ¡ dƒ ||j ¡ dƒ | 	d¡ |ƒ  ||j ¡ dƒ ||j ¡ dƒ t
ƒ |_d S )Nr   r$  r˜   rc  r   )r:   rX  rY  r\  r(  Zbutton_helplist_editr§   Zbutton_helplist_remover)  r*  r   )r&   rª   ra  ZsadÚhr   r   r   Útest_set_add_delete_stateW  s$   
z(HelpSourceTest.test_set_add_delete_statec                 C   sú   | j }tj}tdd }t_| j}|j dd¡ |j ¡  d |j	_
|j_
d|_| ¡  |  t|j dd¡ƒ|j  ko?g kn  ¡ |  |jj
¡ d|_| ¡  d|_| ¡  ||j dd¡dƒ ||jddgƒ ||jj
d	ƒ |  |j	j
¡ |t_d S )
NTrý   r   r$  r   ©Úname1Zfile1©rº   Zfile2)rh  rº   rc   )r:   r   Ú
HelpSourcer   rX  r\  r(  r]  r   r[   r;   rZ  rð   Zhelplist_item_addrE   Úlistr_   r`   ©r&   rª   Zorig_helpsourcerØ   ra  r   r   r   Útest_helplist_item_addo  s0   
ÿÿ
z%HelpSourceTest.test_helplist_item_addc                 C   s(  | j }tj}tdd }t_| j}|j dd¡ |j dd¡ |j d¡ |j 	d¡ |j
 ¡  |j
 d¡ d |j_|j_d|_| ¡  d|_| ¡  ||j dd¡dƒ ||j
dgƒ |  |jj¡ d	|_| ¡  ||j dd¡d
ƒ ||j
d	gƒ |  |jj|jj  ko‹dkn  ¡ |t_d S )NTrý   r   r$  rh  rg  r   )rh  ri  )rº   r9   )r:   r   rj  r   rX  r\  r(  r)  r*  r+  r]  r   Úappendr[   r;   rZ  rð   Zhelplist_item_editr_   r`   rE   rl  r   r   r   Útest_helplist_item_edit‹  s0   
&
z&HelpSourceTest.test_helplist_item_editc                 C   s¾   | j }| j}|j dd¡ |j dd¡ |j d¡ |j d¡ |j ¡  |j 	d¡ d |j
_|j_| ¡  ||j dd¡dƒ ||jg ƒ |  |jj|j
j  koYdk¡ d S   ¡ d S )Nr   r$  rh  rg  r   r9   )r:   rX  r\  r(  r)  r*  r+  r]  r   rn  r[   r;   rZ  Zhelplist_item_remover_   rE   r`  r   r   r   Útest_helplist_item_remove©  s   
0z(HelpSourceTest.test_helplist_item_removec                 C   sV   | j }|`|j ¡  |j d¡ |j d¡ | ¡  |  td dddœ¡ tƒ |_d S )Nrg  ri  r^  zname1;file1zname2;file2)rY   Ú2)rX  r[  r]  r   rn  r:   r‚   r   )r&   ra  r   r   r   Útest_update_help_changes¹  s   

ÿz'HelpSourceTest.test_update_help_changesN)r*   r+   r,   r‰   rQ   rT   rW   rb  rd  rf  rm  ro  rp  rr  r   r   r   r   rW    s    


rW  c                   @   sd   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚVarTraceTestc                 C   s"   t  ¡ | _ttƒ| _ttƒ| _d S r   )r   ZVarTracer   r   r   Úivr	   ÚbvrS   r   r   r   rQ   È  s   

zVarTraceTest.setUpClassc                 C   s   | ` | `| `d S r   )r   rt  ru  rS   r   r   r   rT   Î  s   zVarTraceTest.tearDownClassc                 C   s   | j  ¡  d| _d S rÎ   )r   r   r;   r%   r   r   r   rW   Ò  s   

zVarTraceTest.setUpc                 G   s   |  j d7  _ d S )Né   )r;   ©r&   Úparamsr   r   r   Úvar_changed_incrementÖ  s   z"VarTraceTest.var_changed_incrementc                 G   r$   r   r   rw  r   r   r   Úvar_changed_booleanÙ  r(   z VarTraceTest.var_changed_booleanc                 C   s.   | j }| ¡  |  |jg ¡ |  |jg ¡ d S r   )r   Ú__init__r:   Ú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   r9   )r   r|  rn  r}  r   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 )Nr–   ©r   r”   r›   )r   r   r   r.   Úmake_callbackÚaddrt  ry  ZassertIsru  rz  r   r   r2   Zassert_called_withr:   r}  r|  )	r&   r  ÚfuncÚcbrt  ru  ÚsvZsv2rƒ   r   r   r   Útest_addê  s&   þzVarTraceTest.test_addc                 C   st   | j  | jd¡}|  t|ƒ¡ | j d¡ |  dtd ¡ |ƒ  |  dtd ¡ |  	td d d d¡ t 
¡  d S )Nr‚  é*   r”   r   r›   Z42)r   rƒ  rt  rE   Úcallabler[   rÆ   r   rj   r:   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 )Nr9   rv  r   )r   r„  rt  ry  ru  rz  ra   r:   r|  ZassertCountEqualr}  r[   r_   r;   r   )r&   r  rt  ru  rƒ   r   r   r   Útest_attach_detach  s,   ÿ


zVarTraceTest.test_attach_detachN)r*   r+   r,   r‰   rQ   rT   rW   ry  rz  r€  r  rˆ  r‹  rŒ  r   r   r   r   rs  Æ  s    

rs  Ú__main__rc   )Ú	verbosity)-Zidlelibr   Ztest.supportr   Zunittestr   Zidlelib.idle_test.mock_idler   Útkinterr   r   r   r	   r
   r   r   Zidlelib.configdialogr   r   r   r   r   ZIdleUserConfParserr   r   r   r‚   r‹   rB   r6   r   r"   ZTestCaser#   r-   rK   rŠ   r  r>  rQ  rV  rW  rs  r*   r   r   r   r   r   Ú<module>   s\     ü	+        Q% (hÿ