a  ze0@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)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 ConfigDialogdialogrrW/opt/bitninja-python-dojo/embedded/lib/python3.9/idlelib/idle_test/test_configdialog.py setUpModule"srcCs:tt_ttttt daa dSN) usercfgr rrdetachclearrrupdate_idletasksdestroyrrrrrtearDownModule*sr"c@seZdZddZddZdS)ConfigDialogTestcCsdSrrselfrrrtest_deactivate_current_config7sz/ConfigDialogTest.test_deactivate_current_configcCsdSrrr$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_okcCsht}t}|_t}|j_t}|_|jd| | | |j`|`|`dS)NZApply) rrr,deactivate_current_configextpageZsave_all_changed_extensionsr'r.r/r0)r%r1Z deactivateZsave_extactivaterrrtest_click_applyIszButtonTest.test_click_applycCsNt}t|_dtdd<|jd|tdi||jjd|`dS)NrZ somethingZCancel)rrr!rr.r/ assertEqualcalledr%r1rrrtest_click_cancelUs zButtonTest.test_click_cancelcCstjtjtjjtdtd4}tj d |j d|j d}}Wdn1sZ0Y| |d| |do|ddS) NZ view_text)Z new_callableZHelptitlecontentszHelp for IDLE preferenceszWhen you clickza different name. )rnoteselectkeyspagerZpatchobjectrrr.r/kwdsr8 assertTrue startswithendswith)r%viewr<r=rrrtest_click_help^s 4 zButtonTest.test_click_helpN)r(r)r*r2r6r;rGrrrrr+>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|_|dSr)rZfontpagepager>r?r set_samplesupdateclsrIrrr setUpClassps  zFontPageTest.setUpClasscCs |j`dSr)rIrJrMrrr tearDownClasswszFontPageTest.tearDownClasscCs tdSrrrr$rrrsetUp{szFontPageTest.setUpcCst|j}|jd|jd|jdd|j_| | |j d| |j d| |j | |jjdtdS)NZFake1Trr7)rrrI font_nameset font_size font_boldrJr9Z load_font_cfgassertNotEqualget assertFalser8attachr: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) Nneed at least 2 fontsrZactivez zzz)rIfontlistsizeskipTestr5rY focus_forcerKevent_generaterXassertInrTlowerr8)r%r1r_fontZ 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) Nr]r^rr7 xyanchor)rIr_r`rar5rbseerKbboxrcrYr8rdrTre) r%r1r_rjrkdxdyZfont1Z select_fontrrrtest_fontlist_mouses"        z FontPageTest.test_fontlist_mousecCs*|j}|jjd||jddS)N(40)rIZsizelistvariablerUr8rVrYr:rrr test_sizelistszFontPageTest.test_sizelistcCsJ|j}|jd|j||j|j||jdS)NF)rIrWrUZ bold_toggler/rCrYrZr: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 EditorWindowr7r]boldrz Test Font)rfz font-sizez font-boldZ20)r ZGetFontrstrrIrVrUrWrJr9rTr8mainpagerr)r%Z default_fontZ default_sizeZ default_boldr1expectedrrr test_font_sets<         zFontPageTest.test_font_setcCs|j}|`|j|jf}ii|_|_|jd|jd|jdddi}|||j|jkor|kn|\|_|_t |_dS)Ntest5r7rf)rrry) rIrJZ font_samplehighlight_samplerTrUrVrWrCr)r%r1Z orig_samplesr}rrrtest_set_sampless    " zFontPageTest.test_set_samplesN)r(r)r*__doc__ classmethodrNrPrRr\rgrrrvrwr~rrrrrrHis   $rHc@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|_ | dSr) rhighpagerIr>r?rset_theme_typepaint_theme_sampleset_highlight_targetset_color_samplerKrLrrrrNs  zHighPageTest.setUpClasscCs|j}|`|`|`|`dSr)rIrrrr)rMr1rrrrPszHighPageTest.tearDownClasscCsT|j}tddD]}tjd|qtd|j_d|j _d|j _d|j _dS)Nuserrr) rIr GetSectionListrremove_sectionrrrr9rrrr%r1sectionrrrrRszHighPageTest.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)N IDLE ClassicZ return_value- no custom themes -disabledr7rtest1optionvaluetest2option2value2r]rThemedefault0rz)rrrIr8rr,r Z CurrentThemeZload_theme_cfgrC theme_sourcerY builtin_name custom_namecustom_theme_onstaterr9rr SetOptionrZr[r%r1eqrrrtest_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)NrrTruer7rz !disabledFalse) r8rIrvar_changed_builtin_namevar_changed_custom_nameZbuiltin_theme_onr/r|r9rrrrr%rr1rrrtest_theme_sourceSs   zHighPageTest.test_theme_sourcecCs|j}|j}gd}tdddd|j|d|tddddi||jd d ||jj d t tdddd |j|d|tdd dii||jd d ||jj dt |j|d|tddddi||jd d||jj ddS)N)r IDLE DarkIDLE Newrrnamespamrrrname2textzNew theme, see Helpr7rrr]rrz) r8rIr r builtinlistSetMenur|Z theme_messagerr9rrr%rr1Z item_listrrrtest_builtin_namehs* zHighPageTest.test_builtin_namecCsr|j}|jgd|dt||jjdt |jgdd|tdddii||jjddS)Nrrrabcrrr7) rI customlistr assertNotInr|r8rr9rrr:rrrtest_custom_names zHighPageTest.test_custom_namecCs2|j}t|_|jd||jjd|`dS)NZgreenr7)rIrZon_new_color_setcolorrUr8r9r:rrr test_colors  zHighPageTest.test_colorcCs@|j}|j}|jgdd||jd||jjddS)Nrrr7)r8rIZ targetlistrhighlight_targetrYrr9rrrr test_highlight_target_list_mouses z-HighPageTest.test_highlight_target_list_mousecs|j}|ji}d}jdfdd}fdd}||D]P}|dddD]6}|d7}|||j |||j j |qtq\dS) Nr?cs$jD]\}}|||d<q dSNr)Ztheme_elementsitems)elemelementtag)r1rrtag_to_elementszEHighPageTest.test_highlight_target_text_mouse..tag_to_elementcsn|\}}}}||d7}||d7}jddddjd||djd||djd||ddS)Nr]rrirl)rorc)startrjrkrprq)hsrrclick_its  z?HighPageTest.test_highlight_target_text_mouse..click_itr]r7) r8rIrrbrnr Z tag_names tag_rangesrrYrr9)r%rrcountrrr start_indexr)r1rr test_highlight_target_text_mouses"    z-HighPageTest.test_highlight_target_text_mousecCs|j}|j}|j}||d||jdddd|jddddtdD]$}|jdddd|jddddqT||d d dS) Nrrrrirr]rrlselr) r8rIrrbrnr rcranger)r%rr1r_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) Nrz1.0zrrrirz rlrr) r8rIrrbrnr Z dlineinforcr) r%rr1rrjrkrprqoffsetrrrtest_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 |_dSNTrrFselectedr) r8rIrrrUrr rr button_delete_customrrrrrrrtest_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@r#de0000Tr7z My New ThemerF)r8rIrZ colorchooserZaskcolorrget_new_theme_namerrUrresultZbutton_set_colorr/rYrlookupframe_color_setrr9r)r%rr1Z orig_chooserZchoosergntnrrrtest_get_colors<             zHighPageTest.test_get_colorcCs|j}d}|jd|jd|jd|j|||j|j dd|||j dd||t dd |iidS) Nz#3f7caePython Selected TextTrrhilite foregroundzhilite-foreground) rIrrUr fg_bg_togglerr8rrrrtag_cgetr)r%r1rrrrtest_on_new_color_set6s     z"HighPageTest.test_on_new_color_setcCs>tj}tdd}t_|j}d|_||dd|t_dS)NTZ return_selfz New Themer)r SectionNamerrIrr8rr%Zorig_sectionnameZsnr1rrrtest_get_new_theme_nameCs 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) rIrrrrUrZbutton_save_customr/rr rr9rd)r%r1rrrrtest_save_as_new_themeMs    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) NTrzmy new custom themezmy second custom themerrrr7zhit-backgroundyellow)r8rIrrUrrr r create_newrZ GetThemeDictrrYrZrr9r add_optionrXrr%rr1Z first_newZ second_newrrrtest_create_new_and_save_new`s4         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)rrrr7Commentrrr]) r8rIrrrUfg_onrbg_onrCrrr9rrrrrtest_set_highlight_targets    z&HighPageTest.test_set_highlight_targetcCs@|j}|j}|j||jd|j||jddS)Nr7r])rIrrr/r8r9r)r%r1Zscsrrrtest_set_color_sample_bindings   z*HighPageTest.test_set_color_sample_bindingcCs\|j}|`|jd|jd|||j|jdd|j ddt |_dS)NrTrrrr) rIrrrUrr8rrrrrrr:rrrtest_set_color_samples   z"HighPageTest.test_set_color_samplec Cs|j}|j}|`|jj}tj}|jd|j dd}| |d|j _ |ddd}| D]\}}||d||qf||j j d | D]\}}td |d ||q|| D]\}}||d||q||j j d t|_dS) NTrz IDLE TestrZbluer)rrZconsoler7rzconsole-r])r8rIrrrr Z GetHighlightrrUrrrr9rrXrrr) r%rrIZhs_tagZghZthemeZ new_consolekeyrrrrtest_paint_theme_samples0   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)Nrz spam themerrrrrz other themerFr7rrTr]rrzrr)r8rIrrraskyesnorr3r'r rrrrr/rrUrr9rrrrY)r%rr1yesnoZ theme_nameZ theme_name2rrrtest_delete_customs\                zHighPageTest.test_delete_customN)r(r)r*rrrNrPrRrrrrrrrrrrrrrrrrrrrrrrrrrs4   ) %/      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|_dSr)rr@rIr>r?r set_keys_typeload_keys_listrLrrrrN s  zKeysPageTest.setUpClasscCs|j}|`|`dSr)rIrrrLrrrrPszKeysPageTest.tearDownClasscCsD|j}tddD]}tjd|qtd|j_d|j _dS)Nrrr) rIr rrrrrrr9rrrrrrRs 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)NIDLE Classic OSXr- no custom keys -rr7r rrrrrrrr]zIDLE Modern UnixrKeysrrrz)r)rrrIr8rr,r Z CurrentKeysZ load_key_cfgrC keyset_sourcerYrrcustom_keyset_onrrr9rargsrZ default_keysrZr[rrrrtest_load_key_cfg#s@zKeysPageTest.test_load_key_cfgcCs|j}|j}t|_t|_|j|tdddii||jjd||jjdt |j d|j |tdddii||jjd||jjd|`|`dS)Nr rrr7rrr) r8rIrrrZbuiltin_keyset_onr/r|r9rrrrrrrrtest_keyset_sourceMs   zKeysPageTest.test_keyset_sourcecCs0|j}|j}tjddgd}|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)Nrr )IDLE Classic Windowsr IDLE Modern UNIXrrrrzNew key set, see Helpr7)rrzIDLE Classic Unixrr]r rrzr )r8rIr rrrrr|Z keys_messagerr9rrrrrrrrrbs0 zKeysPageTest.test_builtin_namecCsr|j}|jgd|dt||jjdt |jgdd|tdddii||jjddS)Nr r rrrrr7) rIrrrr|r8rr9rrr: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) NrZZzDummyenablerzmy custom keysrendcopyr7zz-in ZZzDummy_cfgBindings)r rrIrrU bindingslistdeleteinsert selection_setselection_anchor keybindingr8r@r4r:rrrtest_keybindings$         zKeysPageTest.test_keybindingcCs|j}|j}|`|jd|||jdt||jdt||j d|jd|||jdt||j d||jdt||j dt |_dSr) r8rIrr rUrr rr button_delete_custom_keysrrrrrrrtest_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)NTrrrrzcopy - zKey-arrmrr7zMy New Key Setzcopy - Fzzcopy - )r8rIrZ GetKeysDialogrget_new_keys_namebutton_new_keysrrrrrrrrUr rr/rYr9r)r%rr1Zorig_getkeysdialogZgkdgnknrrrtest_get_new_keyssF             zKeysPageTest.test_get_new_keyscCs>tj}tdd}t_|j}d|_||dd|t_dS)NTrzNew Keysr)rrrrIrr8r!rrrrtest_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) rIrr!r rUrZbutton_save_custom_keysr/r9rr rrd)r%r1r#rrrtest_save_as_new_key_sets    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)Nrrrr7findr]rrirrhrlrmr)rIrrrr5rbrnrKrorcr8rYr"r)r%r1rrjrkrprqrrrtest_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) NTrzmy new custom key setzmy second custom keysetrrr7rr)r8rIr rUrrr rZcreate_new_key_setr GetKeySetrrYrZrr9rrrXrrrrr,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|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<>r7z<>zzzr)z<>z<>z<>rzmy keysrz )z© - ,force-open-completions - spam - rmrrr+)r7r]r,)r])r8rIrr r)rrrrrrrrYZ curselectionrr)r%rr1Zgksrr}rrrtest_load_keys_list:s@           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)Nrz spam key setrrrrrz other key setrFr7rrTr]rrzrr )r8rIrrrrrr3r'r rrr@rr/rrUrr9rrrrY)r%rr1rZ keyset_nameZ keyset_name2rrrtest_delete_custom_keyses\                z$KeysPageTest.test_delete_custom_keysN)r(r)r*rrrNrPrRrrrrrr r$r%r&r(r*r-r.rrrrrs&   * 0 +rc@sdeZdZdZeddZddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZdS) WinPageTestzTest 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?rKrLrrrrNs  zWinPageTest.setUpClasscCs tdSrrQr$rrrrRszWinPageTest.setUpcCsl|j}|j}|jd|jd|jd|||jd||jd||jddS)Nr7rZ80rt)r8rIZ startup_editrUZ win_widthZ win_heightZload_windows_cfgrYrrrrtest_load_windows_cfgs   z!WinPageTest.test_load_windows_cfgcCsN|j}|j|tdddiit|j|tdddiidS)NGeneralzeditor-on-startuprSr)rIZstartup_editor_onr/r8r|rrZstartup_shell_onr:rrr test_startups    zWinPageTest.test_startupcCsr|j}|jdd|jdd|tdddiit|jdd|jdd|tdddiidS)Nrr11rxZheightwidth) rIZwin_height_intrrr8r|rrZ win_width_intr:rrrtest_editor_sizeszWinPageTest.test_editor_sizecCs<|j}|jd||jd|tdddiidS)N6ZIndentz num-spaces)rIZindent_chooserrUr8Z indent_spacesrYr|r:rrrtest_indent_spacess zWinPageTest.test_indent_spacescCs$|jj|tdddiidS)Nrxz cursor-blinkr)rIZcursor_blink_boolr/r8r|r$rrrtest_cursor_blinks zWinPageTest.test_cursor_blinkcCs8|jjdd|jjdd|tdddiidS)Nrrr3Z AutoCompleteZ popupwait)rIZ auto_wait_intrrr8r4r$rrrtest_autocomplete_waitsz"WinPageTest.test_autocomplete_waitcCs|j}|j}|jdd|tdddiit|jdd|j dd|tdddiit|j |tdd d iidS) NZmenurZ ParenMatchropenerrr3z flash-delayZbellr) rIr8Zparen_style_typer/r4rrZparen_flash_timerrZbell_onrrrrtest_parenmatchs zWinPageTest.test_parenmatchcCs8|jjdd|jjdd|tdddiidS)Nrrr3ZFormatParagraphz max-width)rIZformat_width_intrrr8r4r$rrrtest_paragraphszWinPageTest.test_paragraphN)r(r)r*rrrNrRr0r2r5r8r9r:r<r=rrrrr/s     r/c@s<eZdZdZeddZddZddZdd Zd d Z d S) ShedPageTestzTest 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?rKrLrrrrNs  zShedPageTest.setUpClasscCs tdSrrQr$rrrrRszShedPageTest.setUpcCs4|j}|j}|jd|||jddS)Nr7r)r8rIautosaverUZload_shelled_cfgrYrrrrtest_load_shelled_cfgs  z"ShedPageTest.test_load_shelled_cfgcCsF|j}|j|tdddii|j|tdddiidS)Nr1r?rSr)rIZ save_auto_onr/r8r|Z save_ask_onr:rrr test_autosave s   zShedPageTest.test_autosavecCs8|jjdd|jjdd|tdddiidS)NrrrSZ CodeContextZmaxlines)rIZ context_intrrr8r4r$rrr test_contextszShedPageTest.test_contextN) r(r)r*rrrNrRr@rArBrrrrr>s r>c@seZdZdZeddZdS) ExtPageTest/Test that the help source list works correctly.cCstj}tj|dSr)rr4r>r?rLrrrrNszExtPageTest.setUpClassN)r(r)r*rrrNrrrrrCsrCc@sheZdZdZeddZeddZddZdd Zd d Z d d Z ddZ ddZ ddZ ddZdS)HelpSourceTestrDcCsFtj}tj||j}|_t|_|_t|_ |_ | dSr) rr4r>r?Z frame_helpframerrUset_add_delete_stateupcupdate_help_changesrK)rMrIrFrrrrN!s   zHelpSourceTest.setUpClasscCs2|j}|`|`|`|`|jdd|jdS)Nrr) rFrUrGrHrIhelplistr user_helplistr)rMrFrrrrP*s zHelpSourceTest.tearDownClasscCs tdSrrQr$rrrrR2szHelpSourceTest.setUpcCsb|j}|j}|jddddg|_tdddd|||jddd ||jd gdS) NrZbadZworser HelpFilesrSz name;filer)r)rfilerS) r8rFrJrrKr rZ load_helplistrYr%rfrrrrtest_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) Nrsourcer]rrrirrhrlrm)rFrGrUrIrHrJrr5rbrnrKror9rcr8rYrCrZ)r%rOrJZdexrjrkrprqrrrtest_source_selected?s*     z#HelpSourceTest.test_source_selectedcCs|j}|j}|`|j}|j}|dd|||jd||jd|dd|||jd||jd| d|||jd||jdt |_dS)NrrrrQr) r8rFrGrJrZbutton_helplist_editrZbutton_helplist_removerrr)r%rrOZsadhrrrtest_set_add_delete_stateWs$   z(HelpSourceTest.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) NTrrrrname1Zfile1rZfile2)rVrr])r8r HelpSourcerrFrJrrKrrUr9rHrZhelplist_item_addrClistrYrZr%rZorig_helpsourcerrOrrrtest_helplist_item_addos0  z%HelpSourceTest.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) NTrrrrVrUr)rVrW)rr7)r8rrXrrFrJrrrrrKrappendrUr9rHrZhelplist_item_editrYrZrCrZrrrtest_helplist_item_edits0    (z&HelpSourceTest.test_helplist_item_editcCs|j}|j}|jdd|jdd|jd|jd|j|j dd|j _ |j _ | ||jddd||jg||j j |j j kodkndS)NrrrVrUrr7)r8rFrJrrrrrKrr\rUr9rHZhelplist_item_removerYrCrNrrrtest_helplist_item_removes     z(HelpSourceTest.test_helplist_item_removecCsV|j}|`|j|jd|jd||tddddt|_dS)NrUrWrLz name1;file1z name2;file2)rS2)rFrIrKrr\r8r|r)r%rOrrrtest_update_help_changess    z'HelpSourceTest.test_update_help_changesN)r(r)r*rrrNrPrRrPrRrTr[r]r^r`rrrrrEs   rEc@sdeZdZeddZeddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ dS) VarTraceTestcCs"t|_tt|_tt|_dSr)rZVarTracerrrivr bvrOrrrrNs  zVarTraceTest.setUpClasscCs|`|`|`dSr)rrbrcrOrrrrPszVarTraceTest.tearDownClasscCs|jd|_dSr)rrr9r$rrrrRs zVarTraceTest.setUpcGs|jd7_dS)N )r9r%paramsrrrvar_changed_incrementsz"VarTraceTest.var_changed_incrementcGsdSrrrerrrvar_changed_booleansz VarTraceTest.var_changed_booleancCs.|j}|||jg||jgdSr)r__init__r8untracedtracedr%trrrr test_initszVarTraceTest.test_initcCsF|j}|jd|jd|||jg||jgdS)Nrr7)rrjr\rkrr8rlrrr 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)Nrrrr)rrrr, make_callbackaddrbrgZassertIsrcrhrrr0Zassert_called_withr8rkrj) r%rmfunccbrbrcsvZsv2r}rrrtest_adds&   zVarTraceTest.test_addcCst|j|jd}|t||jd|dtd||dtd| tddddt dS)Nrp*rrrZ42) rrqrbrCcallablerUrrrdr8r)r%rtrrrtest_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)Nr7rdr)rrrrbrgrcrhr[r8rjZassertCountEqualrkrUrYr9r)r%rmrbrcr}rrrtest_attach_detachs,   zVarTraceTest.test_attach_detachN)r(r)r*rrNrPrRrgrhrnrorvryrzrrrrras   ra__main__r]) verbosity).rZidlelibrZ test.supportrZunittestrZidlelib.idle_test.mock_idlertkinterrrrr r r r Zidlelib.configdialogr rrrrZIdleUserConfParserrrrr|rr@r4rr"ZTestCaser#r+rHrrr/r>rCrErar(rrrrrsX        +Q%(h