B „ fí%ã@sÐdZddlmZddlmZddlZddlmZddlmZm Z ddl m Z ddl m Z ejZGd d „d ejƒZGd d „d ejƒZGd d„dejƒZGdd„dejƒZGdd„dejƒZedkrÌejdd�dS)zõTest config_key, coverage 98%. Coverage is effectively 100%. Tkinter dialog is mocked, Mac-only line may be skipped, and dummy function in bind test should not be called. Not tested: exit with 'self.advanced or self.keys_ok(keys)) ...' False. é)Ú config_key)ÚrequiresN)Úmock)ÚTkÚTclError)ÚFunc)Ú Mbox_funcc@sˆeZdZdZGdd„deƒZedd„ƒZedd„ƒZdd „Z d d „Z d d „Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„ZdS)ÚValidationTestz.Test validation methods: ok, keys_ok, bind_ok.c@s eZdZdd„ZeƒZeƒZdS)zValidationTest.ValidatorcOs,tjj|f|ž|ŽGdd„dƒ}||_dS)Nc@seZdZeƒZdS)z:ValidationTest.Validator.__init__..list_keys_finalN)Ú__name__Ú __module__Ú __qualname__rÚget©rrúF/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_config_key.pyÚlist_keys_finalsr)rÚ GetKeysDialogÚ__init__r)ÚselfÚargsÚkwargsrrrrrsz!ValidationTest.Validator.__init__N)r r r rrÚ get_modifiersrÚ showerrorrrrrÚ ValidatorsrcCsDtdƒtƒ|_|j ¡dgddgg}|j|jdd|dd�|_dS) NÚguiz zzÚTitlez<>T)Ú_utest)rrÚrootÚwithdrawrÚdialog)ÚclsZkeylistrrrÚ setUpClasss  zValidationTest.setUpClasscCs*|j ¡|j ¡|j ¡|`|`dS)N)rÚcancelrÚupdate_idletasksÚdestroy)rrrrÚ tearDownClass(s   zValidationTest.tearDownClasscCsd|jj_dS)NÚ)rrÚmessage)rrrrÚsetUp/szValidationTest.setUpcCs>|jj d¡|j ¡| |jjd¡| |jjjd¡dS)Nú r%zNo key specified.)rÚ key_stringÚsetÚokÚ assertEqualÚresultrr&)rrrrÚ test_ok_empty4s zValidationTest.test_ok_emptycCsJ|jj d¡d|jjj_|j ¡| |jjd¡| |jjj d¡dS)Nz ÚF11r%) rr)r*rr r-r+r,rr&)rrrrÚ test_ok_good:s   zValidationTest.test_ok_goodcCs(| |j d¡¡| d|jjj¡dS)Nzz No modifier) rrr r-r1r2r3rr&)rrrrÚtest_keys_no_modifier_badEs z(ValidationTest.test_keys_no_modifier_badcCs4d|jjj_| |j d¡¡| |jjjd¡dS)Nr/z r%) rrr r-Ú assertTruer2r,rr&)rrrrÚtest_keys_no_modifier_okJs z'ValidationTest.test_keys_no_modifier_okcCsJd|jjj_dg|jj_| |j d¡¡| d|jjj ¡g|jj_dS)NÚaÚShiftzzshift modifier) rrr r-rr1r2r3rr&)rrrrÚtest_keys_shift_badOs   z"ValidationTest.test_keys_shift_badc Cs”x„gddfdgddfdgddffD]`\}}}|j|||d��@||jjj_||jj_| |j |¡¡| d |jj j ¡WdQRXq"Wg|jj_dS) NZF12z ÚControlÚxzÚXz)ÚmÚfÚszalready in use) ZsubTestrrr r-rr1r2r3rr&)rZmodsÚfinalÚseqrrrÚ test_keys_dupVs     zValidationTest.test_keys_dupcCs(| |j d¡¡| |jjjd¡dS)Nzr%)r7rÚbind_okr,rr&)rrrrÚ test_bind_okaszValidationTest.test_bind_okcCs(| |j d¡¡| d|jjj¡dS)Nzz not accepted)r1rrEr3rr&)rrrrÚtest_bind_not_okeszValidationTest.test_bind_not_okN)r r r Ú__doc__ÚgkdrÚ classmethodr r$r'r.r0r4r6r8r;rDrFrGrrrrr s  r c@s0eZdZdZedd„ƒZedd„ƒZdd„ZdS) ÚToggleLevelTestz.Test toggle between Basic and Advanced frames.cCs4tdƒtƒ|_|j ¡t|jddgdd�|_dS)Nrrz<>T)r)rrrrrIr)rrrrr ms zToggleLevelTest.setUpClasscCs*|j ¡|j ¡|j ¡|`|`dS)N)rr!rr"r#)rrrrr$ts   zToggleLevelTest.tearDownClasscsÄ|j‰‡fdd„}| ˆj¡| dˆjd¡|ƒ\}}| ||¡ˆ ¡| ˆj¡| dˆjd¡|ƒ\}}| ||¡ˆj ¡| ˆj¡| dˆjd¡|ƒ\}}| ||¡dS)Ncs@x6tˆj ¡ƒD]$\}}|jdkr&|}|jdkr|}qW||fS)zäGet the stack order of the children of the frame. winfo_children() stores the children in stack order, so this can be used to check whether a frame is above or below another one. Z keyseq_basicZkeyseq_advanced)Ú enumerateÚframeZwinfo_childrenÚ_name)ÚindexZchildÚbasicÚadvanced)rrrÚ stackorder~s   z5ToggleLevelTest.test_toggle_level..stackorderZAdvancedÚtextÚBasic) rr1rQr3Z button_levelZ assertGreaterZ toggle_levelr7Úinvoke)rrRrPrQr)rrÚtest_toggle_level{s           z!ToggleLevelTest.test_toggle_levelN)r r r rHrJr r$rVrrrrrKjs  rKc@steZdZdZGdd„deƒZedd„ƒZedd„ƒZdd „Z d d „Z e j   ed ¡d d„ƒZe j   ed ¡dd„ƒZdS)ÚKeySelectionTestz#Test selecting key on Basic frames.cs*eZdZ‡fdd„Zdd„ZeƒZ‡ZS)zKeySelectionTest.Basiccs&tƒj||ŽGdd„dƒ}||_dS)Nc@seZdZeƒZeƒZeƒZdS)z8KeySelectionTest.Basic.__init__..list_keys_finalN)r r r rr Z select_clearZyviewrrrrr§sr)Úsuperrr)rrrr)Ú __class__rrr¥szKeySelectionTest.Basic.__init__cCsdddg|_ddi|_dS)NÚfooZbarÚBAZZZZZ)Z modifiersZmodifier_label)rrrrÚset_modifiers_for_platform¬s z1KeySelectionTest.Basic.set_modifiers_for_platform)r r r rr\rrÚ __classcell__rr)rYrrT¤s rTcCs6tdƒtƒ|_|j ¡|j|jddgdd�|_dS)Nrrz<>T)r)rrrrrTr)rrrrr ±s zKeySelectionTest.setUpClasscCs*|j ¡|j ¡|j ¡|`|`dS)N)rr!rr"r#)rrrrr$¸s   zKeySelectionTest.tearDownClasscCs|j ¡dS)N)rZ clear_key_seq)rrrrr'¿szKeySelectionTest.setUpcCsl|j}|j}|j}|jd ¡||ƒdgƒ|jd ¡||ƒddgƒ|jd ¡||ƒdgƒdS)NrZr[)rrr,Zmodifier_checkbuttonsrU)rrZgmÚeqrrrÚtest_get_modifiersÂsz#KeySelectionTest.test_get_modifiersrcCs‚|j}|j}|jj}|j}d|j_g|_| ¡||ƒdƒdg|_| ¡||ƒdƒd|j_ddg|_| ¡||ƒdƒdS)Nr9zZmymodz r%Ztestz )rrr)r r,r-Ú return_valueZbuild_key_string)rÚmock_modifiersrÚkeyÚstringr^rrrÚtest_build_key_stringÑs   z&KeySelectionTest.test_build_key_stringcCsB|j}|j}|jj}|j}dg|_d|j_| ¡||ƒdƒdS)Nr:ú{z)rrr)r r,r`r-Zfinal_key_selected)rrarrbrcr^rrrÚtest_final_key_selectedæsz(KeySelectionTest.test_final_key_selectedN)r r r rHrIrTrJr r$r'r_rZpatchÚobjectrdrfrrrrrW¡s  rWc@s0eZdZdZedd„ƒZedd„ƒZdd„ZdS) Ú CancelTestz'Simulate user clicking [Cancel] button.cCs4tdƒtƒ|_|j ¡t|jddgdd�|_dS)Nrrz<>T)r)rrrrrIr)rrrrr ös zCancelTest.setUpClasscCs*|j ¡|j ¡|j ¡|`|`dS)N)rr!rr"r#)rrrrr$ýs   zCancelTest.tearDownClassc CsR| |j ¡d¡|jj ¡| t¡�|j ¡WdQRX| |jjd¡dS)NZToplevelr%)r,rZ winfo_classZ button_cancelrUZ assertRaisesrr-)rrrrÚ test_cancels   zCancelTest.test_cancelN)r r r rHrJr r$rirrrrrhós  rhc@seZdZdZdd„ZdS)Ú HelperTestz#Test module level helper functions.cCs’tj}|j}||dgƒdƒ||dddgƒdƒ||ddgƒdƒ||dddgƒdƒ||ddddgƒdƒ||dgƒdƒ||d dgƒd ƒdS) NÚqzKey-qr<ZAltr:zKey-QzPage Upz Key-PriorÚ*z Key-asterisk)rZ translate_keyr,)rZtrr^rrrÚtest_translate_keyszHelperTest.test_translate_keyN)r r r rHrmrrrrrj srjÚ__main__é)Ú verbosity)rHZidlelibrZ test.supportrZunittestrZtkinterrrZidlelib.idle_test.mock_idlerZidlelib.idle_test.mock_tkrrrIZTestCaser rKrWrhrjr ÚmainrrrrÚs     W7R