B  f>@sdZddlmZddlZddlZddlmZddlmZm Z m Z m Z m Z ddlm Z ddlZddlmZejjZededededd Zd ZGd d d ZGd ddejZGdddejZedkrejdddS)zTest codecontext, coverage 100%) codecontextN)requires)NSEWTkFrameTextTclError)mock)config)mainZ highlightkeys extensionsz class C1(): # Class comment. def __init__(self, a, b): self.a = a self.b = b def compare(self): if a > b: return a elif a < b: return b else: return None c@s$eZdZddZddZddZdS) DummyEditwincCs"||_||_||_||_d|_dS)Nr )roottopZ text_frametextlabel)selfrframerrG/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_codecontext.py__init__'s zDummyEditwin.__init__cCstt|j|S)N)intfloatrindex)rrrrr getlineno.szDummyEditwin.getlinenocKs|d|_dS)Nr)r)rkwargsrrrupdate_menu_label1szDummyEditwin.update_menu_labelN)__name__ __module__ __qualname__rrrrrrrr&src@seZdZeddZeddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZejejdddZddZddZd S)!CodeContextTestcCs~tdt}|_|t|}|_t|}|_|dt |j dddd|j ddt dt ||||_ttj_dS)NZguiz1.0leftZboth)ZsideZfillexpand)rowcolumnZsticky)rrrZwithdrawrrrrinsert code_sampleZpackZgridrreditortestcfgridleConfuserCfg)clsrrrrrr setUpClass7s  zCodeContextTest.setUpClasscCs@ttj_|jjdd|`|`|`|j |j |`dS)Nz1.0end) usercfgrr,r-r*rdeleterrZupdate_idletasksdestroy)r.rrr tearDownClassEs    zCodeContextTest.tearDownClasscsjddjd<tj_ddd_tjjfdd}t j j tjd |}| |jd_fd d }t j j tjd |}| |jdS) NrZ TkFixedFontfontz#abcdefz#123456) background foregroundcs|dkrjS||S)Ncontext) highlight_cfg)ZthemeZelement)orig_idleConf_GetHighlightrrrmock_idleconf_GetHighlightVsz9CodeContextTest.setUp..mock_idleconf_GetHighlight GetHighlightcsjS)N) font_override)rZ configTypeZsection)rrrmock_idleconf_GetFont`sz4CodeContextTest.setUp..mock_idleconf_GetFontZGetFont)ryviewr CodeContextr*ccr9r,r<unittestr patchobjectstartZ addCleanupstopr=)rr;ZGetHighlight_patcherr>ZGetFont_patcherr)r:rrsetUpNs"       zCodeContextTest.setUpcCs,|jjr|jj|j|j`|`dS)N)rAr8r3__del__)rrrrtearDowngs  zCodeContextTest.tearDowncCsz|j}|j}|j}||j|||j|j||jd|jd||j||jdg||jd||jj dS)Nr5)rr Fr$) assertEqualr*rAeditwinr assertIsNoner8info topvisiblet1)reqZedrArrr test_initns   zCodeContextTest.test_initcCs|jdS)N)rArH)rrrrtest_del{szCodeContextTest.test_delc Csb|jddd}|j_|j|t}|jj dd|WdQRX| dt |j dS)Ni'cSsdS)Nrrrrrz5CodeContextTest.test_del_with_timer..afterrNz doesn't exist) rrVrArPrH assertRaisesrrtkcallZassertInstrZ exception)rtimercmrrrtest_del_with_timer~s   z#CodeContextTest.test_del_with_timercCstj||jjddS)N)rr@reloadrKrA context_depth)rrrr test_reloads zCodeContextTest.test_reloadcCsJ|j}|j}|j}|jr||||j||jd|jd||jd|jd||jd|jd||jddd||jj d ||j j d d |jj d d |||j||jj d||jj ddd|ddD}|jd|||jdd|||||jdd|dS)Nr5Zfgr7Zbgr6z1.0zend-1cr zHide Code ContextrVrNr$r[zShow Code Context css|]}|dVqdS)Nr).0xrrr szACodeContextTest.test_toggle_code_context_event.. r)rKrAtoggle_code_context_eventr8ZassertIsNotNonerr9getrLrrrXrYrPrMjoin get_contextr?)rrQrAZtoggleZline11_contextrrrtest_toggle_code_context_events0    z.CodeContextTest.test_toggle_code_context_eventc Cs.|j}|jj}|t|dddWdQRX||ddgdf||ddgdf||dddgdf||d dd d gdf||d dd d d gdf||d dddd d d gdf||d ddd d d gdf||d ddd d gdf||d ddd d d gdf||d ddd d gdfdS)Nr$r)Zstopline)rcrz class C1():class)roroz def __init__(self, a, b):def )roz def compare(self):rq)rtz if a > b:ifrg)rrrtz elif a < b:elifrcrt)Z stopindent)rKrArkrWAssertionError)rrQZgcrrrtest_get_contexts:           z CodeContextTest.test_get_contextcCs*|j}|j}|js|||||jdg||jd|j d|||jdg||jd||j ddd|j d|||jddg||jd||j ddd |j d|||jddg||jd ||j ddd |j d |||jddd g||jd ||j ddd |j d|||jdddddg||jd||j ddd|d|_ ||jdddddg||jd||j ddd|j d |||jddd g||jd||j ddddS)N)rrJr Fr$rcz1.0zend-1cr )rcrz class C1():rnrmz class C1():ro)roroz def __init__(self, a, b):rqrpz)class C1(): def __init__(self, a, b):rg)rsroz def compare(self):rq)rtrtz if a > b:ru)rrrtz elif a < b:rv zHclass C1(): def compare(self): if a > b: elif a < b:z def __init__(self, a, b):) rKrAr8rhrMupdate_code_contextrNrOrr?rir`)rrQrArrrtest_update_code_contextsl              z(CodeContextTest.test_update_code_contextcCs.|j}|j}|j}|js ||jd|||jd|j dd|||jd|jd|||jd|j dd|||jd d|_ |jd|||jd|j dd |||jd |jd ||j d d d|j dd |||jd dS)Nz2.0rcr(z1.5r$z12.0ryz3.0rtz1.0z5.0Zselrp) rKrAZ jumptoliner8rhrr?r{rOZmark_setr`Ztag_add)rrQrAZjumprrrtest_jumptoline.s<          zCodeContextTest.test_jumptoliner{cCsD|jjr|j|j||j|j|dS)N)rAr8rhZ timer_eventZassert_not_calledZ assert_called)rZ mock_updaterrrtest_timer_eventWs    z CodeContextTest.test_timer_eventcCs|j}|j}|jd}d}||||jdk r8|||_||||jd|||_|||jd|dS)Nr5Z TkTextFont)rKrArZassertNotEqualr8rhr=Z update_font)rrQrAZ orig_font test_fontrrrrds   zCodeContextTest.test_fontcs|j|jt|j}ddd}fdd}jr<||_||||||_||dS)Nz#222222z#ffff00)r6r7cs,jd|djd|ddS)Nr6r7)r8)Zcolors)rArQrrassert_colors_are_equalszFCodeContextTest.test_highlight_colors..assert_colors_are_equal)rKrAdictr9r8rhZupdate_highlight_colors)rZ orig_colorsZ test_colorsrr)rArQrtest_highlight_colors}s   z%CodeContextTest.test_highlight_colorsN)rr r! classmethodr/r4rGrIrRrSr]rarlrxr|r}r rCrDrr@r~rrrrrrr"5s   $0Q) r"c@seZdZddZddZdS)HelperFunctionTextcCsJtj}d}x |D]\}}||||qW||dtddddS)N))z first word)z first)z first word) r)u ᧔᧒: )z u᧔᧒)z no spaces)r Zno)r )r r )z# TEST COMMENT)r r )z (continuation))z r z (continuation)z^(\s*)([^\s]*))c)z z(continuation))rZget_spaces_firstwordrKrecompile)rriZ test_lineslineZexpected_outputrrrtest_get_spaces_firstwords z,HelperFunctionText.test_get_spaces_firstwordcCs|j}tj}t}|||dtjddf|||dd|||dtjddf|||dd |||d d ||d d dS)Nrr Fr$)rz class C1():rnrcz # Class comment.rm)roz def __init__(self, a, b):rqrs)rtz if a > b:ruz if a == b:)r$z if a == b:ru)rKrZ get_line_infor) splitlinesZINFINITY)rrQZglilinesrrrtest_get_line_infosz%HelperFunctionText.test_get_line_infoN)rr r!rrrrrrrsr__main__rc) verbosity)__doc__ZidlelibrrBZ unittest.mockZ test.supportrZtkinterrrrrrr rr r,r-r1ZIdleUserConfParserr+r)rZTestCaser"rrr rrrrs*    k(