a 9êdg©:ã@sdZddlmZddlmZddlZddlmZddlmZddl m Z m Z ddlm Z dd l mZejjZe  d ¡e  d ¡e  d ¡e  d ¡d œZd Zd d„Zdd„ZGdd„dejƒZGdd„dejƒZGdd„dejƒZGdd„dejƒZedkrejdddS)zTest colorizer, coverage 93%.é)Ú colorizer)ÚrequiresN)Úmock)Úpartial)ÚTkÚText)Úconfig)Ú PercolatorÚ)ÚmainÚ highlightÚkeysÚ extensionsa+if True: int ('1') # keyword, builtin, string, comment elif False: print(0) # 'string' in comment else: float(None) # if in comment if iF + If + IF: 'keyword matching must respect case' if'': x or'' # valid string-keyword no-space combinations async def f(): await g() 'x', '''x''', "x", """x""" cCs ttj_dS©N)ÚtestcfgrÚidleConfÚuserCfg©rrúa|b|cd))Ú assertEqualrÚany©ÚselfrrrÚtest_any+sÿzFunctionTest.test_anycCs| t ¡¡dSr)Ú assertTruerZmake_patrrrrÚ test_make_pat/szFunctionTest.test_make_patcCs¸tj}|j}d}| |¡}|| ¡ddƒ| || ¡¡}|| ¡ddƒ| || ¡¡}|| ¡ddƒ| || ¡¡}|| ¡dd ƒ| || ¡¡}|| ¡ddƒdS) Nzdef f(): print("hello") ÚKEYWORDÚdefÚSYNCÚ ÚBUILTINÚprintÚSTRINGz"hello")rÚprogrÚsearchÚ groupdictÚend)rr*ÚeqÚlineÚmrrrÚ test_prog3s zFunctionTest.test_progcCs:tj}| d¡}| |¡| d¡}| | d¡d¡dS)NZnospacez spacer)rÚidprogÚmatchÚ assertIsNonerÚgroup)rr2r0rrrÚ test_idprogBs    zFunctionTest.test_idprogN)Ú__name__Ú __module__Ú __qualname__r r"r1r6rrrrr)src@s,eZdZedd„ƒZedd„ƒZdd„ZdS)ÚColorConfigTestcCs*tdƒtƒ}|_| ¡t|ƒ|_dS©NZgui©rrÚrootÚwithdrawrÚtext)Úclsr=rrrÚ setUpClassLs zColorConfigTest.setUpClasscCs |`|j ¡|j ¡|`dSr©r?r=Úupdate_idletasksÚdestroy©r@rrrÚ tearDownClassSs  zColorConfigTest.tearDownClasscCsn|j}|j}t |¡||ddƒ||ddƒ||ddƒ||ddƒ||dd ƒ||d dƒdS) NÚ backgroundz#ffffffÚ foregroundz#000000ZselectbackgroundZgrayZselectforegroundZinsertbackgroundZblackZinactiveselectbackground)r?rrZ color_config)rr?r.rrrÚtest_color_configZs z!ColorConfigTest.test_color_configN)r7r8r9Ú classmethodrArFrIrrrrr:Js   r:c@sDeZdZedd„ƒZedd„ƒZdd„Zdd„Zd d „Zd d „Z d S)ÚColorDelegatorInstantiationTestcCs.tdƒtƒ}|_| ¡t|ƒ}|_dSr;r<©r@r=r?rrrrAis z*ColorDelegatorInstantiationTest.setUpClasscCs |`|j ¡|j ¡|`dSrrBrErrrrFps  z-ColorDelegatorInstantiationTest.tearDownClasscCst ¡|_dSr)rÚColorDelegatorÚcolorrrrrÚsetUpwsz%ColorDelegatorInstantiationTest.setUpcCs*|j ¡|j dd¡|j ¡|`dS©Nú1.0r-)rNÚcloser?ÚdeleteÚ resetcacherrrrÚtearDownzs  z(ColorDelegatorInstantiationTest.tearDowncCs|j}| |tj¡dSr)rNÚassertIsInstancerrM©rrNrrrÚ test_init€sz)ColorDelegatorInstantiationTest.test_initcCs:|j}| |j¡| |j¡| |j¡| |j¡dSr)rNr4Úafter_idr!Úallow_colorizingÚ assertFalseÚ colorizingÚstop_colorizingrWrrrÚtest_init_state„s    z/ColorDelegatorInstantiationTest.test_init_stateN) r7r8r9rJrArFrOrUrXr^rrrrrKgs  rKc@säeZdZedd„ƒZedd„ƒZdd„Zdd„Zd d „Zd d „Z d d„Z e j   ejd¡dd„ƒZe j   ejd¡dd„ƒZdd„Zdd„Ze j   ejd¡dd„ƒZe j   ejd¡dd„ƒZe j   ejd¡e j   ejd¡dd„ƒƒZd S)!ÚColorDelegatorTestcCs8tdƒtƒ}|_| ¡t|ƒ}|_t|ƒ|_dSr;)rrr=r>rr?r Ú percolatorrLrrrrAs  zColorDelegatorTest.setUpClasscCs0|jj ¡|`|`|j ¡|j ¡|`dSr)r`ZredirrRr?r=rCrDrErrrrF™s    z ColorDelegatorTest.tearDownClasscCst ¡|_|j |j¡dSr)rrMrNr`Z insertfilterrrrrrO¡s zColorDelegatorTest.setUpcCs8|j ¡|j |j¡|j dd¡|j ¡|`dSrP)rNrRr`Z removefilterr?rSrTrrrrrU¦s   zColorDelegatorTest.tearDowncCs:|j}| |jtj¡| |jj dd|j ¡dd¡dS)NÚafterÚinfoéÚtimer) rNrVÚdelegaterZ Delegatorrr=ÚtkÚcallrYrWrrrÚtest_setdelegate­s ÿÿÿz#ColorDelegatorTest.test_setdelegatec CsŒttjjdd}|jj ¡D]j\}}|j|dF| d|¡| d|¡|dvrh|  |||  ¡d¡Wdƒq1s|0YqdS)Nú IDLE Classic©Ztheme©ÚtagrGrH©r%ÚTODO©Úelement) rrrÚ GetHighlightrNÚtagdefsÚitemsÚsubTestZassertInrÚlower)rr rlZcolorsrrrÚtest_LoadTagDefsµs  z#ColorDelegatorTest.test_LoadTagDefsc Cs´|j}ttjjdd}|jjD]|}dD]r}|j||dP|dvrX| |  ||¡d¡n"| |  ||¡||  ¡d|¡Wdƒq&1sŽ0Yq&q| |  ¡dd ¡dS) Nrirj)rGrH)rlÚplanermr roéÿÿÿÿZsel) r?rrrrqrNrrrtrZtag_cgetruÚ tag_names)rr?r rlrwrrrÚtest_config_colors¾s ÿ&z%ColorDelegatorTest.test_config_colorsÚ notify_rangecCsb|j}| dd¡| | dd¡d¡| dd¡| dd¡| | dd¡d¡| d d ¡dS) NÚinsertZfoorQr-zfoo ú1.0+3cZbarbazz foobarbaz ú1.3z1.3+6c)r?r|rÚgetÚassert_called_with©rÚ mock_notifyr?rrrÚ test_insertÌs   zColorDelegatorTest.test_insertcCs||j}| dd¡| | dd¡d¡| d¡| | dd¡d¡| d¡| dd ¡| | dd¡d ¡| d¡dS) Nr|Z abcdefghirQr-z abcdefghi ú1.7z abcdefgi r~z1.6zabcgi )r?r|rrrSr€rrrrÚ test_deleteØs    zColorDelegatorTest.test_deletecCs|j}|j}|j}|j}||jj dd|¡ddƒ| |j¡| |j ¡|  |j ¡d|_|  dd¡| |j ¡||j|ƒ|  |¡d|_|  dd¡|  |j ¡| |j¡||jj dd|j¡ddƒ| |j|¡|  |j¡d|_d |_ |  d d ¡| |j¡dS) NrarbrcrdTrQr-r}Fz1.4z1.4+10c)r?rNrrYr=rfrgr[r\r]r!rZr{Ú after_cancelZassertIsNotNoneÚassertNotEqualr4)rr?rNr.Zsave_idrrrÚtest_notify_rangeçs0            z$ColorDelegatorTest.test_notify_rangecCsP|j}|j}| |j¡| |j¡| |j¡||jj  dd|j ¡ddƒ|  ¡|  |j ¡| |j¡| |j¡| |j¡d|_|  ¡|  |j ¡| |j¡| |j¡| |j¡|  ¡|  |j ¡| |j¡| |j¡| |j¡d|_|  ¡||jj  dd|j ¡ddƒ| |j¡| |j¡| |j¡dS)NrarbrcrdTF) rNrr[r\r]r!rZr=rfrgrYZtoggle_colorize_eventr4)rrNr.rrrÚtest_toggle_colorize_event s8                 z-ColorDelegatorTest.test_toggle_colorize_eventÚrecolorize_maincCs|j}|j}|j}| |j¡|j}d|_| ¡| ¡||_d|_| ¡| ¡d|_d|_ | ¡| ¡d|_ | ¡|  |j ¡|  |j ¡|  ¡||j dƒ||jj dd|j¡ddƒ| ddd ¡| ¡|  |j ¡|  |j ¡|  ¡||j d ƒ| |j¡dS) NFTrcrarbrdrnrQr-é)r?rNrr†rYreÚ recolorizeZassert_not_calledrZr\r[r]Z assert_calledZ call_countr=rfrgÚ tag_remover4)rZ mock_recmainr?rNr.Z save_delegaterrrÚtest_recolorize3s<       z"ColorDelegatorTest.test_recolorizec Csš|j}|j}|j}| dt¡d}| ddd¡| ¡| ¡D]@}|j|d ||  |¡dƒWdƒq@1sv0Yq@|  ddd¡| ¡|D]D\}}|j|d || |¡|ƒWdƒqœ1sÖ0Yqœ||  dd¡dƒ||  d d¡d ƒ||  d d ¡d ƒ||  dd ¡dƒ||  dd ¡dƒ||  dd¡dƒ||  dd¡dƒ||  dd¡dƒ||  dd¡dƒ||  dd¡dƒdS)Nr|))rQ©r#)ú1.2r)r~r)r„r)z1.9©r')z1.14©r))z1.19©ÚCOMMENT)z2.1r)z2.18r)z2.25r“)z3.6r‘)z3.12r)z3.21r“)z4.0r)z4.3r)z4.6r)z5.2r’)z5.8r)z5.10r’)z6.0r)z6.10)Z DEFINITION)z6.11r)ú7.0r’)z7.4r)ú7.5r’)ú7.12r)ú7.14r’)z1.55©r%)z2.50r™)z3.34r™rnrQr-rkr)Úindexr#)rQrr”z2.0)z2.22ú2.43r%)r›z3.0r))z4.17z4.53r•)r•ú7.3rœ)r–r—r—)r˜ú7.17r)z7.19ú7.26)ržz9.0) r?rNrr|ÚsourcerrŠryrtÚ tag_rangesÚtag_addZ tag_nextrange) rr‚r?rNr.ZexpectedrlršZ expected_tagsrrrÚtest_recolorize_main`s2  0 0z'ColorDelegatorTest.test_recolorize_mainrŒc Csä|j}|j}| dt¡| ¡| dd¡| dd¡| dd¡|jD]B}|j|d"| |  |¡d¡WdƒqJ1s‚0YqJ|  ¡|jD]B}|j|d"|  |  |¡d¡Wdƒqœ1sÔ0YqœdS)Nr|ÚERRORrQrnZhitrkr) r?rNr|rŸrŠr¡rrrtr‡r Z removecolorsr)rr‚Zmock_recolorizer?rNrlrrrÚtest_removecolorss     2 z$ColorDelegatorTest.test_removecolorsN)r7r8r9rJrArFrOrUrhrvrzrZpatchÚobjectrrMrƒr…rˆr‰rŽr¢r¤rrrrr_Žs,     $( , /r_Ú__main__r‹)Ú verbosity)Ú__doc__ZidlelibrZ test.supportrZunittestrÚ functoolsrÚtkinterrrrZidlelib.percolatorr rrrZIdleUserConfParserrrŸrrZTestCaserr:rKr_r7r rrrrÚs4      üÿ !'