B ãxácNÔã@s’dZddlmZddlmZedƒddlZddlmZddlmZddl m Z m Z m Z m Z mZmZdd lmZdd lmZmZmZejZe d ¡e d ¡e d ¡e d ¡d œZdadaed ZedZedZedZdd„Zdd„Z Gdd„dej!ƒZ"Gdd„dej!ƒZ#Gdd„dej!ƒZ$Gdd„dej!ƒZ%Gdd„dej!ƒZ&Gdd „d ej!ƒZ'Gd!d"„d"ej!ƒZ(Gd#d$„d$ej!ƒZ)e*d%krŽej+d&d'dS)(zfTest configdialog, coverage 94%. Half the class creates dialog, half works with user customizations. é)Ú configdialog)ÚrequiresZguiN)Úmock)ÚFunc)ÚTkÚ StringVarÚIntVarÚ BooleanVarÚDISABLEDÚNORMAL)Úconfig)ÚidleConfÚchangesÚtracersÚ)ÚmainÚ highlightÚkeysÚ extensionsrrrrcCs tt_tƒatjtdddadS)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@sheZdZdZedd„ƒZedd„ƒZdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„ZdS)Ú FontPageTestzîTest that font widgets enable users to make font changes. Test that widget actions set vars, that var changes add three options to changes and call set_samples, and that set_samples changes the font of both sample boxes. cCs,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)rEZsizelistZvariablerNr5rOrR)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^)rsrtrm) rErFZ font_sampleÚhighlight_samplerMrNrOrPr?r)r#r/Z orig_samplesrqrrrÚtest_set_samplesõs    " zFontPageTest.test_set_samplesN)r&r'r(Ú__doc__Ú classmethodrIrJrKrUr_rgrjrkrrrvrrrrrCis   $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|rRrp)r#r/rrrÚtest_indent_scales  zIndentTest.test_indent_scaleN)r&r'r(rxrIr}rrrrrrys ryc@sÐeZdZdZedd„ƒZedd„ƒZdd„Zdd „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.d/„Zd0S)1Ú HighPageTestz¶Test that highlight tab widgets enable users to make changes. Test that widget actions set vars, that var changes add options to changes and that themes work correctly. cCsDtj}|_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}tjddt_| ¡|  |j   ¡¡||j   ¡dƒ||j   ¡dƒ||j ¡dƒ||jjdƒ||jjdƒ||jjdƒt dddd ¡t dd d d ¡| ¡||j   ¡dƒ||j   ¡dƒ||jjd ƒ||jjd ƒ||jjd ƒtjd dt_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Ú0rn)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-rpr6rrr˜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¤rVrrn) r5rEr ršÚ builtinlistÚSetMenurpZ 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§Ú assertNotInrpr5rƒ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||ddS)NrVzr)r`razzz)rdr[)Ústartr`rarerf)ÚhsrrÚclick_itÈs  z?HighPageTest.test_highlight_target_text_mouse..click_itrVr4) r5rErurZrcrZ tag_namesÚ tag_rangesr²rRr„r6)r#r›rµÚcountr·rºr¶Z start_indexr)r/r¹rÚ test_highlight_target_text_mouse¸s"   z-HighPageTest.test_highlight_target_text_mousecCs’|j}|j}|j}| ¡| d¡| ¡|jdddd|jddddx0tdƒD]$}|jdddd|jddddqVW|| d ¡d ƒdS) Ngð?zr)r`razrVzzÚselr) r5rErurZrcrr[Ú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) r5rErurZrcrZ 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ÌruÚ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ÌrurÓ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ƒrurÓ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Žrrz other themeržFr4r†rTrVrrn)r‹z- no custom themes -)r5rErÅr™rÚaskyesnorr1r%r rršrr˜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(rwrxrIrJrKrœr¡r©r¯r±r³r½rÁrÃrÆrÎrÔrÙrÚràrärårærèrërrrrr€s0  ) %/      r€c@s˜eZdZdZedd„ƒZedd„ƒZdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"S)#Ú KeysPageTestz´Test that keys tab widgets enable users to make changes. Test that widget actions set vars, that var changes add options to changes and that key sets works correctly. cCs,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}tjddt_| ¡|  |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 dt_tjddt_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ŒrrŽrrr‘rVzIDLE Modern UnixrÚKeysr“r”rn)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“rr4r)z !disabledrž) r5rErrŸr Zbuiltin_keyset_onr-rpr6rrrñ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¤rVrrn)zIDLE Classic OSX)r5rEr rrˆr¦r§rpZ 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®rpr5rî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) NrZZzDummyZenablerzmy 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«rqrrrÚ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Žrrz other key setržFr4r†rTrVrrn)r‹z- no custom keys -)r5rErÿr™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(rwrxrIrJrKrórôr©r¯rþrrrrrr r r rrrrrìs"   * 0 +rìc@s¨eZdZdZedd„ƒZedd„ƒZdd„Zdd „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&S)'Ú GenPageTestz·Test that general tab widgets enable users to make changes. Test that widget actions set vars, that var changes add options to changes and that helplist works correctly. cCs@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-r5rprrZstartup_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õÚ11rlZheightÚwidth) rEZwin_height_intrørùr5rprrZ win_width_int)r#r/rrrÚtest_editor_sizeìszGenPageTest.test_editor_sizecCs$|jj ¡| tdddii¡dS)Nrlz cursor-blinkrž)rEZcursor_blink_boolr-r5rp)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-r5rpZ 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 jkod 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.r5rpr)r#r/rrrÚtest_update_help_changes—s     z$GenPageTest.test_update_help_changesN)r&r'r(rwrxrIrJrKrrrrrrr r!r"r$r&r-r/r0r2rrrrr ¶s&     r c@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)rr4r5)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#r7rrrÚ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Úaddr4r8ZassertIsr5r9rrr.Zassert_called_withr5r<r;) r#r=ÚfuncÚcbr4r5ZsvZsv2rqrrrÚtest_addÈs$    zVarTraceTest.test_addcCst|j |jd¡}| t|ƒ¡|j d¡| dtd¡|ƒ| dtd¡|  tdddd¡t  ¡dS)N)rr‰ré*r‰rrZ42) rr@r4r?ÚcallablerNr®rr\r5r)r#rCrrrÚ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)Nr4r6r)rrAr4r8r5r9rTr5r;ZassertCountEqualr<rNrRr6r)r#r=r4r5rqrrrÚtest_attach_detachìs*    zVarTraceTest.test_attach_detachN)r&r'r(rxrIrJrKr8r9r>r?rDrGrHrrrrr3¤s   r3Ú__main__rV)Ú verbosity),rwZidlelibrZ test.supportrZunittestrZidlelib.idle_test.mock_idlerZtkinterrrrr r r r Zidlelib.configdialogr rrrrZIdleUserConfParserrrrrprr<rýrr!ZTestCaser"r)rCryr€rìr r3r&rrrrrÚsR        +oh