B xc%@sdZddlmZddlmZddlZddlmZddlmZm Z ddl m Z ddl m Z ejZGd d d ejZGd d d ejZGd ddejZGdddejZGdddejZedkrejdddS)zTest 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)TkTclError)Func) Mbox_funcc@seZdZdZGdddeZeddZeddZdd Z d d Z d d Z ddZ ddZ ddZddZddZddZddZdS)ValidationTestz.Test validation methods: ok, keys_ok, bind_ok.c@s eZdZddZeZeZdS)zValidationTest.ValidatorcOs,tjj|f||Gddd}||_dS)Nc@seZdZeZdS)z:ValidationTest.Validator.__init__..list_keys_finalN)__name__ __module__ __qualname__rgetrrF/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_config_key.pylist_keys_finalsr)r GetKeysDialog__init__r)selfargskwargsrrrrrsz!ValidationTest.Validator.__init__N)r r r rr get_modifiersr showerrorrrrr ValidatorsrcCsDtdt|_|jdgddgg}|j|jdd|dd|_dS) Nguiz zzTitlez<>T)_utest)rrrootwithdrawrdialog)clsZkeylistrrr setUpClasss  zValidationTest.setUpClasscCs*|j|j|j|`|`dS)N)rcancelrupdate_idletasksdestroy)rrrr tearDownClass(s   zValidationTest.tearDownClasscCsd|jj_dS)N)rrmessage)rrrrsetUp/szValidationTest.setUpcCs>|jjd|j||jjd||jjjddS)N r%zNo key specified.)r key_stringsetok assertEqualresultrr&)rrrr test_ok_empty4s zValidationTest.test_ok_emptycCsJ|jjdd|jjj_|j||jjd||jjj ddS)Nz F11r%) rr)r*rr r-r+r,rr&)rrrr test_ok_good:s   zValidationTest.test_ok_goodcCs(||jd|d|jjjdS)Nzz No modifier) rrr r-r1r2r3rr&)rrrrtest_keys_no_modifier_badEs z(ValidationTest.test_keys_no_modifier_badcCs4d|jjj_||jd||jjjddS)Nr/z r%) rrr r- assertTruer2r,rr&)rrrrtest_keys_no_modifier_okJs z'ValidationTest.test_keys_no_modifier_okcCsJd|jjj_dg|jj_||jd|d|jjj g|jj_dS)NaShiftzzshift modifier) rrr r-rr1r2r3rr&)rrrrtest_keys_shift_badOs   z"ValidationTest.test_keys_shift_badc CsxgddfdgddfdgddffD]`\}}}|j|||d@||jjj_||jj_||j||d |jj j WdQRXq"Wg|jj_dS) NZF12z ControlxzXz)mfszalready in use) ZsubTestrrr r-rr1r2r3rr&)rZmodsfinalseqrrr test_keys_dupVs     zValidationTest.test_keys_dupcCs(||jd||jjjddS)Nzr%)r7rbind_okr,rr&)rrrr test_bind_okaszValidationTest.test_bind_okcCs(||jd|d|jjjdS)Nzz not accepted)r1rrEr3rr&)rrrrtest_bind_not_okeszValidationTest.test_bind_not_okN)r r r __doc__gkdr classmethodr r$r'r.r0r4r6r8r;rDrFrGrrrrr s  r c@s0eZdZdZeddZeddZddZdS) ToggleLevelTestz.Test toggle between Basic and Advanced frames.cCs4tdt|_|jt|jddgdd|_dS)Nrrz<>T)r)rrrrrIr)rrrrr ms zToggleLevelTest.setUpClasscCs*|j|j|j|`|`dS)N)rr!rr"r#)rrrrr$ts   zToggleLevelTest.tearDownClasscs|jfdd}|j|djd|\}}||||j|djd|\}}|||j|j|djd|\}}|||dS)Ncs@x6tjD]$\}}|jdkr&|}|jdkr|}qW||fS)zGet 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) enumerateframeZwinfo_children_name)indexZchildbasicadvanced)rrr stackorder~s   z5ToggleLevelTest.test_toggle_level..stackorderZAdvancedtextBasic) rr1rQr3Z button_levelZ assertGreaterZ toggle_levelr7invoke)rrRrPrQr)rrtest_toggle_level{s           z!ToggleLevelTest.test_toggle_levelN)r r r rHrJr r$rVrrrrrKjs  rKc@steZdZdZGdddeZeddZeddZdd Z d d Z e j ed d dZe j ed ddZdS)KeySelectionTestz#Test selecting key on Basic frames.cs*eZdZfddZddZeZZS)zKeySelectionTest.Basiccs&tj||Gddd}||_dS)Nc@seZdZeZeZeZdS)z8KeySelectionTest.Basic.__init__..list_keys_finalN)r r r rr Z select_clearZyviewrrrrrsr)superrr)rrrr) __class__rrrszKeySelectionTest.Basic.__init__cCsdddg|_ddi|_dS)NfooZbarBAZZZZZ)Z modifiersZmodifier_label)rrrrset_modifiers_for_platforms z1KeySelectionTest.Basic.set_modifiers_for_platform)r r r rr\rr __classcell__rr)rYrrTs rTcCs6tdt|_|j|j|jddgdd|_dS)Nrrz<>T)r)rrrrrTr)rrrrr s zKeySelectionTest.setUpClasscCs*|j|j|j|`|`dS)N)rr!rr"r#)rrrrr$s   zKeySelectionTest.tearDownClasscCs|jdS)N)rZ clear_key_seq)rrrrr'szKeySelectionTest.setUpcCsl|j}|j}|j}|jd||dg|jd||ddg|jd||dgdS)NrZr[)rrr,Zmodifier_checkbuttonsrU)rrZgmeqrrrtest_get_modifierssz#KeySelectionTest.test_get_modifiersrcCs|j}|j}|jj}|j}d|j_g|_|||ddg|_|||dd|j_ddg|_|||ddS)Nr9zZmymodz r%Ztestz )rrr)r r,r- return_valueZbuild_key_string)rmock_modifiersrkeystringr^rrrtest_build_key_strings   z&KeySelectionTest.test_build_key_stringcCsB|j}|j}|jj}|j}dg|_d|j_|||ddS)Nr:{z)rrr)r r,r`r-Zfinal_key_selected)rrarrbrcr^rrrtest_final_key_selectedsz(KeySelectionTest.test_final_key_selectedN)r r r rHrIrTrJr r$r'r_rZpatchobjectrdrfrrrrrWs  rWc@s0eZdZdZeddZeddZddZdS) CancelTestz'Simulate user clicking [Cancel] button.cCs4tdt|_|jt|jddgdd|_dS)Nrrz<>T)r)rrrrrIr)rrrrr s zCancelTest.setUpClasscCs*|j|j|j|`|`dS)N)rr!rr"r#)rrrrr$s   zCancelTest.tearDownClassc CsR||jd|jj|t|jWdQRX||jjddS)NZToplevelr%)r,rZ winfo_classZ button_cancelrUZ assertRaisesrr-)rrrr test_cancels   zCancelTest.test_cancelN)r r r rHrJr r$rirrrrrhs  rhc@seZdZdZddZdS) HelperTestz#Test module level helper functions.cCstj}|j}||dgd||dddgd||ddgd||dddgd||ddddgd||dgd||d dgd dS) NqzKey-qr<ZAltr:zKey-QzPage Upz Key-Prior*z Key-asterisk)rZ translate_keyr,)rZtrr^rrrtest_translate_keyszHelperTest.test_translate_keyN)r r r rHrmrrrrrj srj__main__) verbosity)rHZidlelibrZ test.supportrZunittestrZtkinterrrZidlelib.idle_test.mock_idlerZidlelib.idle_test.mock_tkrrrIZTestCaser rKrWrhrjr mainrrrrs     W7R