a  ze3@sdZddlZddlmZddlZddlZddlmZddl Z ddl m Z ddl mZGdddZGd d d ejZed krejd d dS)zTest sidebar, coverage 93%N)chain)requires) Delegator) Percolatorc@s$eZdZddZddZddZdS) Dummy_editwincCs4||_|jj|_t||_t|_|j|jdSN)textZmaster text_framerperrZundoZ insertfilter)selfrr R/opt/bitninja-python-dojo/embedded/lib/python3.9/idlelib/idle_test/test_sidebar.py__init__s   zDummy_editwin.__init__cCsdSrr )r namevaluer r r setvarszDummy_editwin.setvarcCstt|j|Sr)intfloatrindex)r rr r r getlinenoszDummy_editwin.getlinenoN)__name__ __module__ __qualname__rrrr r r r r src@seZdZeddZeddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/S)0LineNumbersTestcCstdt|_t|j|_|jjtjtjdd|jj ddd|jj dddtj |jddtj d|_ |j jddtjd t|j |_t|j|j_dS) NZguiT)Zsidefillexpand)ZweightP)widthZheightwrap)rowcolumnZsticky)rtkZTkrootZFramer packZLEFTZBOTHZ rowconfigureZcolumnconfigureTextNONErZgridZNSEWreditwinZ ScrollbarZvbarclsr r r setUpClasss  zLineNumbersTest.setUpClasscCs4|jj|j|j|`|`|`|`dSr)r(r closer$updateZdestroyrr r)r r r tearDownClass.s   zLineNumbersTest.tearDownClasscstjj_ddd_tjjjfdd}tj j tjjd|}|  |jd_fdd }tj j tjjd |}|  |jdS) Nz#abcdefz#123456 background foregroundcs|dkrjS||S)N linenumber) highlight_cfg)ZthemeelementZorig_idleConf_GetHighlightr r r mock_idleconf_GetHighlight;sz9LineNumbersTest.setUp..mock_idleconf_GetHighlight GetHighlightZ TkFixedFontcsjSr) font_override)r$Z configTypesectionr r r mock_idleconf_GetFontEsz4LineNumbersTest.setUp..mock_idleconf_GetFontZGetFont)idlelibZsidebarZ LineNumbersr(r2r3ZidleConfr7unittestZmockZpatchobjectstartZ addCleanupstopr8)r r6ZGetHighlight_patcherr;ZGetFont_patcherr r5r setUp5s$     zLineNumbersTest.setUpcCs|jdddSN1.0end)rdeleter:r r r tearDownLszLineNumbersTest.tearDowncCsttt|jdS)NZsel)tuplemapstrrZ tag_rangesr:r r r get_selectionOszLineNumbersTest.get_selectioncCs4|jj|d}|dd}|dd}||fS)Nz.end -1crr)r2 sidebar_textbbox)r linerMxyr r r get_line_screen_positionRs  z(LineNumbersTest.get_line_screen_positioncCs&|jjd}||dtjdS)Nstate)r2rLconfig assertEqualr#ZDISABLED)r rRr r r assert_state_disabledXsz%LineNumbersTest.assert_state_disabledcCs|jjdtjS)NrC)r2rLgetr#ZENDr:r r r get_sidebar_text_contents\sz)LineNumbersTest.get_sidebar_text_contentsc Cs6dttttd|ddg}|||dS)N r)joinrrHrIrangerUrX)r Zn_linesexpectedr r r assert_sidebar_n_lines_s"z&LineNumbersTest.assert_sidebar_n_linescCs||jdd|SrB)rUrrW)r r]r r r assert_text_equalscsz"LineNumbersTest.assert_text_equalscCs|ddS)Nr)r^r:r r r test_init_emptyfszLineNumbersTest.test_init_emptycCs&|jdd|d|ddS)Ninsertzfoo 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||jjddS)NFT)rUr2Zis_shown show_sidebar hide_sidebarr:r r r test_toggle_linenumberingns     z)LineNumbersTest.test_toggle_linenumberingcCs|jdd|d|d||jdd|d|d||jdd|d |d ||jdd |d |d |dS)Nrafoobarfoobar 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|jdd|d|jdd|d|d||jdd|d |d ||jd d |d |d ||jdd|d|d||jdd|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|djddd|djddd|djddd |d jddd |d jd d d |d jd d d|djddd|d jddd|djddd|djd d d|djd d d|d jddd|d jddd|djddd|ddS)zY Test that linenumber text widget is always at the minimum width csjjddS)NrrS)r2rLrTr r:r r get_widthsz: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 cdrkez50.0 -1czend -1c1z5.0 -1crbrCN)r^rUrrarE)r rnr r:r test_sidebar_text_widthsZ                z'LineNumbersTest.test_sidebar_text_widthcCsn|j|jdd|j|d\}}|jjjd||d|jj|j| | ddS)NrCzone two three four rK rOrP)rlz3.0) r2rdrrar$r-rQrLevent_generaterUrJ)r rOrPr r r test_click_selections    z$LineNumbersTest.test_click_selectionc Cs||\}}||\}}|jjjd||d|jdd}ttt|||ddtt|||ddD]&\}} |jjjd|| d|jql|jjjd||d|jdS) Nrwrxcss8|d}t|D]"}|||||||VqdS)z;linearly interpolate from a to b (inclusive) in equal stepsrN)r\)abstepsZ last_stepir 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_drags"     zLineNumbersTest.simulate_dragcCsB|j|jdd|j|dd||ddS)NrCone two three four five rKrbrlz5.0 r2rdrrar$r-rrUrJr:r r r test_drag_selection_downs    z(LineNumbersTest.test_drag_selection_downcCsB|j|jdd|j|dd||ddS)NrCrrbrKrrr:r r r test_drag_selection_up!s    z&LineNumbersTest.test_drag_selection_upcCs|j|jdd|j|jdd|j||jdd||jj dd|jj j ddddd |j| |jdd| |jj dddS) NrCaline 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_scrollrUrrLryassertNotEqualr:r r r test_scroll*s     zLineNumbersTest.test_scrollcCst|j}|jd}d}||||||_||||jd|||_|||jd|dS)NZfontZ TkTextFont)r2rLrrer8Z update_fontrdrU)r lnZ orig_font test_fontr r r r?s  zLineNumbersTest.test_fontcsxjtj}ddd}fdd}|_|||||_||dS)Nz#222222z#ffff00r/cs0jd|djd|ddS)Nr0r1)rUrL)Zcolorsrr r r assert_colors_are_equal\szFLineNumbersTest.test_highlight_colors..assert_colors_are_equal)r2dictr3reZ update_colorsrd)r Z orig_colorsZ test_colorsrr rr test_highlight_colorsVs  z%LineNumbersTest.test_highlight_colorsN)rrr classmethodr+r.rArFrJrQrVrXr^r_r`rcrfrjrmrvrzrrrrrrr r r r rs2   D   r__main__rK) verbosity)__doc__Zidlelib.sidebarr< itertoolsrr=Z unittest.mockZ test.supportrtkinterr#Zidlelib.delegatorrZidlelib.percolatorrrZTestCaserrmainr r r r s    [