a 9êdg0Øã@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)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ú?/usr/local/lib/python3.9/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)ÚConfigDialogTestcCsdSrr©ÚselfrrrÚtest_deactivate_current_config7sz/ConfigDialogTest.test_deactivate_current_configcCsdSrrr$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_okcCsht}t ¡}|_t ¡}|j_t ¡}|_|jd ¡|  ¡|  ¡|  ¡|j`|`|`dS)NZApply) rrr,Údeactivate_current_configÚextpageZsave_all_changed_extensionsr'r.r/r0)r%r1Z deactivateZsave_extÚactivaterrrÚtest_click_applyIszButtonTest.test_click_applycCsNt}tƒ|_dtdd<|jd ¡| tdi¡| |jjd¡|`dS)NérZ somethingZCancel)rrr!rr.r/Ú assertEqualÚcalled©r%r1rrrÚtest_click_cancelUs zButtonTest.test_click_cancelcCsŽtj tj¡tjjtdtd4}tj d  ¡|j d|j d}}Wdƒn1sZ0Y|  |d¡|  | d¡o†| d¡¡dS) NZ view_text)Z new_callableZHelpÚtitleÚcontentszHelp for IDLE preferenceszWhen you clickza different name. )rÚnoteÚselectÚkeyspagerZpatchÚobjectrrr.r/Úkwdsr8Ú assertTrueÚ startswithÚendswith)r%Úviewr<r=rrrÚtest_click_help^s ÿ4 ÿzButtonTest.test_click_helpN)r(r)r*r2r6r;rGrrrrr+>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ƒ|_| ¡dSr)rZfontpageÚpager>r?rÚ set_samplesÚupdate©ÚclsrIrrrÚ setUpClassps  zFontPageTest.setUpClasscCs |j`dSr)rIrJ©rMrrrÚ tearDownClasswszFontPageTest.tearDownClasscCs t ¡dSr©rrr$rrrÚsetUp{szFontPageTest.setUpcCs’t ¡|j}|j d¡|j d¡|j d¡d|j_|  ¡|  |j  ¡d¡|  |j  ¡d¡|  |j  ¡¡|  |jjd¡t ¡dS)NZFakeÚ1Trr7)rrrIÚ font_nameÚsetÚ font_sizeÚ font_boldrJr9Z load_font_cfgÚassertNotEqualÚgetÚ assertFalser8Úattachr: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éúneed at least 2 fontsrZactivez zzz)rIÚfontlistÚsizeÚskipTestr5rYÚ focus_forcerKÚevent_generaterXÚassertInrTÚlowerr8)r%r1r_Ú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) Nr]r^rr7ú ©ÚxÚyúÚanchor)rIr_r`rar5rbÚseerKÚbboxrcrYr8rdrTre) r%r1r_rjrkÚdxÚdyZfont1Z select_fontrrrÚtest_fontlist_mouse«s"        z FontPageTest.test_fontlist_mousecCs*|j}|jj d¡| |j ¡d¡dS)Né(Ú40)rIZsizelistÚvariablerUr8rVrYr:rrrÚ test_sizelistÂszFontPageTest.test_sizelistcCsJ|j}|j d¡|j ¡| |j ¡¡|j ¡| |j ¡¡dS)NF)rIrWrUZ bold_toggler/rCrYrZr: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Ú EditorWindowr7r]Úboldrz Test Font)rfz font-sizez font-boldZ20é)r ZGetFontrÚstrrIrVrUrWrJr9rTr8Úmainpagerr)r%Z default_fontZ default_sizeZ default_boldr1ÚexpectedrrrÚ test_font_setÑs<     þ  þ þ zFontPageTest.test_font_setcCs’|j}|`|j|jf}ii|_|_|j d¡|j d¡|j d¡ddi}| ¡| |j|jkor|kn¡|\|_|_t ƒ|_dS)NÚtestÚ5r7rf)rr€ry) rIrJZ font_sampleÚhighlight_samplerTrUrVrWrCr)r%r1Z orig_samplesr}rrrÚtest_set_samplesõs    " zFontPageTest.test_set_samplesN)r(r)r*Ú__doc__Ú classmethodrNrPrRr\rgrrrvrwr~r‚rrrrrHis   $rHc@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ƒ|_ |  ¡dSr) rÚhighpagerIr>r?rÚset_theme_typeÚpaint_theme_sampleÚset_highlight_targetÚset_color_samplerKrLrrrrNs  zHighPageTest.setUpClasscCs|j}|`|`|`|`dSr)rIr‡rˆr‰rŠ)rMr1rrrrPszHighPageTest.tearDownClasscCsT|j}t dd¡D]}tjd |¡qt ¡d|j_d|j _d|j _d|j _dS)NÚuserrr) rIr ÚGetSectionListrÚremove_sectionrrr‡r9rˆr‰rŠ©r%r1ÚsectionrrrrRszHighPageTest.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)Nú IDLE Classic©Z return_valueú- no custom themes -©Údisabledr7rÚtest1ÚoptionÚvalueÚtest2Úoption2Úvalue2r]rÚThemeÚdefaultÚ0rz)rrrIr8rr,r Z CurrentThemeZload_theme_cfgrCÚ theme_sourcerYÚ builtin_nameÚ custom_nameÚcustom_theme_onÚstater‡r9rˆr‰Ú SetOptionrZr[©r%r1Ú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œÚTruer7r©z !disabledÚFalse) r8rIrÚvar_changed_builtin_nameÚvar_changed_custom_nameZbuiltin_theme_onr/r|r9rrr¡r¢©r%r¥r1rrrÚtest_theme_sourceSs   zHighPageTest.test_theme_sourcecCs|j}|j}gd¢}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)N)rú IDLE DarkúIDLE Newrr›ÚnameÚspamr®r©r°Úname2ÚtextzNew theme, see Helpr7r¯r³r]rrz) r8rIr r£Ú builtinlistÚSetMenur|Z theme_messagerˆr9rr©r%r¥r1Z item_listrrrÚtest_builtin_namehs*ÿ zHighPageTest.test_builtin_namecCsr|j}|j gd¡| dt¡| |jjd¡t  ¡|j gd¢d¡| tdddii¡| |jjd¡dS)Nr’r›r©ÚaÚbÚcr¼r°r7) rIÚ customlistr¶Ú assertNotInr|r8rˆr9rrr:rrrÚtest_custom_name„s zHighPageTest.test_custom_namecCs2|j}tƒ|_|j d¡| |jjd¡|`dS)NZgreenr7)rIrZon_new_color_setÚcolorrUr8r9r:rrrÚ test_color’s  zHighPageTest.test_colorcCs@|j}|j}|j gd¢d¡||j ¡dƒ||jjdƒdS)Nr¹r¼r7)r8rIZ targetlistr¶Úhighlight_targetrYr‰r9r¬rrrÚ test_highlight_target_list_mousešs z-HighPageTest.test_highlight_target_list_mousecs²|j}|j‰i}d}ˆj‰ˆ ¡ˆ d¡ˆ ¡‡fdd„}‡fdd„}||ƒˆ ¡D]P}ˆ |¡ddd…D]6}|d7}||ƒ|ˆj  ¡||ƒ|ˆj j |ƒqtq\dS) Nrçð?cs$ˆj ¡D]\}}|||d<q dS©Nr)Ztheme_elementsÚitems)ÚelemÚelementÚtag)r1rrÚtag_to_element¯szEHighPageTest.test_highlight_target_text_mouse..tag_to_elementcsnˆ |¡\}}}}||d7}||d7}ˆjddddˆjd||dˆjd||dˆjd||ddS)Nr]úrriúúrl)rorc)Ústartrjrkrprq)ÚhsrrÚclick_it³s  z?HighPageTest.test_highlight_target_text_mouse..click_itr]r7) r8rIrrbrnr Z tag_namesÚ tag_rangesrÂrYr‰r9)r%r¥rÇÚcountrÊrÐrÉÚ start_indexr)r1rÏrÚ test_highlight_target_text_mouse£s"    z-HighPageTest.test_highlight_target_text_mousecCsŽ|j}|j}|j}| ¡| d¡| ¡|jdddd|jddddtdƒD]$}|jdddd|jddddqT|| d ¡d ƒdS) NrÄrËrrirÌr]rÍrlÚselr) r8rIrrbrnr rcÚrangerÑ)r%r¥r1rÏÚ_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) NrÄz1.0zrËrÌrirÍz rlrÕr) r8rIrrbrnr Z dlineinforcrÑ) r%r¥r1rÏrjrkrprqÚ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) r8rIr‡ržrUrµr r½r Úbutton_delete_customr¢r¡rr¬rrrÚtest_set_theme_typeòs  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@çrâú#de0000Tr7z My New ThemerãF)r8rIrZ colorchooserZaskcolorrÚget_new_theme_namerÂrUrÀÚresultZbutton_set_colorr/rYràÚlookupÚframe_color_setržr9r )r%r¥r1Z 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ÚPythonú Selected TextTràráÚhiliteÚ foregroundzhilite-foreground) rIr rUrÂÚ fg_bg_togglerÀr8ràrærçrÚtag_cgetr†)r%r1rÀrrrÚtest_on_new_color_set6s     ÿz"HighPageTest.test_on_new_color_setcCs>tj}tdd}t_|j}d|_| | d¡d¡|t_dS)NT©Z return_selfz New Themer)rÚ SectionNamerrIrår8rä©r%Zorig_sectionnameZsnr1rrrÚtest_get_new_theme_nameCs 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) rIrräržrUråZbutton_save_customr/r¾r rr9rd)r%r1rèrrrÚtest_save_as_new_themeMs    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) NTrzmy new custom themezmy second custom themer‹rrœr7zhit-backgroundÚyellow)r8rIržrUrŸr¾r rÚ create_newrŒZ GetThemeDictr rYrZr‡r9rÚ add_optionrXr£©r%r¥r1Z first_newZ second_newrrrÚtest_create_new_and_save_new`s4     ÿ  ÿ  ÿ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“r7ÚCommentrÜrr]) r8rIr‰rÂrUÚfg_onr¢Úbg_onrCrîrŠr9rr¬rrrÚtest_set_highlight_target€s    z&HighPageTest.test_set_highlight_targetcCs@|j}|j}|j ¡| |jd¡|j ¡| |jd¡dS)Nr7r])rIrŠrür/r8r9rý)r%r1ZscsrrrÚtest_set_color_sample_binding•s   z*HighPageTest.test_set_color_sample_bindingcCs\|j}|`|j d¡|j d¡| ¡| |j |jdd¡|j   dd¡¡t ƒ|_dS)NrëTràrárìrí) rIrŠrÂrUrîr8ràrærçrrïrr: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œ}|  ¡D]\}}| |d|ƒ|¡qf||j j d ƒ|  ¡D]\}}t d |d ||¡q˜| ¡|  ¡D]\}}||d|ƒ|ƒqÆ||j j d ƒtƒ|_dS) NTr®z IDLE TestrZbluerö)ríráZconsoler7rzconsole-r])r8rIrˆrrïr Z GetHighlightržrUrŸr÷rŠr9rÆrXrrør) r%r¥rIZhs_tagZghZthemeZ new_consoleÚkeyr—rrrÚtest_paint_theme_sampleªs0   ÿ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)Nr¨z spam themerr°r—r–r§z other themer©Fr7r‹rTr]rrzr“r’)r8rIrÞr¢rÚaskyesnorr3r'r rr£r†r¡r/r rUrår9rŒr‡r¾rY)r%r¥r1ÚyesnoZ theme_nameZ theme_name2rrrÚtest_delete_customÊs\                zHighPageTest.test_delete_customN)r(r)r*rƒr„rNrPrRr¦r­r¸r¿rÁrÃrÔrØrÚrßrérðrôrõrúrþrÿrrrrrrrr…s4   ) %/      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ƒ|_dSr)rr@rIr>r?rÚ set_keys_typeÚload_keys_listrLrrrrN s  zKeysPageTest.setUpClasscCs|j}|`|`dSr)rIrrrLrrrrPszKeysPageTest.tearDownClasscCsD|j}t dd¡D]}tjd |¡qt ¡d|j_d|j _dS)Nr‹rr) rIr rŒrrrrrr9rrŽrrrrRs 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)NúIDLE Classic OSXr‘ú- no custom keys -r“r7©r rr•r–r—r˜r™ršr]zIDLE Modern UnixrÚKeysrœrrz)r˜)rrrIr8rr,r Z CurrentKeysZ load_key_cfgrCÚ keyset_sourcerYrŸr Úcustom_keyset_onr¢rr9rÚargsr£Z default_keysrZr[r¤rrrÚtest_load_key_cfg#s@zKeysPageTest.test_load_key_cfgcCs®|j}|j}tƒ|_tƒ|_|j ¡|tdddiiƒ||jjdƒ||jjdƒt   ¡|j   d¡|j  ¡| tdddii¡||jjdƒ||jjdƒ|`|`dS)Nr rœr§r7rr¨r©) r8rIrrªr«Zbuiltin_keyset_onr/r|r9rrrr¢r¬rrrÚtest_keyset_sourceMs   zKeysPageTest.test_keyset_sourcecCs0|j}|j}tjd d¡gd¢}|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 )úIDLE Classic Windowsr úIDLE Modern UNIXrrr²r´zNew key set, see Helpr7)rr°zIDLE Classic Unixr³r]r rrzr )r8rIr rrrµr¶r|Z keys_messagerr9rrrr£r·rrrr¸bs0ÿ zKeysPageTest.test_builtin_namecCsr|j}|j gd¡| dt¡| |jjd¡t  ¡|j gd¢d¡| tdddii¡| |jjd¡dS)Nr r rr¹r¼r°r7) rIr½r¶r¾r|r8rr9rrr: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) NrZZzDummyÚenabler§zmy custom keysrÚendÚcopyr7zz-inú ZZzDummy_cfgBindings)r r£rIr rUÚ bindingslistÚdeleteÚinsertÚ selection_setÚselection_anchorÚ keybindingr8r@r4r:rrrÚtest_keybindings$     ÿ    ÿzKeysPageTest.test_keybindingcCs´|j}|j}|`|j d¡| ¡||jdtƒ||jdtƒ||j   ¡dƒ|j d¡| ¡||jdtƒ||j   ¡dƒ||jdtƒ||j   ¡dƒt ƒ|_dSrÛ) r8rIrr rUrµr r½r Úbutton_delete_custom_keysr¢rrr¬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)NTrñr¨rrzcopy - zKey-arrmrr7zMy New Key Setzcopy - Fzzcopy - )r8rIrZ GetKeysDialogrÚget_new_keys_nameÚbutton_new_keysr¢rrrrrrrUr rår/rYr9r )r%r¥r1Zorig_getkeysdialogZgkdÚgnknrrrÚtest_get_new_keysºsF             zKeysPageTest.test_get_new_keyscCs>tj}tdd}t_|j}d|_| | d¡d¡|t_dS)NTrñzNew Keysr)rròrrIrår8r!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) rIrr!r rUråZbutton_save_custom_keysr/r9r¾r rrd)r%r1r#rrrÚ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)Nrrrr7Úfindr]rËrirÌrhrlrmr)rIrrrr5rbrnrKrorcr8rYr"r¢)r%r1r»rjrkrprqrrrÚ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) NTrzmy new custom key setzmy second custom keysetr‹rr7rr)r8rIr rUrŸr¾r rZcreate_new_key_setrŒÚ GetKeySetr rYrZrr9rrørXr£rùrrrÚ,test_create_new_key_set_and_save_new_key_sets0    ÿ  ÿ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)Nrrz<>r7z<>zzzr)z<>z<>z<>rzmy keysr±z )z© - ú,force-open-completions - úspam - rmrrr+)r7r]r,)r])r8rIrr r)rrrrrårrørYZ curselectionrr)r%r¥r1Zgksr»r}rrrÚtest_load_keys_list:s@    þ       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)Nr¨z spam key setrr°r—r–r§z other key setr©Fr7r‹rTr]rrzr“r )r8rIrr¢rrrr3r'r rr£r@rr/r rUrår9rŒrr¾rY)r%r¥r1rZ keyset_nameZ keyset_name2rrrÚtest_delete_custom_keyses\                z$KeysPageTest.test_delete_custom_keysN)r(r)r*rƒr„rNrPrRrrr¸r¿rr r$r%r&r(r*r-r.rrrrrs&   * 0 +rc@sdeZdZdZedd„ƒZdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„ZdS)Ú WinPageTestz•Test that general tab widgets enable users to make changes. Test that widget actions set vars, that var changes add options to changes. cCs$tj}|_tj |¡| ¡dSr)rZwinpagerIr>r?rKrLrrrrN§s  zWinPageTest.setUpClasscCs t ¡dSrrQr$rrrrR­szWinPageTest.setUpcCsl|j}|j}|j d¡|j d¡|j d¡| ¡||j ¡dƒ||j ¡dƒ||j ¡dƒdS)Nr7rZ80rt)r8rIZ startup_editrUZ win_widthZ win_heightZload_windows_cfgrYr¬rrrÚtest_load_windows_cfg°s   z!WinPageTest.test_load_windows_cfgcCsN|j}|j ¡| tdddii¡t ¡|j ¡| tdddii¡dS)NÚGeneralzeditor-on-startuprSr)rIZstartup_editor_onr/r8r|rrZstartup_shell_onr:rrrÚ test_startup¼s  ÿ  ÿzWinPageTest.test_startupcCsr|j}|j dd¡|j dd¡| tdddii¡t ¡|j dd¡|j dd¡| tdddii¡dS)NrrÚ11rxZheightÚwidth) rIZwin_height_intrrr8r|rrZ win_width_intr:rrrÚtest_editor_sizeÆszWinPageTest.test_editor_sizecCs<|j}|j d¡| |j ¡d¡| tdddii¡dS)NéÚ6ZIndentz num-spaces)rIZindent_chooserrUr8Z indent_spacesrYr|r:rrrÚtest_indent_spacesÐs zWinPageTest.test_indent_spacescCs$|jj ¡| tdddii¡dS)Nrxz cursor-blinkr©)rIZcursor_blink_boolr/r8r|r$rrrÚtest_cursor_blinkÖs zWinPageTest.test_cursor_blinkcCs8|jj dd¡|jj dd¡| tdddii¡dS)Nrrr3Z AutoCompleteZ popupwait)rIZ auto_wait_intrrr8r4r$rrrÚtest_autocomplete_waitÚsz"WinPageTest.test_autocomplete_waitcCsŒ|j}|j}|jd d¡|tdddiiƒt ¡|j dd¡|j  dd¡|tdddiiƒt ¡|j  ¡|tdd d iiƒdS) NZmenurZ ParenMatchràÚopenerrr3z flash-delayZbellr©) rIr8Zparen_style_typer/r4rrZparen_flash_timerrZbell_onr¤rrrÚtest_parenmatchßs zWinPageTest.test_parenmatchcCs8|jj dd¡|jj dd¡| tdddii¡dS)Nrrr3ZFormatParagraphz max-width)rIZformat_width_intrrr8r4r$rrrÚtest_paragraphìszWinPageTest.test_paragraphN)r(r)r*rƒr„rNrRr0r2r5r8r9r:r<r=rrrrr/¡s     r/c@s<eZdZdZedd„ƒZdd„Zdd„Zdd „Zd d „Z d S) Ú ShedPageTestz’Test that shed tab widgets enable users to make changes. Test that widget actions set vars, that var changes add options to changes. cCs$tj}|_tj |¡| ¡dSr)rZshedpagerIr>r?rKrLrrrrNøs  zShedPageTest.setUpClasscCs t ¡dSrrQr$rrrrRþszShedPageTest.setUpcCs4|j}|j}|j d¡| ¡||j ¡dƒdS)Nr7r)r8rIÚautosaverUZload_shelled_cfgrYr¬rrrÚtest_load_shelled_cfgs  z"ShedPageTest.test_load_shelled_cfgcCsF|j}|j ¡| tdddii¡|j ¡| tdddii¡dS)Nr1r?rSr)rIZ save_auto_onr/r8r|Z save_ask_onr:rrrÚ test_autosave s   zShedPageTest.test_autosavecCs8|jj dd¡|jj dd¡| tdddii¡dS)NrrrSZ CodeContextZmaxlines)rIZ context_intrrr8r4r$rrrÚ test_contextszShedPageTest.test_contextN) r(r)r*rƒr„rNrRr@rArBrrrrr>òs r>c@seZdZdZedd„ƒZdS)Ú ExtPageTestú/Test that the help source list works correctly.cCstj}tj |¡dSr)rr4r>r?rLrrrrNszExtPageTest.setUpClassN)r(r)r*rƒr„rNrrrrrCsrCc@sheZdZdZedd„ƒZedd„ƒZdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dd„ZdS)ÚHelpSourceTestrDcCsFtj}tj |¡|j}|_tƒ|_|_tƒ|_ |_ |  ¡dSr) rr4r>r?Z frame_helpÚframerrUÚset_add_delete_stateÚupcÚupdate_help_changesrK)rMrIrFrrrrN!s   zHelpSourceTest.setUpClasscCs2|j}|`|`|`|`|j dd¡|j ¡dS)Nrr) rFrUrGrHrIÚhelplistrÚ user_helplistr)rMrFrrrrP*s zHelpSourceTest.tearDownClasscCs t ¡dSrrQr$rrrrR2szHelpSourceTest.setUpcCsb|j}|j}|j dd¡ddg|_t dddd¡| ¡||j dd¡d ƒ||jd gƒdS) NrZbadZworserÚ HelpFilesrSz name;filer)r°)r°ÚfilerS) r8rFrJrrKr r£Z load_helplistrY©r%r¥ÚfrrrrÚtest_load_helplist5s z!HelpSourceTest.test_load_helplistcCsü|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Úsourcer]rrËrirÌrhrlrm)rFrGrUrIrHrJrr5rbrnrKror9rcr8rYrCrZ)r%rOrJZdexrjrkrprqrrrÚtest_source_selected?s*     z#HelpSourceTest.test_source_selectedcCs¼|j}|j}|`|j}|j}| dd¡|ƒ||j ¡dƒ||j ¡dƒ| dd¡|ƒ||j ¡dƒ||j ¡dƒ|  d¡|ƒ||j ¡dƒ||j ¡dƒt ƒ|_dS)Nrrr“rQr) r8rFrGrJrZbutton_helplist_editr¢Zbutton_helplist_removerrr)r%r¥rOZsadÚhrrrÚtest_set_add_delete_stateWs$   z(HelpSourceTest.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) NTrñrrr©Úname1Zfile1©r³Zfile2)rVr³r])r8rÚ HelpSourcerrFrJrrKrrUr9rHråZhelplist_item_addrCÚlistrYrZ©r%r¥Zorig_helpsourcerÏrOrrrÚtest_helplist_item_addos0 ÿÿ z%HelpSourceTest.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) NTrñrrrVrUr)rVrW)r³r7)r8rrXrrFrJrrrrrKrÚappendrUr9rHråZhelplist_item_editrYrZrCrZrrrÚtest_helplist_item_edit‹s0    (z&HelpSourceTest.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)NrrrVrUrr7)r8rFrJrrrrrKrr\rUr9rHZhelplist_item_removerYrCrNrrrÚtest_helplist_item_remove©s     z(HelpSourceTest.test_helplist_item_removecCsV|j}|`|j ¡|j d¡|j d¡| ¡| tddddœ¡tƒ|_dS)NrUrWrLz name1;file1z name2;file2)rSÚ2)rFrIrKrr\r8r|r)r%rOrrrÚtest_update_help_changes¹s    ÿz'HelpSourceTest.test_update_help_changesN)r(r)r*rƒr„rNrPrRrPrRrTr[r]r^r`rrrrrEs   rEc@sdeZdZedd„ƒZedd„ƒZdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dS)Ú VarTraceTestcCs"t ¡|_ttƒ|_ttƒ|_dSr)rZVarTracerrrÚivr ÚbvrOrrrrNÈs  zVarTraceTest.setUpClasscCs|`|`|`dSr)rrbrcrOrrrrPÎszVarTraceTest.tearDownClasscCs|j ¡d|_dSrÅ)rrr9r$rrrrRÒs zVarTraceTest.setUpcGs|jd7_dS)Né )r9©r%ÚparamsrrrÚvar_changed_incrementÖsz"VarTraceTest.var_changed_incrementcGsdSrrrerrrÚvar_changed_booleanÙsz VarTraceTest.var_changed_booleancCs.|j}| ¡| |jg¡| |jg¡dSr)rÚ__init__r8ÚuntracedÚtraced©r%ÚtrrrrÚ test_initÜszVarTraceTest.test_initcCsF|j}|j d¡|j d¡| ¡| |jg¡| |jg¡dS)Nrr7)rrjr\rkrr8rlrrrÚ 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)Nr‘©rrr–)rrrr,Ú make_callbackÚaddrbrgZassertIsrcrhrrr0Zassert_called_withr8rkrj) r%rmÚfuncÚcbrbrcÚsvZsv2r}rrrÚtest_addês&   þzVarTraceTest.test_addcCst|j |jd¡}| t|ƒ¡|j d¡| dtd¡|ƒ| dtd¡|  tdddd¡t  ¡dS)Nrpé*rrr–Z42) rrqrbrCÚcallablerUr¾rrdr8r)r%rtrrrÚtest_make_callbacks 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)Nr7rdr)rrrrbrgrcrhr[r8rjZassertCountEqualrkrUrYr9r)r%rmrbrcr}rrrÚtest_attach_detachs,ÿ   zVarTraceTest.test_attach_detachN)r(r)r*r„rNrPrRrgrhrnrorvryrzrrrrraÆs   raÚ__main__r])Ú verbosity).rƒZidlelibrZ test.supportrZunittestrZidlelib.idle_test.mock_idlerÚtkinterrrrr r r r Zidlelib.configdialogr rrrrZIdleUserConfParserrrrr|r†r@r4rr"ZTestCaser#r+rHr…rr/r>rCrErar(rrrrrÚsX      ü  +Q%(h