B  fN@sdZddlmZddlmZedddlZddlmZddlmZddl m Z m Z m Z m Z mZmZdd lmZdd lmZmZmZejZed ed ed ed d Zdadaed ZedZedZedZddZddZ Gdddej!Z"Gdddej!Z#Gdddej!Z$Gdddej!Z%Gdddej!Z&Gdd d ej!Z'Gd!d"d"ej!Z(Gd#d$d$ej!Z)e*d%krej+d&d'dS)(zfTest configdialog, coverage 94%. Half the class creates dialog, half works with user customizations. ) configdialog)requiresZguiN)mock)Func)Tk StringVarIntVar BooleanVarDISABLEDNORMAL)config)idleConfchangestracers)main highlightkeys extensionsrrrrcCs tt_tatjtdddadS)NZTestT)Z_utest)testcfgr userCfgrrootrZ ConfigDialogdialogrrH/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_configdialog.py setUpModule"srcCs:tt_ttttt daa dS)N) usercfgr rrdetachclearrrupdate_idletasksdestroyrrrrrtearDownModule*sr!c@seZdZddZddZdS)ConfigDialogTestcCsdS)Nr)selfrrrtest_deactivate_current_config7sz/ConfigDialogTest.test_deactivate_current_configcCsdS)Nr)r#rrractivate_config_changes:sz(ConfigDialogTest.activate_config_changesN)__name__ __module__ __qualname__r$r%rrrrr"5sr"c@s,eZdZddZddZddZddZd S) ButtonTestcCsJt}t}|_t}|_|jd|||`|`dS)NZOk)rrMockapplyr buttonsinvokeassert_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_extactivaterrrtest_click_applyIszButtonTest.test_click_applycCsNt}t|_dtdd<|jd|tdi||jjd|`dS)NrZ somethingZCancel)rrr rr,r- assertEqualcalled)r#r/rrrtest_click_cancelUs zButtonTest.test_click_cancelc Csztjtjtjjtdtd*}tj d |j d|j d}}WdQRX| |d| |dor|ddS) NZ view_text)Z new_callableZHelptitlecontentszHelp for IDLE preferenceszWhen you clickza different name. )rnoteselectkeyspagerZpatchobjectrrr,r-kwdsr5 assertTrue startswithendswith)r#Zviewr8r9rrrtest_click_help^s    zButtonTest.test_click_helpN)r&r'r(r0r3r7rBrrrrr)>s   r)c@sheZdZdZeddZeddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZdS) FontPageTestzTest 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)rfontpagepager:r;r set_samplesupdate)clsrErrr setUpClassps  zFontPageTest.setUpClasscCs |j`dS)N)rErF)rHrrr tearDownClasswszFontPageTest.tearDownClasscCs tdS)N)rr)r#rrrsetUp{szFontPageTest.setUpcCst|j}|jd|jd|jdd|j_| | |j d| |j d| |j | |jjdtdS)NZFake1Trr4)rrrE font_nameset font_size font_boldrFr6Z load_font_cfgassertNotEqualget assertFalser5attach)r#r/rrrtest_load_font_cfg~s   zFontPageTest.test_load_font_cfgcCs|j}|jdkr|d|j}|d|jd}|||d|d|d}| ||| |j | |||d|d|d}| ||| |j | dS) Nzneed at least 2 fontsrZactivez zzz)rEfontlistsizeskipTestr2rR focus_forcerGevent_generaterQassertInrMlowerr5)r#r/rWfontZ down_fontZup_fontrrrtest_fontlist_keys(           zFontPageTest.test_fontlist_keyc Cs|j}|jdkr|d|j}|d||d||d\}}}}||d7}||d7}|j d||d|j d||d| d}| d}| ||| |j |dS) NrVzneed at least 2 fontsrr4z )xyzanchor)rErWrXrYr2rZseerGbboxr[rRr5r\rMr]) r#r/rWr`radxdyZfont1Z select_fontrrrtest_fontlist_mouses"        z FontPageTest.test_fontlist_mousecCs*|j}|jjd||jddS)N(40)rEZsizelistZvariablerNr5rOrR)r#r/rrr test_sizelistszFontPageTest.test_sizelistcCsJ|j}|jd|j||j|j||jdS)NF)rErPrNZ bold_toggler-r?rRrS)r#r/rrrtest_bold_toggles    zFontPageTest.test_bold_togglecCsttdd}t|d}|ddk}|j}|j||j|d|j_ |j ddd|t|di}| t || |jj dt |jd ddd t|di}| t || |jj dt |j| ddd t| di}| t || |jj d dS) Nr EditorWindowr4rVboldrz Test Font)r^z font-sizez font-boldZ20)r ZGetFontrstrrErOrNrPrFr6rMr5mainpagerr)r#Z default_fontZ default_sizeZ default_boldr/expectedrrr test_font_sets6         zFontPageTest.test_font_setcCs|j}|`|j|jf}ii|_|_|jd|jd|jdddi}|||j|jkor|kn|\|_|_t |_dS)Ntest5r4r^)rsrtrm) rErFZ font_samplehighlight_samplerMrNrOrPr?r)r#r/Z orig_samplesrqrrrtest_set_sampless    " zFontPageTest.test_set_samplesN)r&r'r(__doc__ classmethodrIrJrKrUr_rgrjrkrrrvrrrrrCis   $rCc@s(eZdZeddZddZddZdS) IndentTestcCstj|_|jdS)N)rrDrErG)rHrrrrI szIndentTest.setUpClasscCs0|j}|jd|||jddS)N)rE space_numrNZ load_tab_cfgr5rR)r#r/rrrtest_load_tab_cfgs zIndentTest.test_load_tab_cfgcCsD|j}t|jd||jd|tdddiidS)NrzZIndentz num-spacesZ16) rErrZ indent_scalerNr5r|rRrp)r#r/rrrtest_indent_scales  zIndentTest.test_indent_scaleN)r&r'r(rxrIr}rrrrrrys ryc@seZdZdZeddZeddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0S)1 HighPageTestzTest 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) rhighpagerEr:r;rset_theme_typepaint_theme_sampleset_highlight_targetset_color_samplerG)rHrErrrrI#s  zHighPageTest.setUpClasscCs|j}|`|`|`|`dS)N)rErrrr)rHr/rrrrJ-szHighPageTest.tearDownClasscCsX|j}x$tddD]}tjd|qWtd|j_d|j _d|j _d|j _dS)Nuserrr) rEr GetSectionListrremove_sectionrrrr6rrr)r#r/sectionrrrrK3szHighPageTest.setUpcCst|j}|j}tjddt_|| |j ||j d||j d||jd||jjd||jjd||jjdtdddd tdd d d |||j d||j d||jjd ||jjd ||jjd tjd dt_tdddd|||j ||j d||j d ||jjd||jjd||jjdt`tdS)Nz IDLE Classic) return_valuez- no custom themes -)disabledr4rtest1optionvaluetest2option2value2rVrThemedefault0rn)rrrEr5rr*r Z CurrentThemeZload_theme_cfgr? theme_sourcerR builtin_name custom_namecustom_theme_onstaterr6rr SetOptionrSrT)r#r/eqrrrtest_load_theme_cfg?s>z HighPageTest.test_load_theme_cfgcCs|j}|j}t|_t|_|j|tdddii||jjd||jjdt |j d|j |tdddii||jjd||jjd|`|`dS)NrrTruer4r)z !disabledFalse) r5rErvar_changed_builtin_namevar_changed_custom_nameZbuiltin_theme_onr-rpr6rrrr)r#rr/rrrtest_theme_sourcehs   zHighPageTest.test_theme_sourcecCs|j}|j}dddg}tdddd|j|d|tddddi||jd d ||jj d t tdddd|j|d|tdd dii||jd d ||jj d t |j|d|tddddi||jd d||jj ddS)Nz IDLE Classicz IDLE DarkzIDLE Newrrnamespam)rname2textzNew theme, see Helpr4rrVrrn) r5rEr r builtinlistSetMenurpZ theme_messagerr6rr)r#rr/ item_listrrrtest_builtin_name}s(  zHighPageTest.test_builtin_namecCst|j}|jgd|dt||jjdt |jdddgd|tdddii||jjddS) Nz- no custom themes -rrabcrr4) rE customlistr assertNotInrpr5rr6rr)r#r/rrrtest_custom_names zHighPageTest.test_custom_namecCs2|j}t|_|jd||jjd|`dS)NZgreenr4)rErZon_new_color_setcolorrNr5r6)r#r/rrr test_colors  zHighPageTest.test_colorcCsB|j}|j}|jdddgd||jd||jjddS)Nrrrr4)r5rEZ targetlistrhighlight_targetrRrr6)r#rr/rrr test_highlight_target_list_mouses z-HighPageTest.test_highlight_target_list_mousecs|j}|ji}d}jdfdd}fdd}||x`D]T}xN|dddD]6}|d7}|||j |||j j |qxWq^WdS) Nrg?cs(x"jD]\}}|||d<q WdS)Nr)Ztheme_elementsitems)elemZelementtag)r/rrtag_to_elementszEHighPageTest.test_highlight_target_text_mouse..tag_to_elementcsn|\}}}}||d7}||d7}jddddjd||djd||djd||ddS)NrVzr)r`razzz)rdr[)startr`rarerf)hsrrclick_its  z?HighPageTest.test_highlight_target_text_mouse..click_itrVr4) r5rErurZrcrZ tag_names tag_rangesrrRrr6)r#rrcountrrrZ start_indexr)r/rr test_highlight_target_text_mouses"   z-HighPageTest.test_highlight_target_text_mousecCs|j}|j}|j}||d||jdddd|jddddx0tdD]$}|jdddd|jddddqVW||d d dS) Ng?zr)r`razrVzzselr) r5rErurZrcrr[ranger)r#rr/r_rrr"test_highlight_sample_double_clicks 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 zrr) r5rErurZrcrZ dlineinfor[r) r#rr/rr`rarerfoffsetrrrtest_highlight_sample_b1_motions   z,HighPageTest.test_highlight_sample_b1_motioncCs|j}|j}|`|jd|||jdt||jdt||j d|jd|||jdt||j d||jdt||j dt |_dS)NTr)rF)selectedr) r5rErrrNrr rr button_delete_customrrr)r#rr/rrrtest_set_theme_types  z HighPageTest.test_set_theme_typecCsX|j}|j}tjj}t}tj_t}|_|jd|j dd|_ |j ||j dd|j|jddf|_ |j ||j dd|_ |j d|jdd|_ |j ||jd ||j dd |_ |j ||j |j ||j d |j d|jd |j ||j d |`|tj_dS) NzEditor Breakpointz#ffffff)NNrstyle background))gk@ggz#de0000Tr4z My New Themez#de0000F)r5rErZtkColorChooserZaskcolorrget_new_theme_namerrNrresultZbutton_set_colorr-rRrlookupframe_color_setrr6r)r#rr/Z orig_chooserZchoosergntnrrrtest_get_colors<             zHighPageTest.test_get_colorcCs|j}d}|jd|jd|jd|j|||j|j dd|||j dd||t dd |iidS) Nz#3f7caePythonz Selected TextTrrhilite foregroundzhilite-foreground) rErrNr fg_bg_togglerr5rrrrutag_cgetr)r#r/rrrrtest_on_new_color_setKs    z"HighPageTest.test_on_new_color_setcCs>tj}tdd}t_|j}d|_||dd|t_dS)NT) return_selfz New Themer)r SectionNamerrErr5r)r#orig_sectionnamesnr/rrrtest_get_new_theme_nameXs z$HighPageTest.test_get_new_theme_namecCs|j}t}|_|jdd|_|j||jt j dd|_d|_ ||jt j d|j| |jt j d|`dS)NTrrz my new themer) rErrrrNrZbutton_save_customr-rr rr6r\)r#r/rrrrtest_save_as_new_themebs    z#HighPageTest.test_save_as_new_themecCs(|j}|j}|jd|jdd}d}||tj|||t dd|g|t ddt d|||j || |j ||jjdtd|d d ||tj|||t dd||g|t d|t d|td|d d |t d|t d|dS) NTz IDLE Classiczmy new custom themezmy second custom themerrrr4zhit-backgroundyellow)r5rErrNrrr r create_newrZ GetThemeDictrrRrSrr6r add_optionrQr)r#rr/ first_new second_newrrrtest_create_new_and_save_newus.      z)HighPageTest.test_create_new_and_save_newcCs|j}|j}|`|jd||jd||jd||j ||j j d|jd||jd||jd||j ||j j dt |_dS) NZCursor)rr)rr4Comment)rrrV) r5rErrrNfg_onrbg_onr?rrr6r)r#rr/rrrtest_set_highlight_targets    z&HighPageTest.test_set_highlight_targetcCs@|j}|j}|j||jd|j||jddS)Nr4rV)rErrr-r5r6r)r#r/Zscsrrrtest_set_color_sample_bindings   z*HighPageTest.test_set_color_sample_bindingcCs\|j}|`|jd|jd|||j|jdd|j ddt |_dS)Nz Selected TextTrrrr) rErrrNrr5rrrrurr)r#r/rrrtest_set_color_samples  z"HighPageTest.test_set_color_samplec Cs|j}|j}|`|jj}tj}|jd|j dd}| |d|j _ |ddd}x&| D]\}}||d||qhW||j j d x(| D]\}}td |d ||qW|x$| D]\}}||d||qW||j j d t|_dS) NTz IDLE Darkz IDLE TestrZbluer)rrZconsoler4rzconsole-rV)r5rErrurr Z GetHighlightrrNrrrr6rrQrrr) r#rrEZhs_tagZghZthemeZ new_consolekeyrrrrtest_paint_theme_samples.   z$HighPageTest.test_paint_theme_samplecCs2|j}|j}|jdt}|_tt_tt_d}t j d |ddddit |<d}t j d |dddd 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 dg||j d||jd|tjjd|tjjd||jjdt`t`|`dS)N)z !disabledz spam themerrrrrz other themerFr4rrTrVrrn)rz- no custom themes -)r5rErrraskyesnorr1r%r rrrrr-rrNrr6rrrrR)r#rr/yesnoZ theme_nameZ theme_name2rrrtest_delete_customs\                zHighPageTest.test_delete_customN)r&r'r(rwrxrIrJrKrrrrrrrrrrrrrrrrrrrrrrrrrs0  ) %/      rc@seZdZdZeddZeddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZd d!Zd"S)# KeysPageTestzTest 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_typeload_keys_list)rHrErrrrI"s  zKeysPageTest.setUpClasscCs|j}|`|`dS)N)rErr)rHrErrrrJ)szKeysPageTest.tearDownClasscCsH|j}x$tddD]}tjd|qWtd|j_d|j _dS)Nrrr) rEr rrrrrrr6r)r#r/rrrrrK.s zKeysPageTest.setUpcCst|j}|j}tjddt_|| |j ||j d||j d||jd||jjd||jjd||jjdtddd d tdd d d |||j d||j d||jjd||jjd||jjdtjd dt_tjddt_tdddd|||j ||j d||j d ||jjd||jjd||jjdt`t`tdS)NzIDLE Classic OSX)rz- no custom keys -)rr4)zIDLE Classic OSXrrrrrrrrVzIDLE Modern UnixrKeysrrrn)r)rrrEr5rr*r Z CurrentKeysZ load_key_cfgr? keyset_sourcerRrrcustom_keyset_onrrr6rargsrZ default_keysrSrT)r#r/rrrrtest_load_key_cfg8s@zKeysPageTest.test_load_key_cfgcCs|j}|j}t|_t|_|j|tdddii||jjd||jjdt |j d|j |tdddii||jjd||jjd|`|`dS)Nrrrr4r)z !disabledr) r5rErrrZbuiltin_keyset_onr-rpr6rrrr)r#rr/rrrtest_keyset_sourcebs   zKeysPageTest.test_keyset_sourcecCs2|j}|j}tjdddddg}|j|d|tddddi||jdd||j j d ||j j d t tddd d |j|d|tdd dii||jdd||j j d||j j d t |j|d|tddddi||jdd||j j d||j j ddS)NrrzIDLE Classic WindowszIDLE Classic OSXzIDLE Modern UNIX)rrrzNew key set, see Helpr4)zIDLE Modern UNIXrzIDLE Classic UnixrrVrrn)zIDLE Classic OSX)r5rEr rrrrrpZ keys_messagerr6rrrr)r#rr/rrrrrws0 zKeysPageTest.test_builtin_namecCst|j}|jgd|dt||jjdt |jdddgd|tdddii||jjddS) Nz- no custom keys -rrrrrrr4) rErrrrpr5rr6rr)r#r/rrrrs zKeysPageTest.test_custom_namecCstdddd|j}|jd|jdd|jdd|jd d |jd|j d|j d | t ddd ii|jd |j d |j d | t d d d iidS) NrZZzDummyZenablerzmy custom keysrendcopyr4zz-inz ZZzDummy_cfgBindings)r rrErrN bindingslistdeleteinsert selection_setselection_anchor keybindingr5r<extpage)r#r/rrrtest_keybindings        zKeysPageTest.test_keybindingcCs|j}|j}|`|jd|||jdt||jdt||j d|jd|||jdt||j d||jdt||j dt |_dS)NTr)rF)rr) r5rErrrNrr rr button_delete_custom_keysrrr)r#rr/rrrtest_set_keys_types  zKeysPageTest.test_set_keys_typecCs|j}|j}tj}tdd}t_t}|_|jd|j dd|j dd|j d|j d|j d|jdd|_|j||jd d||j dd |_d|_|j||jd ||jd dd |_|j||j|j||jd d ||j d |jdd|_d|_|j||jd||jd d||j d|`|t_dS)NT)r)z !disabledrrzcopy - zKey-arrbz r4zMy New Key Setzcopy - Fzzcopy - )r5rErZ GetKeysDialogrget_new_keys_namebutton_new_keysrrrrrrrrNrrr-rRr6r)r#rr/Zorig_getkeysdialogZgkdgnknrrrtest_get_new_keyssF             zKeysPageTest.test_get_new_keyscCs>tj}tdd}t_|j}d|_||dd|t_dS)NT)rzNew Keysr)rrrrErr5r)r#rrr/rrrtest_get_new_keys_names z#KeysPageTest.test_get_new_keys_namecCst|j}t}|_|jdd|_|jd|_d|_| |jt j d|j| |jt j d|`dS)NTrzmy new key setrr) rErrrrNrZbutton_save_custom_keysr-r6rr rr\)r#r/rrrrtest_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)Nrrrr4findrVz)r`razz zrbr)rErrrr2rZrcrGrdr[r5rRrr)r#r/rr`rarerfrrrtest_on_bindingslist_selects$       z(KeysPageTest.test_on_bindingslist_selectcCs|j}|j}|jd|jdd}d}||tj|||t dd|g|t dt |||j || |j ||jjdtd|dd ||tj|||t dd||g|t |t |td|dd |t |t |dS) NTzIDLE Classic Windowszmy new custom key setzmy second custom keysetrrr4rz )r5rErrNrrr rZcreate_new_key_setr GetKeySetrrRrSrr6rrrQr)r#rr/rrrrr,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|ddddgdgd gd |_ t d d d dd}|d || dd||| dd|| d|d|d|d || dd||| dd|| d|d|d|d || dd||| dd|| dt|_t`dS)Nrrz<>r4z<>zzzz )z<>z<>z<>rzmy keysrz )z© - z,force-open-completions - zspam - rbrrz,force-open-completions - )r4rVzspam - )rV)r5rErr r rrrrrrrrRZ curselectionrr)r#rr/Zgksrrqrrrtest_load_keys_listOs>            z KeysPageTest.test_load_keys_listcCs2|j}|j}|jdt}|_tt_tt_d}t j d |ddddit |<d}t j d |dddd 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 dg||j d||jd|tjjd|tjjd||jjdt`t`|`dS)N)z !disabledz spam key setrrrrrz other key setrFr4rrTrVrrn)rz- no custom keys -)r5rErrrrrr1r%r rrr<rr-rrNrr6rrrrR)r#rr/rZ keyset_nameZ keyset_name2rrrtest_delete_custom_keyszs\                z$KeysPageTest.test_delete_custom_keysN)r&r'r(rwrxrIrJrKrrrrrrrrrrr r r rrrrrs"   * 0 +rc@seZdZdZeddZeddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&S)' GenPageTestzTest 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;rrNset_add_delete_stateupcupdate_help_changesrG)rHrErrrrIs   zGenPageTest.setUpClasscCs2|j}|`|`|`|`|jdd|jdS)Nrr) rErNrrrhelplistr user_helplistr)rHrErrrrJs zGenPageTest.tearDownClasscCs tdS)N)rr)r#rrrrKszGenPageTest.setUpcCs|j}|j}|jd|jd|jd|jd|jddddg|_ t dddd| ||j d ||j d ||j d ||j d ||j d dd ||j d gdS)Nr4rZbadZworser HelpFilesrLz name;filerZ80ri)r)rfilerL)r5rEZ startup_editrNautosaveZ win_widthZ win_heightrrrr rZload_general_cfgrR)r#rr/rrrtest_load_general_cfgs      z!GenPageTest.test_load_general_cfgcCsN|j}|j|tdddiit|j|tdddiidS)NGeneralzeditor-on-startuprLr)rEZstartup_editor_onr-r5rprrZstartup_shell_on)r#r/rrr test_startups  zGenPageTest.test_startupcCsr|j}|jdd|jdd|tdddiit|jdd|jdd|tdddiidS)Nrr11rlZheightwidth) rEZwin_height_intrrr5rprrZ win_width_int)r#r/rrrtest_editor_sizeszGenPageTest.test_editor_sizecCs$|jj|tdddiidS)Nrlz cursor-blinkr)rEZcursor_blink_boolr-r5rp)r#rrrtest_cursor_blinks zGenPageTest.test_cursor_blinkcCs8|jjdd|jjdd|tdddiidS)NrrrZ AutoCompleteZ popupwait)rEZ auto_wait_intrrr5r)r#rrrtest_autocomplete_waitsz"GenPageTest.test_autocomplete_waitcCs|j}|j}|jdd|tdddiit|jdd|j dd|tdddiit|j |tdd d iidS) NZmenurZ ParenMatchropenerrrz flash-delayZbellr) rEr5Zparen_style_typer-rrrZparen_flash_timerrZbell_on)r#r/rrrrtest_parenmatchs zGenPageTest.test_parenmatchcCsF|j}|j|tdddii|j|tdddiidS)NrrrLr)rEZ save_auto_onr-r5rpZ save_ask_on)r#r/rrr test_autosave s   zGenPageTest.test_autosavecCs8|jjdd|jjdd|tdddiidS)NrrrZFormatParagraphz max-width)rEZformat_width_intrrr5r)r#rrrtest_paragraphszGenPageTest.test_paragraphcCs8|jjdd|jjdd|tdddiidS)NrrrLZ CodeContextZmaxlines)rEZ context_intrrr5r)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) NrsourcerVrz)r`razz zrb)rErrNrrrrr2rZrcrGrdr6r[r5rRr?rS)r#r/rZdexr`rarerfrrrtest_source_selecteds*     z GenPageTest.test_source_selectedcCs|j}|j}|`|j}|j}|dd|||jd||jd|dd|||jd||jd| d|||jd||jdt |_dS)Nrr)rr#r) r5rErrrZbutton_helplist_editrZbutton_helplist_removerrr)r#rr/Zsadhrrrtest_set_add_delete_state5s$   z%GenPageTest.test_set_add_delete_statecCs|j}tj}tdd}t_|j}|jdd|jd|j _ |j _ d|_ | |t|jdd|jko~gkn||j j d|_ | d|_ | ||jddd||jddg||j j d ||j j |t_dS) NT)rrrr)name1file1)rfile2)r'rrV)r5r HelpSourcerrErrrrrNr6rrZhelplist_item_addr?listrRrS)r#rorig_helpsourcerr/rrrtest_helplist_item_addMs* z"GenPageTest.test_helplist_item_addcCs*|j}tj}tdd}t_|j}|jdd|jdd|jd|j d|j |j dd|j _|j_d|_|d|_|||jddd||j dg||jjd |_|||jddd ||j d g||jj|j jkod kn|t_dS) NT)rrrr')r'r(r)r')rr))rr4)r5rr*rrErrrrrrrappendrNr6rrZhelplist_item_editrRrSr?)r#rr,rr/rrrtest_helplist_item_editis0    (z#GenPageTest.test_helplist_item_editcCs|j}|j}|jdd|jdd|jd|jd|j|j dd|j _ |j _ | ||jddd||jg||j j |j j kodkndS)Nrrr')r'r(rr4)r5rErrrrrrrr.rNr6rZhelplist_item_removerRr?)r#rr/rrrtest_helplist_item_removes     z%GenPageTest.test_helplist_item_removecCsV|j}|`|j|jd|jd||tddddt|_dS)N)r'r()rr)rz name1;file1z name2;file2)rL2)rErrrr.r5rpr)r#r/rrrtest_update_help_changess     z$GenPageTest.test_update_help_changesN)r&r'r(rwrxrIrJrKrrrrrrr r!r"r$r&r-r/r0r2rrrrr s&     r c@sdeZdZeddZeddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ dS) VarTraceTestcCs"t|_tt|_tt|_dS)N)rZVarTracerrrivr bv)rHrrrrIs  zVarTraceTest.setUpClasscCs|`|`|`dS)N)rr4r5)rHrrrrJszVarTraceTest.tearDownClasscCs|jd|_dS)Nr)rrr6)r#rrrrKs zVarTraceTest.setUpcGs|jd7_dS)N )r6)r#paramsrrrvar_changed_incrementsz"VarTraceTest.var_changed_incrementcGsdS)Nr)r#r7rrrvar_changed_booleansz VarTraceTest.var_changed_booleancCs.|j}|||jg||jgdS)N)r__init__r5untracedtraced)r#trrrr test_initszVarTraceTest.test_initcCsF|j}|jd|jd|||jg||jgdS)Nrr4)rr;r.r<rr5)r#r=rrr test_clears   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)rrr)rrrr* make_callbackaddr4r8ZassertIsr5r9rrr.Zassert_called_withr5r<r;) r#r=funccbr4r5ZsvZsv2rqrrrtest_adds$    zVarTraceTest.test_addcCst|j|jd}|t||jd|dtd||dtd| tddddt dS)N)rrr*rrrZ42) rr@r4r?callablerNrrr\r5r)r#rCrrrtest_make_callbacks zVarTraceTest.test_make_callbackcCs|j}||j|j}||j|j}||jf||jfg}|||jg| |j || d|| d||j dd|_ || d||j dd|_ |||j g| |j|| d||j ddS)Nr4r6r)rrAr4r8r5r9rTr5r;ZassertCountEqualr<rNrRr6r)r#r=r4r5rqrrrtest_attach_detachs*    zVarTraceTest.test_attach_detachN)r&r'r(rxrIrJrKr8r9r>r?rDrGrHrrrrr3s   r3__main__rV) verbosity),rwZidlelibrZ test.supportrZunittestrZidlelib.idle_test.mock_idlerZtkinterrrrr r r r Zidlelib.configdialogr rrrrZIdleUserConfParserrrrrprr<rrr!ZTestCaser"r)rCryrrr r3r&rrrrrsR        +oh