a 9êdg¯3ã@sˆddlZddlmZddlZddlZddlmZddlZ ddl m Z ddl m Z Gdd„dƒZGdd „d ejƒZed kr„ejd d dS) éN)Úchain)Úrequires)Ú Delegator)Ú Percolatorc@s$eZdZdd„Zdd„Zdd„ZdS)Ú Dummy_editwincCs4||_|jj|_t|ƒ|_tƒ|_|j |j¡dS©N)ÚtextZmasterÚ text_framerÚperrZundoZ insertfilter)Úselfr©r ú:/usr/local/lib/python3.9/idlelib/idle_test/test_sidebar.pyÚ__init__s   zDummy_editwin.__init__cCsdSrr )r ÚnameÚvaluer r r ÚsetvarszDummy_editwin.setvarcCstt|j |¡ƒƒSr)ÚintÚfloatrÚindex)r rr r r Ú getlinenoszDummy_editwin.getlinenoN)Ú__name__Ú __module__Ú __qualname__rrrr r r r r src@sÌeZdZedd„ƒZedd„ƒZdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/S)0ÚLineNumbersTestcCs¢tdƒt ¡|_t |j¡|_|jjtjtjdd|jj ddd|jj dddtj |jddtj d|_ |j jddtjd t|j ƒ|_t |j¡|j_dS) NZguiT)ZsideÚfillÚexpandé)ZweightéPé)ÚwidthZheightÚwrap)ÚrowÚcolumnZsticky)rÚtkZTkÚrootZFramer ÚpackZLEFTZBOTHZ rowconfigureZcolumnconfigureÚTextÚNONErZgridZNSEWrÚeditwinZ ScrollbarZvbar©Úclsr r r Ú setUpClasss  zLineNumbersTest.setUpClasscCs4|jj ¡|j ¡|j ¡|`|`|`|`dSr)r(r Úcloser$ÚupdateZdestroyrr r)r r r Ú tearDownClass.s   zLineNumbersTest.tearDownClasscsžtj ˆj¡ˆ_dddœˆ_tjjj‰‡‡fdd„}tj j   tjjd|¡}|  ¡ˆ  |j¡dˆ_‡fdd „}tj j   tjjd |¡}|  ¡ˆ  |j¡dS) Nz#abcdefz#123456©Ú backgroundÚ foregroundcs|dkrˆjSˆ||ƒS)NÚ linenumber)Ú highlight_cfg)ZthemeÚelement©Zorig_idleConf_GetHighlightr r r Úmock_idleconf_GetHighlight;sz9LineNumbersTest.setUp..mock_idleconf_GetHighlightÚ GetHighlightZ TkFixedFontcsˆjSr)Ú font_override)r$Z configTypeÚsection©r r r Úmock_idleconf_GetFontEsz4LineNumbersTest.setUp..mock_idleconf_GetFontZGetFont)ÚidlelibZsidebarZ LineNumbersr(r2r3ZidleConfr7ÚunittestZmockZpatchÚobjectÚstartZ addCleanupÚstopr8)r r6ZGetHighlight_patcherr;ZGetFont_patcherr r5r ÚsetUp5s$ÿ  ÿ   ÿzLineNumbersTest.setUpcCs|j dd¡dS©Nú1.0Úend)rÚdeleter:r r r ÚtearDownLszLineNumbersTest.tearDowncCsttt|j d¡ƒƒS)NZsel)ÚtupleÚmapÚstrrZ tag_rangesr:r r r Ú get_selectionOszLineNumbersTest.get_selectioncCs4|jj |›d¡}|dd}|dd}||fS)Nz.end -1crér)r2Ú sidebar_textÚbbox)r ÚlinerMÚxÚyr r r Úget_line_screen_positionRs  z(LineNumbersTest.get_line_screen_positioncCs&|jj ¡d}| |dtj¡dS)NÚstateéÿÿÿÿ)r2rLÚconfigÚ assertEqualr#ZDISABLED)r rRr r r Úassert_state_disabledXsz%LineNumbersTest.assert_state_disabledcCs|jj dtj¡S)NrC)r2rLÚgetr#ZENDr:r r r Úget_sidebar_text_contents\sz)LineNumbersTest.get_sidebar_text_contentsc Cs6d ttttd|dƒƒdgƒ¡}| | ¡|¡dS)NÚ rÚ)ÚjoinrrHrIÚrangerUrX)r Zn_linesÚexpectedr r r Úassert_sidebar_n_lines_s"z&LineNumbersTest.assert_sidebar_n_linescCs| |j dd¡|¡SrB)rUrrW)r r]r r r Úassert_text_equalscsz"LineNumbersTest.assert_text_equalscCs| d¡dS©Nr)r^r:r r r Útest_init_emptyfszLineNumbersTest.test_init_emptycCs&|j dd¡| d¡| d¡dS)NÚinsertzfoo bar foo bar foo bar zfoo bar foo bar foo bar é)rrbr_r^r:r r r Útest_init_not_emptyis z#LineNumbersTest.test_init_not_emptycCs–| |jjd¡|j ¡| |jjd¡|j ¡| |jjd¡|j ¡| |jjd¡|j ¡| |jjd¡|j ¡| |jjd¡dS)NFT)rUr2Zis_shownÚ show_sidebarÚ hide_sidebarr:r r r Útest_toggle_linenumberingns     z)LineNumbersTest.test_toggle_linenumberingcCs¬|j dd¡| d¡| d¡| ¡|j dd¡| d¡| d¡| ¡|j dd¡| d ¡| d ¡| ¡|j dd ¡| d ¡| d ¡| ¡dS)NrbÚfoobarúfoobar rz fooz foobar foo rKz hello hello zfoobar foohello hello rcz worldzfoobar foohello hello world é)rrbr_r^rVr:r r r Ú test_insert{s         zLineNumbersTest.test_insertcCsî|j dd¡| d¡|j dd¡| d¡| d¡| ¡|j dd¡| d ¡| d ¡| ¡|j d d ¡| d ¡| d ¡| ¡|j dd¡| d¡| d¡| ¡|j dd¡| d¡| d¡| ¡dS)Nrbrhriz1.1z1.3zfbar rzfoo foo z fbarfoo foo éú2.0z2.endz fbarfoo rDzfba rCrY)rrbr_rEr^rVr:r r r Ú test_deletes,           zLineNumbersTest.test_deletecs<‡fdd„}ˆ d¡ˆ |ƒd¡ˆj dd¡ˆ d¡ˆ |ƒd¡ˆj dd¡ˆ d¡ˆ |ƒd¡ˆj dd¡ˆ d ¡ˆ |ƒd ¡ˆj dd¡ˆ d ¡ˆ |ƒd ¡ˆj d d ¡ˆ d ¡ˆ |ƒd ¡ˆj d d ¡ˆ d¡ˆ |ƒd¡ˆj dd¡ˆ d¡ˆ |ƒd ¡ˆj dd¡ˆ d¡ˆ |ƒd¡ˆj dd¡ˆ d¡ˆ |ƒd¡ˆj d d ¡ˆ d¡ˆ |ƒd¡ˆj d d ¡ˆ d¡ˆ |ƒd ¡ˆj dd¡ˆ d¡ˆ |ƒd ¡ˆj dd¡ˆ d¡ˆ |ƒd¡ˆj dd¡ˆ d¡ˆ |ƒd¡dS)Ncsˆjj ¡ddS)NrrS)r2rLrTr r:r r Ú get_width³sz:LineNumbersTest.test_sidebar_text_width..get_widthrrbZfooz foo foo foo foo foo foo foo foo é zfoo é rKé zinsert -1l linestartzinsert linestartahfoo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo écédrléez50.0 -1czend -1cé1z5.0 -1crcrC)r^rUrrbrE)r ror r:r Útest_sidebar_text_width®sZ                z'LineNumbersTest.test_sidebar_text_widthcCsn|j ¡|j dd¡|j ¡| d¡\}}|jjjd||d|jj ¡|j ¡|  |  ¡d¡dS)NrCzone two three four rKú ©rOrP)rmz3.0) r2rerrbr$r-rQrLÚevent_generaterUrJ)r rOrPr r r Útest_click_selectionòs    z$LineNumbersTest.test_click_selectionc Cs¶| |¡\}}| |¡\}}|jjjd||d|j ¡dd„}ttt|||ddƒtt|||ddƒƒD]&\}} |jjjd|| d|j ¡ql|jjjd||d|j ¡dS) Nrxrycss8|d}t|ƒD]"}|||||||VqdSr`)r\)ÚaÚbÚstepsZ last_stepÚir r r Úlerps z+LineNumbersTest.simulate_drag..lerprr)r~z z) rQr2rLrzr$r-ÚziprHr) r Z start_lineZend_lineZstart_xZstart_yZend_xZend_yr€rOrPr r r Ú simulate_dragÿs" ÿ þ   ÿzLineNumbersTest.simulate_dragcCsB|j ¡|j dd¡|j ¡| dd¡| | ¡d¡dS)NrCúone two three four five rKrc©rmz5.0© r2rerrbr$r-r‚rUrJr:r r r Útest_drag_selection_downs    z(LineNumbersTest.test_drag_selection_downcCsB|j ¡|j dd¡|j ¡| dd¡| | ¡d¡dS)NrCrƒrcrKr„r…r:r r r Útest_drag_selection_up!s    z&LineNumbersTest.test_drag_selection_upcCs²|j ¡|j dd¡|j ¡|j dd¡|j ¡| |j d¡d¡| |jj  d¡d¡|jj j ddddd |j ¡|  |j d¡d¡|  |jj  d¡d¡dS) NrCaôline line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line rqZunitz@0,0z11.0z r)rOrPZdelta) r2rerrbr$r-Z yview_scrollrUrrLrzÚassertNotEqualr:r r r Ú test_scroll*s    þ zLineNumbersTest.test_scrollcCst|j}|jd}d}| ||¡| ¡||_| ¡| ¡| |jd|¡||_| ¡| |jd|¡dS)NZfontZ TkTextFont)r2rLrˆrfr8Z update_fontrerU)r ÚlnZ orig_fontÚ test_fontr r r r‹?s  zLineNumbersTest.test_fontcsxˆj‰tˆjƒ}dddœ}‡‡fdd„}ˆ ¡|ˆ_ˆ ¡ˆ ¡||ƒˆ ¡||ƒ|ˆ_ˆ ¡||ƒdS)Nz#222222z#ffff00r/cs0ˆ ˆjd|d¡ˆ ˆjd|d¡dS)Nr0r1)rUrL)Zcolors©rŠr r r Úassert_colors_are_equal\szFLineNumbersTest.test_highlight_colors..assert_colors_are_equal)r2Údictr3rfZ update_colorsre)r Z orig_colorsZ test_colorsrr rŒr Útest_highlight_colorsVs  z%LineNumbersTest.test_highlight_colorsN)rrrÚ classmethodr+r.rArFrJrQrVrXr^r_rardrgrkrnrwr{r‚r†r‡r‰r‹rr r r r rs2   D   rÚ__main__rK)Ú verbosity)Zidlelib.sidebarr<Ú itertoolsrr=Z unittest.mockZ test.supportrÚtkinterr#Zidlelib.delegatorrZidlelib.percolatorrrZTestCaserrÚmainr r r r Ús    [