B YI~dN��@s�ddlmZddlmZed�ddlZddlmZddlmZddlm Z m Z m Z m Z m Z mZddlmZdd lmZmZmZejZe�d �e�d �e�d �e�d �d �Zdadaed Zed ZedZedZdd�Zdd�ZGdd�dej �Z!Gdd�dej �Z"Gdd�dej �Z#Gdd�dej �Z$Gdd�dej �Z%Gdd�dej �Z&Gd d!�d!ej �Z'Gd"d#�d#ej �Z(e)d$k�r�ej*d%d&�dS)'�)� configdialog)�requiresZguiN)�mock)�Func)�Tk� StringVar�IntVar� BooleanVar�DISABLED�NORMAL)�config)�idleConf�changes�tracers�)�main� highlight�keys� extensionsrrrrcCs tt_t�atjtddd�adS)NZTestT)Z_utest)�testcfgr �userCfgr�rootrZ ConfigDialog�dialog�rr�H/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_configdialog.py� setUpModule"srcCs:tt_t��t��t��t��t� �daa dS)N) �usercfgr rr�detach�clearrr�update_idletasks�destroyrrrrr�tearDownModule*sr!c@seZdZdd�Zdd�ZdS)�ConfigDialogTestcCsdS)Nr)�selfrrr�test_deactivate_current_config7sz/ConfigDialogTest.test_deactivate_current_configcCsdS)Nr)r#rrr�activate_config_changes:sz(ConfigDialogTest.activate_config_changesN)�__name__� __module__� __qualname__r$r%rrrrr"5sr"c@s,eZdZdd�Zdd�Zdd�Zdd�Zd S) � ButtonTestcCsJt}t��}|_t��}|_|jd��|��|��|`|`dS)NZOk)rr�Mock�applyr �buttons�invoke�assert_called_once)r#�dr+r rrr� test_click_ok@szButtonTest.test_click_okcCsdt}t��}|_t��}|_t��}|_|jd��|��|��|��|`|`|`dS)NZApply) rrr*�deactivate_current_configZsave_all_changed_extensionsr%r,r-r.)r#r/Z deactivateZsave_ext�activaterrr�test_click_applyIszButtonTest.test_click_applycCsNt}t�|_dtdd<|jd��|�tdi�|�|jjd�|`dS)N�rZ somethingZCancel)rrr rr,r-� assertEqual�called)r#r/rrr�test_click_cancelUs zButtonTest.test_click_cancelc Csztj�tj�tjjtdtd��*}tj d� �|j d|j d}}WdQRX|� |d�|� |�d�or|�d��dS) NZ view_text)Z new_callableZHelp�title�contentszHelp for IDLE preferenceszWhen you clickza different name. )r�note�select�keyspagerZpatch�objectrrr,r-�kwdsr5� assertTrue� startswith�endswith)r#Zviewr8r9rrr�test_click_help^s    zButtonTest.test_click_helpN)r&r'r(r0r3r7rBrrrrr)>s   r)c@sdeZdZedd��Zedd��Zdd�Zdd�Zd d �Zd d �Z d d�Z dd�Z dd�Z dd�Z dS)� FontPageTestcCs,tj}|_tj�|�t�|_|��dS)N)r�fontpage�pager:r;r� set_samples�update)�clsrErrr� setUpClassps  zFontPageTest.setUpClasscCs |j`dS)N)rErF)rHrrr� tearDownClasswszFontPageTest.tearDownClasscCs t��dS)N)rr)r#rrr�setUp{szFontPageTest.setUpcCs�t��|j}|j�d�|j�d�|j�d�d|j_|� �|� |j� �d�|� |j� �d�|� |j� ��|� |jjd�t��dS)NZFake�1Trr4)rrrE� font_name�set� font_size� font_boldrFr6Z load_font_cfg�assertNotEqual�get� assertFalser5�attach)r#r/rrr�test_load_font_cfg~s   zFontPageTest.test_load_font_cfgcCs�|j}|j��dkr|�d�|j}|�d�|j�d�}|��|��|�d�|�d�|�d�}|� ||�|� |j ��|� ��|��|��|�d�|�d�|�d�}|� ||�|� |j ��|� ��dS) N�zneed at least 2 fontsrZactivez zzz)rE�fontlist�size�skipTestr2rR� focus_forcerG�event_generaterQ�assertInrM�lowerr5)r#r/rW�fontZ down_fontZup_fontrrr�test_fontlist_key�s(           zFontPageTest.test_fontlist_keyc Cs�|j}|j��dkr|�d�|j}|�d�|��|�d�|��|�d�\}}}}||d7}||d7}|j d||d�|j d||d�|� d�}|� d�}|� ||�|� |j � �|���dS) NrVzneed at least 2 fontsrr4z )�x�yz�anchor)rErWrXrYr2rZ�seerG�bboxr[rRr5r\rMr]) r#r/rWr`ra�dx�dyZfont1Z select_fontrrr�test_fontlist_mouse�s"        z FontPageTest.test_fontlist_mousecCs*|j}|jj�d�|�|j��d�dS)N�(�40)rEZsizelist�variablerNr5rOrR)r#r/rrr� test_sizelist�szFontPageTest.test_sizelistcCsJ|j}|j�d�|j��|�|j���|j��|�|j���dS)NF)rErPrNZ bold_toggler-r?rRrS)r#r/rrr�test_bold_toggle�s    zFontPageTest.test_bold_togglecCst�tdd�}t|d�}|ddk}|j}|j�|�|j�|�d|j_ |j �d�dd|t|�d�i}|� t |�|� |jj d�t ��|j�d �ddd t|�d�i}|� t |�|� |jj d�t ��|j�| �ddd t| �d�i}|� t |�|� |jj d �dS) Nr� EditorWindowr4rV�boldrz Test Font)r^z font-sizez font-boldZ20�)r ZGetFontr�strrErOrNrPrFr6rMr5�mainpagerr)r#Z default_fontZ default_sizeZ default_boldr/�expectedrrr� test_font_set�s6         zFontPageTest.test_font_setcCs�|j}|`|j|jf}ii|_|_|j�d�|j�d�|j�d�ddi}|��|�|j|jkor|kn�|\|_|_t �|_dS)N�test�5r4r^)rtrurn) rErFZ font_sample�highlight_samplerMrNrOrPr?r)r#r/Z orig_samplesrrrrr�test_set_samples�s    " zFontPageTest.test_set_samplesN)r&r'r(� classmethodrIrJrKrUr_rgrkrlrsrwrrrrrCis   $rCc@s(eZdZedd��Zdd�Zdd�ZdS)� IndentTestcCstj|_|j��dS)N)rrDrErG)rHrrrrI szIndentTest.setUpClasscCs0|j}|j�d�|��|�|j��d�dS)N��)rE� space_numrNZ load_tab_cfgr5rR)r#r/rrr�test_load_tab_cfgs zIndentTest.test_load_tab_cfgcCsD|j}t��|j�d�|�|j��d�|�tdddii�dS)N�rzZIndentz num-spacesZ16) rErrZ indent_scalerNr5r|rRrq)r#r/rrr�test_indent_scales  zIndentTest.test_indent_scaleN)r&r'r(rxrIr}rrrrrrys ryc@s�eZdZedd��Zedd��Zdd�Zdd�Zd d �Zd d �Z d d�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/S)0� HighPageTestcCsDtj}|_tj�|�t�|_t�|_t�|_t�|_ |� �dS)N) r�highpagerEr:r;r�set_theme_type�paint_theme_sample�set_highlight_target�set_color_samplerG)rHrErrrrI#s  zHighPageTest.setUpClasscCs|j}|`|`|`|`dS)N)rEr�r�r�r�)rHr/rrrrJ-szHighPageTest.tearDownClasscCsX|j}x$t�dd�D]}tjd�|�qWt��d|j_d|j _d|j _d|j _dS)N�userrr) rEr �GetSectionListr�remove_sectionrrr�r6r�r�r�)r#r/�sectionrrrrK3szHighPageTest.setUpcCs�t��|j}|j}tjdd�t_|��|� |j � ��||j � �d�||j � �d�||j��d�||jjd�||jjd�||jjd�t�dddd �t�dd d d �|��||j � �d�||j � �d�||jjd �||jjd �||jjd �tjd d�t_t�dddd�|��|�|j � ��||j � �d�||j � �d �||jjd�||jjd�||jjd�t`t��dS)Nz IDLE Classic)� return_valuez- no custom themes -)�disabledr4r�test1�option�value�test2�option2�value2rVr�Theme�default�0ro)rrrEr5rr*r Z CurrentThemeZload_theme_cfgr?� theme_sourcerR� builtin_name� custom_name�custom_theme_on�stater�r6r�r�� SetOptionrSrT)r#r/�eqrrr�test_load_theme_cfg?s>z HighPageTest.test_load_theme_cfgcCs�|j}|j}t�|_t�|_|j��|tdddii�||jjd�||jjd�t � �|j � d�|j ��|�tdddii�||jjd�||jjd�|`|`dS)Nr�r��Truer4r)z !disabled�False) r5rEr�var_changed_builtin_name�var_changed_custom_nameZbuiltin_theme_onr-rqr6rrr�r�)r#r�r/rrr�test_theme_sourcehs   zHighPageTest.test_theme_sourcecCs|j}|j}dddg}t�dddd�|j�|d�|tdddd�i�||jd d �||jj d �t � �t�dddd�|j�|d�|tdd dii�||jd d �||jj d �t � �|j�|d�|tdddd�i�||jd d�||jj d�dS)Nz IDLE Classicz IDLE DarkzIDLE Newrr��name�spam)r��name2�textzNew theme, see Helpr4r�rVrro) r5rEr r�� builtinlist�SetMenurqZ theme_messager�r6rr)r#r�r/� item_listrrr�test_builtin_name}s(  zHighPageTest.test_builtin_namecCst|j}|j�gd�|�dt�|�|jjd�t� �|j�dddgd�|�tdddii�|�|jjd�dS) Nz- no custom themes -r�r�a�b�cr�r4) rE� customlistr�� assertNotInrqr5r�r6rr)r#r/rrr�test_custom_name�s zHighPageTest.test_custom_namecCs2|j}t�|_|j�d�|�|jjd�|`dS)NZgreenr4)rErZon_new_color_set�colorrNr5r6)r#r/rrr� test_color�s  zHighPageTest.test_colorcCsB|j}|j}|j�dddgd�||j��d�||jjd�dS)Nr�r�r�r4)r5rEZ targetlistr��highlight_targetrRr�r6)r#r�r/rrr� test_highlight_target_list_mouse�s z-HighPageTest.test_highlight_target_list_mousecs�|j}|j�i}d}�j������d�����fdd�}�fdd�}||�x`���D]T}xN��|�ddd�D]6}|d7}||�|�j� �||�|�j j |�qxWq^WdS) Nrg�?cs(x"�j��D]\}}|||d<q WdS)Nr)Ztheme_elements�items)�elemZelement�tag)r/rr�tag_to_element�szEHighPageTest.test_highlight_target_text_mouse..tag_to_elementcsn��|�\}}}}||d7}||d7}�jdddd��jd||d��jd||d��jd||d�dS)NrVzr)r`razzz)rdr[)�startr`rarerf)�hsrr�click_it�s  z?HighPageTest.test_highlight_target_text_mouse..click_itrVr4) r5rErvrZrcrZ tag_names� tag_rangesr�rRr�r6)r#r�r��countr�r�r�� start_indexr)r/r�r� test_highlight_target_text_mouse�s"   z-HighPageTest.test_highlight_target_text_mousecCs�|j}|j}|j}|��|�d�|��|jdddd�|jdddd�x0td�D]$}|jdddd�|jdddd�qVW||�d �d �dS) Ng�?zr)r`razrVzz�selr) r5rErvrZrcrr[�ranger�)r#r�r/r��_rrr�"test_highlight_sample_double_click�s z/HighPageTest.test_highlight_sample_double_clickc Cs�|j}|j}|j}|��|�d�|��|�d�\}}}}}|�d�|�d�|jd||d�|jd||d�|jd||d�|jd ||d�||�d �d �dS) Ng�?z1.0zzz)r`razz zr�r) r5rErvrZrcrZ dlineinfor[r�) r#r�r/r�r`rarerf�offsetrrr�test_highlight_sample_b1_motion�s   z,HighPageTest.test_highlight_sample_b1_motioncCs�|j}|j}|`|j�d�|��||jdt�||jdt�||j � �d�|j�d�|��||jdt�||j � �d�||jdt�||j � �d�t �|_dS)NTr�)r�F)�selectedr) r5rEr�r�rNr�r r�r �button_delete_customr�r�r)r#r�r/rrr�test_set_theme_types  z HighPageTest.test_set_theme_typecCsX|j}|j}tjj}t�}tj_t�}|_|j�d�|j �d�d|_ |j � �||j � �d�d|j�|jdd�f|_ |j � �||j � �d�d|_ |j �d�|j�d�d|_ |j � �||jd �||j � �d�d |_ |j � �||j� �|j �||j � �d �|j �d�|j�d �|j � �||j � �d �|`|tj_dS) NzEditor Breakpointz#ffffff)NNr�style� background))g��k@ggz#de0000Tr4z My New Themez#de0000F)r5rErZtkColorChooserZaskcolorr�get_new_theme_namer�rNr��resultZbutton_set_colorr-rRr��lookup�frame_color_setr�r6r�)r#r�r/Z orig_chooserZchooser�gntnrrr�test_get_colors<             zHighPageTest.test_get_colorcCs�|j}d}|j�d�|j�d�|j�d�|j�|�|�|j�|j dd�|�|�|j � dd�|�|�t dd |ii�dS) Nz#3f7cae�Pythonz Selected TextTr�r��hilite� foregroundzhilite-foreground) rEr�rNr�� fg_bg_toggler�r5r�r�r�rv�tag_cgetr�)r#r/r�rrr�test_on_new_color_setKs    z"HighPageTest.test_on_new_color_setcCs>tj}tdd�}t_|j}d|_|�|�d�d�|t_dS)NT)� return_selfz New Themer)r� SectionNamerrEr�r5r�)r#�orig_sectionname�snr/rrr�test_get_new_theme_nameXs z$HighPageTest.test_get_new_theme_namecCs�|j}t�}|_|j�d�d|_|j��|�|jt j d�d|_d|_ |�|jt j d�|j��|� |jt j d�|`dS)NTrrz my new themer) rErr�r�rNr�Zbutton_save_customr-r�r rr6r\)r#r/r�rrr�test_save_as_new_themebs    z#HighPageTest.test_save_as_new_themecCs(|j}|j}|j�d�|j�d�d}d}|�|tj�|�|�|t� dd�|g�|t� dd�t� d|��||j � �|�|� |j� ��||jjd�t�d|d d �|�|tj�|�|�|t� dd�||g�|�t� d|�t� d|��t�d|d d �|t� d|�t� d|��dS) NTz IDLE Classiczmy new custom themezmy second custom themer�rr�r4zhit-background�yellow)r5rEr�rNr�r�r r� create_newr�Z GetThemeDictr�rRrSr�r6r� add_optionrQr�)r#r�r/� first_new� second_newrrr�test_create_new_and_save_newus.      z)HighPageTest.test_create_new_and_save_newcCs�|j}|j}|`|j�d�||j��d�||j��d�|�|j �||j j d�|j�d�||j��d�||j��d�|�|j �||j j d�t �|_dS) NZCursor)r�r�)r�r4�Comment)r�rrV) r5rEr�r�rN�fg_onr��bg_onr?r�r�r6r)r#r�r/rrr�test_set_highlight_target�s    z&HighPageTest.test_set_highlight_targetcCs@|j}|j}|j��|�|jd�|j��|�|jd�dS)Nr4rV)rEr�r�r-r5r6r�)r#r/Zscsrrr�test_set_color_sample_binding�s   z*HighPageTest.test_set_color_sample_bindingcCs\|j}|`|j�d�|j�d�|��|�|j�|jdd�|j � dd��t �|_dS)Nz Selected TextTr�r�r�r�) rEr�r�rNr�r5r�r�r�rvr�r)r#r/rrr�test_set_color_sample�s  z"HighPageTest.test_set_color_samplec Cs|j}|j}|`|jj}tj}|j�d�|j �d�d}|� |�d|j _ |��ddd�}x&|� �D]\}}|�|d|�|�qhW||j j d �x(|� �D]\}}t�d |d ||�q�W|��x$|� �D]\}}||d|�|�q�W||j j d �t�|_dS) NTz IDLE Darkz IDLE TestrZbluer�)r�r�Zconsoler4rzconsole-rV)r5rEr�rvr�r Z GetHighlightr�rNr�r�r�r6r�rQrr�r) r#r�rEZhs_tagZghZthemeZ new_console�keyr�rrr�test_paint_theme_sample�s.   z$HighPageTest.test_paint_theme_samplecCs2|j}|j}|j�d�t�}|_t�t_t�t_d}t j d� |dd�ddit |<d}t j d� |dd�dd it |<|j �d�|j ��|j�|�d |_|j��||jd �|t |ddi�|t �d d�||g�|tjjd �|tjjd �||jjd �d|_|j��||jd�|�|t �|t �d d�|g�||j ��d�||j��|�|tjjd �|tjjd �||jjd �|j�|�d|_|j��||jd�|�|t �|t �d d�g�||j ��d�||j��d�|tjjd�|tjjd�||jjd�t`t`|`dS)N)z !disabledz spam themerr�r�r�r�z other themer�Fr4r�rTrVrro)r�z- no custom themes -)r5rEr�r�r�askyesnorr1r%r rr�r�r�r-r�rNr�r6r�r�r�rR)r#r�r/�yesnoZ theme_nameZ theme_name2rrr�test_delete_custom�s\                zHighPageTest.test_delete_customN)r&r'r(rxrIrJrKr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�s.  ) %/      r�c@s�eZdZedd��Zedd��Zdd�Zdd�Zd d �Zd d �Z d d�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!S)"� KeysPageTestcCs,tj}|_tj�|�t�|_t�|_dS)N)rr<rEr:r;r� set_keys_type�load_keys_list)rHrErrrrI"s  zKeysPageTest.setUpClasscCs|j}|`|`dS)N)rEr�r�)rHrErrrrJ)szKeysPageTest.tearDownClasscCsH|j}x$t�dd�D]}tjd�|�qWt��d|j_d|j _dS)Nr�rr) rEr r�rr�rrr�r6r�)r#r/r�rrrrK.s zKeysPageTest.setUpcCs�t��|j}|j}tjdd�t_|��|� |j � ��||j � �d�||j � �d�||j��d�||jjd�||jjd�||jjd�t�ddd d �t�dd d d �|��||j � �d�||j � �d�||jjd�||jjd�||jjd�tjd d�t_tjdd�t_t�dddd�|��|�|j � ��||j � �d�||j � �d �||jjd�||jjd�||jjd�t`t`t��dS)NzIDLE Classic OSX)r�z- no custom keys -)r�r4)zIDLE Classic OSXrr�r�r�r�r�r�rVzIDLE Modern Unixr�Keysr�r�ro)r�)rrrEr5rr*r Z CurrentKeysZ load_key_cfgr?� keyset_sourcerRr�r��custom_keyset_onr�r�r6r��argsr�Z default_keysrSrT)r#r/r�rrr�test_load_key_cfg8s@zKeysPageTest.test_load_key_cfgcCs�|j}|j}t�|_t�|_|j��|tdddii�||jjd�||jjd�t � �|j � d�|j ��|�tdddii�||jjd�||jjd�|`|`dS)Nr�r�r�r4r)z !disabledr�) r5rErr�r�Zbuiltin_keyset_onr-rqr6rrr�r�)r#r�r/rrr�test_keyset_sourcebs   zKeysPageTest.test_keyset_sourcecCs2|j}|j}tjd�d�dddg}|j�|d�|tdddd�i�||jdd�||j j d �||j j d �t � �t�ddd d �|j�|d�|tdd dii�||jdd�||j j d�||j j d �t � �|j�|d�|tdddd�i�||jdd�||j j d�||j j d�dS)Nrr�zIDLE Classic WindowszIDLE Classic OSXzIDLE Modern UNIX)r�r�r�zNew key set, see Helpr4)zIDLE Modern UNIXr�zIDLE Classic Unixr�rVrro)zIDLE Classic OSX)r5rEr rr�r�r�rqZ keys_messager�r6r�rrr�)r#r�r/r�rrrr�ws0 zKeysPageTest.test_builtin_namecCst|j}|j�gd�|�dt�|�|jjd�t� �|j�dddgd�|�tdddii�|�|jjd�dS) Nz- no custom keys -r�rr�r�r�r�r4) rEr�r�r�rqr5r�r6rr)r#r/rrrr��s zKeysPageTest.test_custom_namecCs�t�dddd�|j}|j�d�|j�dd�|j�dd�|j�d d �|j�d�|j� d�|j �d �|� t ddd ii�|j�d �|j� d �|j �d �|� t d d d ii�dS) NrZZzDummyZenabler�zmy custom keysr�end�copyr4zz-inz ZZzDummy_cfgBindings)r r�rEr�rN� bindingslist�delete�insert� selection_set�selection_anchor� keybindingr5r<�extpage)r#r/rrr�test_keybinding�s        zKeysPageTest.test_keybindingcCs�|j}|j}|`|j�d�|��||jdt�||jdt�||j � �d�|j�d�|��||jdt�||j � �d�||jdt�||j � �d�t �|_dS)NTr�)r�F)r�r) r5rEr�r�rNr�r r�r �button_delete_custom_keysr�r�r)r#r�r/rrr�test_set_keys_type�s  zKeysPageTest.test_set_keys_typecCs�|j}|j}tj}tdd�}t_t�}|_|j�d�|j� dd�|j� dd�|j� d�|j� d�|j �d�|j�d�d|_|j��||j�d �d�||j ��d�d |_d|_|j��||jd �||j�d �d�d |_|j��||j��|j�||j�d �d �||j ��d �|j�d�d|_d|_|j��||jd�||j�d �d�||j ��d�|`|t_dS)NT)r�)z !disabledrr�zcopy - zKey-arrbz r4zMy New Key Setzcopy - Fzzcopy - )r5rErZ GetKeysDialogr�get_new_keys_name�button_new_keysr�r�r�r�r�r�r�rNr�r�r-rRr6r�)r#r�r/Zorig_getkeysdialogZgkd�gnknrrr�test_get_new_keys�sF             zKeysPageTest.test_get_new_keyscCs>tj}tdd�}t_|j}d|_|�|�d�d�|t_dS)NT)r�zNew Keysr)rr�rrEr�r5r)r#r�r�r/rrr�test_get_new_keys_name�s z#KeysPageTest.test_get_new_keys_namecCst|j}t�}|_|j�d�d|_|j��d|_d|_|� |jt j d�|j��|� |jt j d�|`dS)NTrzmy new key setrr) rErrr�rNr�Zbutton_save_custom_keysr-r6r�r rr\)r#r/rrrr�test_save_as_new_key_set s    z%KeysPageTest.test_save_as_new_key_setcCs�|j}|j}|�dd�|�dd�|�dd�|�d�|��|�d�|��|�d�\}}}}||d7}||d7}|j dddd�|j d ||d�|j d ||d�|j d ||d�|� |� d �d�|� |j � �d �dS)Nrr�r�r4�findrVz)r`razz zrbr)rEr�r�r�r2rZrcrGrdr[r5rRrr�)r#r/r�r`rarerfrrr�test_on_bindingslist_selects$       z(KeysPageTest.test_on_bindingslist_selectcCs|j}|j}|j�d�|j�d�d}d}|�|tj�|�|�|t� dd�|g�|t� d�t� |��||j � �|�|� |j� ��||jjd�t�d|dd �|�|tj�|�|�|t� dd�||g�|�t� |�t� |��t�d|dd �|t� |�t� |��dS) NTzIDLE Classic Windowszmy new custom key setzmy second custom keysetr�rr4r�z )r5rEr�rNr�r�r rZcreate_new_key_setr�� GetKeySetr�rRrSr�r6rr�rQr�)r#r�r/r�r�rrr�,test_create_new_key_set_and_save_new_key_set0s,        z9KeysPageTest.test_create_new_key_set_and_save_new_key_setcCsV|j}|j}t�}t_|`|j}|�dd�|�dd�|�dd�ddgdgd gd �|_ t � d d d d�d}|�d �||� dd�|�||� d�d�||� �d�|�d�|�d�|�d �||� dd�|�||� d�d�||� �d�|�d�|�d�|�d �||� dd�|�||� d�d�||� �d�t�|_t`dS)Nrr�z<>r4z<>zzzz )z<>z<>z<>rzmy keysr�z )z© - z,force-open-completions - zspam - rbrrz,force-open-completions - )r4rVzspam - )rV)r5rErr r r�r�r�r�r�rr�rRZ curselectionr�r�)r#r�r/Zgksr�rrrrr�test_load_keys_listOs>            z KeysPageTest.test_load_keys_listcCs2|j}|j}|j�d�t�}|_t�t_t�t_d}t j d� |dd�ddit |<d}t j d� |dd�dd it |<|j �d�|j ��|j�|�d |_|j��||jd �|t |ddi�|t �d d�||g�|tjjd �|tjjd �||jjd �d|_|j��||jd�|�|t �|t �d d�|g�||j ��d�||j��|�|tjjd �|tjjd �||jjd �|j�|�d|_|j��||jd�|�|t �|t �d d�g�||j ��d�||j��d�|tjjd�|tjjd�||jjd�t`t`|`dS)N)z !disabledz spam key setrr�r�r�r�z other key setr�Fr4r�rTrVrro)r�z- no custom keys -)r5rErr�rr�rr1r%r rr�r<r�r-r�rNr�r6r�r�r�rR)r#r�r/r�Z keyset_nameZ keyset_name2rrr�test_delete_custom_keyszs\                z$KeysPageTest.test_delete_custom_keysN)r&r'r(rxrIrJrKr�r�r�r�r�rrrrr r r r rrrrr�s    * 0 +r�c@s�eZdZedd��Zedd��Zdd�Zdd�Zd d �Zd d �Z d d�Z dd�Z dd�Z dd�Z dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&� GenPageTestcCs@tj}|_tj�|�t�|_|_t�|_|_ |� �dS)N) rZgenpagerEr:r;rrN�set_add_delete_state�upc�update_help_changesrG)rHrErrrrI�s   zGenPageTest.setUpClasscCs2|j}|`|`|`|`|j�dd�|j��dS)Nrr�) rErNrrr�helplistr�� user_helplistr)rHrErrrrJ�s zGenPageTest.tearDownClasscCs t��dS)N)rr)r#rrrrK�szGenPageTest.setUpcCs�|j}|j}|j�d�|j�d�|j�d�|j�d�|j�dd�ddg|_ t � dddd�|� �||j� �d �||j� �d �||j� �d �||j� �d �||j� d d�d �||j d g�dS)Nr4r�ZbadZworser� HelpFilesrLz name;filerZ80ri)r�)r��filerL)r5rEZ startup_editrN�autosaveZ win_widthZ win_heightrr�rr r�Zload_general_cfgrR)r#r�r/rrr�test_load_general_cfg�s      z!GenPageTest.test_load_general_cfgcCsN|j}|j��|�tdddii�t��|j��|�tdddii�dS)N�Generalzeditor-on-startuprLr�)rEZstartup_editor_onr-r5rqrrZstartup_shell_on)r#r/rrr� test_startup�s  zGenPageTest.test_startupcCsr|j}|j�dd�|j�dd�|�tdddii�t��|j�dd�|j�dd�|�tdddii�dS)Nrr��11rmZheight�width) rEZwin_height_intr�r�r5rqrrZ win_width_int)r#r/rrr�test_editor_size�szGenPageTest.test_editor_sizecCs$|jj��|�tdddii�dS)Nrmz cursor-blinkr�)rEZcursor_blink_boolr-r5rq)r#rrr�test_cursor_blink�s zGenPageTest.test_cursor_blinkcCs8|jj�dd�|jj�dd�|�tdddii�dS)Nrr�rZ AutoCompleteZ popupwait)rEZ auto_wait_intr�r�r5r�)r#rrr�test_autocomplete_wait�sz"GenPageTest.test_autocomplete_waitcCs�|j}|j}|jd�d�|tdddii�t��|j�dd�|j� dd�|tdddii�t��|j ��|tdd d ii�dS) NZmenurZ ParenMatchr��openerr�rz flash-delayZbellr�) rEr5Zparen_style_typer-r�rrZparen_flash_timer�r�Zbell_on)r#r/r�rrr�test_parenmatch�s zGenPageTest.test_parenmatchcCsF|j}|j��|�tdddii�|j��|�tdddii�dS)NrrrLr�)rEZ save_auto_onr-r5rqZ save_ask_on)r#r/rrr� test_autosave s   zGenPageTest.test_autosavecCs8|jj�dd�|jj�dd�|�tdddii�dS)Nrr�rZFormatParagraphz max-width)rEZformat_width_intr�r�r5r�)r#rrr�test_paragraphszGenPageTest.test_paragraphcCs8|jj�dd�|jj�dd�|�tdddii�dS)Nrr�rLZ CodeContextZmaxlines)rEZ context_intr�r�r5r�)r#rrr� test_contextszGenPageTest.test_contextcCs�|j}|j|_|j|_|j}d}|�|d�|�|�|��|� |�|� �|� |�\}}}}||d7}||d7}d|j_ |j_ |j dddd�|j d||d�|j d||d�|j d ||d�|�|�d �d�|�|jj �|�|jj �dS) Nr��sourcerVrz)r`razz zrb)rErrNrrrr�r2rZrcrGrdr6r[r5rRr?rS)r#r/rZdexr`rarerfrrr�test_source_selecteds*     z GenPageTest.test_source_selectedcCs�|j}|j}|`|j}|j}|�dd�|�||j��d�||j��d�|�dd�|�||j��d�||j��d�|� d�|�||j��d�||j��d�t �|_dS)Nrr�)r�r$r) r5rErrr�Zbutton_helplist_editr�Zbutton_helplist_remover�r�r)r#r�r/Zsad�hrrr�test_set_add_delete_state5s$   z%GenPageTest.test_set_add_delete_statecCs�|j}tj}tdd�}t_|j}|j�dd�|j��d|j _ |j _ d|_ |� �|�t|j�dd��|jko~gkn�|�|j j �d|_ |� �d|_ |� �||j�dd�d�||jddg�||j j d �|�|j j �|t_dS) NT)r�rr�r)�name1�file1)r��file2)r(r�rV)r5r� HelpSourcerrErr�rrrNr6rr�Zhelplist_item_addr?�listrRrS)r#r��orig_helpsourcer�r/rrr�test_helplist_item_addMs* z"GenPageTest.test_helplist_item_addcCs*|j}tj}tdd�}t_|j}|j�dd�|j�dd�|j�d�|j� d�|j � �|j � d�d|j _|j_d|_|��d|_|��||j�dd�d�||j dg�|�|jj�d |_|��||j�dd�d �||j d g�|�|jj|j jk�od kn�|t_dS) NT)r�rr�r()r(r)r)r()r�r*)r�r4)r5rr+rrErr�r�r�r�rr�appendrNr6rr�Zhelplist_item_editrRrSr?)r#r�r-r�r/rrr�test_helplist_item_editis0    (z#GenPageTest.test_helplist_item_editcCs�|j}|j}|j�dd�|j�dd�|j�d�|j�d�|j��|j� d�d|j _ |j _ |� �||j�dd�d�||jg�|�|j j |j j ko�dkn�dS)Nrr�r()r(r)rr4)r5rErr�r�r�r�rrr/rNr6rZhelplist_item_removerRr?)r#r�r/rrr�test_helplist_item_remove�s     z%GenPageTest.test_helplist_item_removecCsV|j}|`|j��|j�d�|j�d�|��|�tdddd��t�|_dS)N)r(r))r�r*rz name1;file1z name2;file2)rL�2)rErrrr/r5rqr)r#r/rrr�test_update_help_changes�s     z$GenPageTest.test_update_help_changesN)r&r'r(rxrIrJrKrrrrrr r!r"r#r%r'r.r0r1r3rrrrr�s$     rc@sdeZdZedd��Zedd��Zdd�Zdd�Zd d �Zd d �Z d d�Z dd�Z dd�Z dd�Z dS)� VarTraceTestcCs"t��|_tt�|_tt�|_dS)N)rZVarTracerrr�ivr �bv)rHrrrrI�s  zVarTraceTest.setUpClasscCs|`|`|`dS)N)rr5r6)rHrrrrJ�szVarTraceTest.tearDownClasscCs|j��d|_dS)Nr)rrr6)r#rrrrK�s zVarTraceTest.setUpcGs|jd7_dS)N� )r6)r#�paramsrrr�var_changed_increment�sz"VarTraceTest.var_changed_incrementcGsdS)Nr)r#r8rrr�var_changed_boolean�sz VarTraceTest.var_changed_booleancCs.|j}|��|�|jg�|�|jg�dS)N)r�__init__r5�untraced�traced)r#�trrrr� test_init�szVarTraceTest.test_initcCsF|j}|j�d�|j�d�|��|�|jg�|�|jg�dS)Nrr4)rr<r/r=rr5)r#r>rrr� test_clear�s   zVarTraceTest.test_clearc Cs�|j}t�}tj|d�}|_|�|j|j�}|�||j�|�|j |j �}|�||j �t t �}|�|d�}|�||�|� �|�|d�||jf||j f||fg}|�|jg�|�|j|�|`dS)N)r�)rr�r�)rrrr*� make_callback�addr5r9ZassertIsr6r:rrr.Zassert_called_withr5r=r<) r#r>�func�cbr5r6�svZsv2rrrrr�test_add�s$    zVarTraceTest.test_addcCst|j�|jd�}|�t|��|j�d�|�dtd�|�|�dtd�|� tdddd�t� �dS)N)rr�r��*r�rr�Z42) rrAr5r?�callablerNr�rr\r5r)r#rDrrr�test_make_callback�s zVarTraceTest.test_make_callbackcCs�|j}|�|j|j�}|�|j|j�}||jf||jfg}|��|�|jg�|� |j |�|� d�|�|� �d�|�|j d�d|_ |��|� d�|�|j d�d|_ |��|�|j g�|� |j|�|� d�|�|j d�dS)Nr4r7r)rrBr5r9r6r:rTr5r<ZassertCountEqualr=rNrRr6r)r#r>r5r6rrrrr�test_attach_detach�s*    zVarTraceTest.test_attach_detachN)r&r'r(rxrIrJrKr9r:r?r@rFrIrJrrrrr4�s   r4�__main__rV)� verbosity)+ZidlelibrZ test.supportrZunittestrZidlelib.idle_test.mock_idlerZtkinterrrrr r r r Zidlelib.configdialogr rrrrZIdleUserConfParserrrrrqr�r<r�rr!ZTestCaser"r)rCryr�r�rr4r&rrrrr�sP        +oh