B  f3@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|jdS)N)textZmaster text_framerperrZundoZ insertfilter)selfrr C/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_sidebar.py__init__s   zDummy_editwin.__init__cCsdS)Nr )r namevaluer r r setvarszDummy_editwin.setvarcCstt|j|S)N)intfloatrindex)r rr r r getlinenoszDummy_editwin.getlinenoN)__name__ __module__ __qualname__r rrr 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)ZsideZfillexpand)ZweightP)widthZheightZwrap)rowcolumnZsticky)rtkZTkrootZFramerZpackZLEFTZBOTHZ rowconfigureZcolumnconfigureZTextZNONErZgridZNSEWreditwinZ ScrollbarZvbar)clsr r r setUpClasss  zLineNumbersTest.setUpClasscCs4|jj|j|j|`|`|`|`dS)N)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)ZthemeZelement)orig_idleConf_GetHighlightr r r mock_idleconf_GetHighlight;sz9LineNumbersTest.setUp..mock_idleconf_GetHighlight GetHighlightZ TkFixedFontcsjS)N) font_override)r!Z configTypeZsection)r r r mock_idleconf_GetFontEsz4LineNumbersTest.setUp..mock_idleconf_GetFontZGetFont)idlelibZsidebarZ LineNumbersr"r*r+ZidleConfr.unittestZmockZpatchobjectstartZ addCleanupstopr/)r r-ZGetHighlight_patcherr0ZGetFont_patcherr )r,r r setUp5s    zLineNumbersTest.setUpcCs|jdddS)Nz1.0end)rdelete)r r r r tearDownLszLineNumbersTest.tearDowncCsttt|jdS)NZsel)tuplemapstrrZ tag_ranges)r r r r get_selectionOszLineNumbersTest.get_selectioncCs4|jj|d}|dd}|dd}||fS)Nz.end -1crr)r* sidebar_textbbox)r liner@xyr r r get_line_screen_positionRs  z(LineNumbersTest.get_line_screen_positioncCs&|jjd}||dtjdS)Nstate)r*r?config assertEqualr ZDISABLED)r rEr r r assert_state_disabledXsz%LineNumbersTest.assert_state_disabledcCs|jjdtjS)Nz1.0)r*r?getr ZEND)r r r r get_sidebar_text_contents\sz)LineNumbersTest.get_sidebar_text_contentsc Cs6dttttd|ddg}|||dS)N r)joinrr;r<rangerHrK)r Zn_linesexpectedr r r assert_sidebar_n_lines_s"z&LineNumbersTest.assert_sidebar_n_linescCs||jdd|S)Nz1.0r7)rHrrJ)r rPr r r assert_text_equalscsz"LineNumbersTest.assert_text_equalscCs|ddS)Nr)rQ)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 )rrTrRrQ)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)rHr*Zis_shown show_sidebar hide_sidebar)r r r r test_toggle_linenumberingns     z)LineNumbersTest.test_toggle_linenumberingcCs|jdd|d|d||jdd|d|d||jdd|d |d ||jdd |d |d |dS)NrTfoobarzfoobar rz fooz foobar foo r>z hello hello zfoobar foohello hello rUz worldzfoobar foohello hello world )rrTrRrQrI)r 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)NrTrZzfoobar z1.1z1.3zfbar rzfoo foo z fbarfoo foo z2.0z2.endz fbarfoo r7zfba z1.0rL)rrTrRr8rQrI)r 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)NrrF)r*r?rGr )r r r get_widthsz:LineNumbersTest.test_sidebar_text_width..get_widthrrTZfooz foo foo foo foo foo foo foo foo zfoo r> 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 cdr]ez50.0 -1czend -1c1z5.0 -1crUz1.0N)rQrHrrTr8)r r_r )r r test_sidebar_text_widthsZ                z'LineNumbersTest.test_sidebar_text_widthcCsn|j|jdd|j|d\}}|jjjd||d|jj|j| | ddS)Nz1.0zone two three four r>z )rBrC)z2.0z3.0) r*rWrrTr!r&rDr?event_generaterHr=)r rBrCr r r test_click_selections    z$LineNumbersTest.test_click_selectionc Cs||\}}||\}}|jjjd||d|jdd}xTttt|||ddtt|||ddD]&\}} |jjjd|| d|jqnW|jjjd||d|jdS) Nz )rBrCcss<|d}x.t|D]"}|||||||VqWdS)z;linearly interpolate from a to b (inclusive) in equal stepsrN)rO)abstepsZ last_stepir r r lerpsz+LineNumbersTest.simulate_drag..lerprb)rlz z) rDr*r?rhr!r&zipr;r) r Z start_lineZend_lineZstart_xZstart_yZend_xZend_yrnrBrCr r r simulate_drags     zLineNumbersTest.simulate_dragcCsB|j|jdd|j|dd||ddS)Nz1.0zone two three four five r>rU)z2.0z5.0) r*rWrrTr!r&rprHr=)r r r r test_drag_selection_downs    z(LineNumbersTest.test_drag_selection_downcCsB|j|jdd|j|dd||ddS)Nz1.0zone two three four five rUr>)z2.0z5.0) r*rWrrTr!r&rprHr=)r 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) Nz1.0aline 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 raZunitz@0,0z11.0z r)rBrCZdelta) r*rWrrTr!r&Z yview_scrollrHrr?rhassertNotEqual)r r r r test_scroll*s     zLineNumbersTest.test_scrollcCst|j}|jd}d}||||||_||||jd|||_|||jd|dS)NZfontZ TkTextFont)r*r?rsrXr/Z update_fontrWrH)r lnZ orig_font test_fontr r r rv?s  zLineNumbersTest.test_fontcsxjtj}ddd}fdd}|_|||||_||dS)Nz#222222z#ffff00)r(r)cs0jd|djd|ddS)Nr(r))rHr?)Zcolors)rur r r assert_colors_are_equal\szFLineNumbersTest.test_highlight_colors..assert_colors_are_equal)r*dictr+rXZ update_colorsrW)r Z orig_colorsZ test_colorsrwr )rur r test_highlight_colorsVs  z%LineNumbersTest.test_highlight_colorsN)rrr classmethodr$r'r6r9r=rDrIrKrQrRrSrVrYr\r^rgrirprqrrrtrvryr r r r rs.   D   r__main__r>) verbosity)__doc__Zidlelib.sidebarr1 itertoolsrr2Z unittest.mockZ test.supportrZtkinterr Zidlelib.delegatorrZidlelib.percolatorrrZTestCaserrmainr r r r s    [