a 9êdg¯3ã@sŒdZddlZddlmZddlZddlZddlmZddl Z ddl m Z ddl mZGdd„dƒZGd d „d ejƒZed krˆejd d dS)zTest sidebar, coverage 93%é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 é)rrar_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)NraÚfoobarúfoobar rz fooz foobar foo rKz hello hello zfoobar foohello hello rbz worldzfoobar foohello hello world é)rrar_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)Nrargrhz1.1z1.3zfbar rzfoo foo z fbarfoo foo éú2.0z2.endz fbarfoo rDzfba rCrY)rrar_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)zY Test that linenumber text widget is always at the minimum width csˆjj ¡ddS)NrrS)r2rLrTr r:r r Ú get_width³sz:LineNumbersTest.test_sidebar_text_width..get_widthrraZfooz 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édrkéez50.0 -1czend -1cé1z5.0 -1crbrCN)r^rUrrarE)r rnr 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)rlz3.0) r2rdrrar$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) Nrwrxcss8|d}t|ƒD]"}|||||||VqdS)z;linearly interpolate from a to b (inclusive) in equal stepsrN)r\)ÚaÚbÚstepsZ last_stepÚir r r Úlerps z+LineNumbersTest.simulate_drag..lerprq)r}z z) rQr2rLryr$r-ÚziprHr) r Z start_lineZend_lineZstart_xZstart_yZend_xZend_yrrOrPr r r Ú simulate_dragÿs" ÿ þ   ÿzLineNumbersTest.simulate_dragcCsB|j ¡|j dd¡|j ¡| dd¡| | ¡d¡dS)NrCúone two three four five rKrb©rlz5.0© r2rdrrar$r-rrUrJr:r r r Útest_drag_selection_downs    z(LineNumbersTest.test_drag_selection_downcCsB|j ¡|j dd¡|j ¡| dd¡| | ¡d¡dS)NrCr‚rbrKrƒ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 rpZunitz@0,0z11.0z r)rOrPZdelta) r2rdrrar$r-Z yview_scrollrUrrLryÚassertNotEqualr:r r r Ú test_scroll*s    þ zLineNumbersTest.test_scrollcCst|j}|jd}d}| ||¡| ¡||_| ¡| ¡| |jd|¡||_| ¡| |jd|¡dS)NZfontZ TkTextFont)r2rLr‡rer8Z update_fontrdrU)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Údictr3reZ update_colorsrd)r Z orig_colorsZ test_colorsrŒr r‹r Útest_highlight_colorsVs  z%LineNumbersTest.test_highlight_colorsN)rrrÚ classmethodr+r.rArFrJrQrVrXr^r_r`rcrfrjrmrvrzrr…r†rˆrŠrŽr r r r rs2   D   rÚ__main__rK)Ú verbosity)Ú__doc__Zidlelib.sidebarr<Ú itertoolsrr=Z unittest.mockZ test.supportrÚtkinterr#Zidlelib.delegatorrZidlelib.percolatorrrZTestCaserrÚmainr r r r Ús    [