B >¸ßj¯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 úC/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_sidebar.pyÚ__init__s   zDummy_editwin.__init__cCsdS)Nr )r ÚnameÚvaluer r r ÚsetvarszDummy_editwin.setvarcCstt|j |¡ƒƒS)N)ÚintÚfloatrÚindex)r rr r r Ú getlinenoszDummy_editwin.getlinenoN)Ú__name__Ú __module__Ú __qualname__r rrr 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 ddd�tj |jddtj d�|_ |j jddtjd �t|j ƒ|_t |j¡|j_dS) NZguiT)ZsideZfillÚexpandé)ZweightéPé)ÚwidthZheightZwrap)ÚrowÚcolumnZsticky)rÚtkZTkÚrootZFramerZpackZLEFTZBOTHZ rowconfigureZcolumnconfigureZTextZNONErZgridZNSEWrÚeditwinZ ScrollbarZvbar)Úclsr r r Ú setUpClasss  zLineNumbersTest.setUpClasscCs4|jj ¡|j ¡|j ¡|`|`|`|`dS)N)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)ZthemeZelement)Úorig_idleConf_GetHighlightr r r Úmock_idleconf_GetHighlight;sz9LineNumbersTest.setUp..mock_idleconf_GetHighlightÚ GetHighlightZ TkFixedFontcsˆjS)N)Ú font_override)r!Z configTypeZsection)r r r Úmock_idleconf_GetFontEsz4LineNumbersTest.setUp..mock_idleconf_GetFontZGetFont)ÚidlelibZsidebarZ LineNumbersr"r*r+ZidleConfr.ÚunittestZmockZpatchÚobjectÚstartZ addCleanupÚstopr/)r r-ZGetHighlight_patcherr0ZGetFont_patcherr )r,r r ÚsetUp5s    zLineNumbersTest.setUpcCs|j dd¡dS)Nz1.0Úend)rÚdelete)r r r r ÚtearDownLszLineNumbersTest.tearDowncCsttt|j d¡ƒƒS)NZsel)ÚtupleÚmapÚstrrZ tag_ranges)r r r r Ú get_selectionOszLineNumbersTest.get_selectioncCs4|jj |›d�¡}|dd}|dd}||fS)Nz.end -1crér)r*Ú sidebar_textÚbbox)r Úliner@ÚxÚyr r r Úget_line_screen_positionRs  z(LineNumbersTest.get_line_screen_positioncCs&|jj ¡d}| |dtj¡dS)NÚstateéÿÿÿÿ)r*r?ÚconfigÚ assertEqualr ZDISABLED)r rEr r r Úassert_state_disabledXsz%LineNumbersTest.assert_state_disabledcCs|jj dtj¡S)Nz1.0)r*r?Úgetr ZEND)r r r r Úget_sidebar_text_contents\sz)LineNumbersTest.get_sidebar_text_contentsc Cs6d ttttd|dƒƒdgƒ¡}| | ¡|¡dS)NÚ rÚ)Újoinrr;r<ÚrangerHrK)r Zn_linesÚexpectedr r r Úassert_sidebar_n_lines_s"z&LineNumbersTest.assert_sidebar_n_linescCs| |j dd¡|¡S)Nz1.0r7)rHrrJ)r rPr r r Úassert_text_equalscsz"LineNumbersTest.assert_text_equalscCs| d¡dS)Nr)rQ)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 é)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 ¡| |jjd¡dS)NFT)rHr*Zis_shownÚ show_sidebarÚ hide_sidebar)r 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)NrTÚfoobarzfoobar 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î|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)NrTrZzfoobar z1.1z1.3zfbar rzfoo foo z fbarfoo foo éz2.0z2.endz fbarfoo r7zfba z1.0rL)rrTrRr8rQrI)r r r r Ú test_delete�s,           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)NrrF)r*r?rGr )r r r Ú get_width³sz: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 écédr]éez50.0 -1czend -1cé1z5.0 -1crUz1.0N)rQrHrrTr8)r r_r )r r Útest_sidebar_text_width®sZ                z'LineNumbersTest.test_sidebar_text_widthcCsn|j ¡|j dd¡|j ¡| d¡\}}|jjjd||d�|jj ¡|j ¡|  |  ¡d¡dS)Nz1.0zone two three four r>z )rBrC)z2.0z3.0) r*rWrrTr!r&rDr?Úevent_generaterHr=)r rBrCr r r Útest_click_selectionòs    z$LineNumbersTest.test_click_selectionc Csº| |¡\}}| |¡\}}|jjjd||d�|j ¡dd„}xTttt|||dd�ƒtt|||dd�ƒƒD]&\}} |jjjd|| d�|j ¡qnW|jjjd||d�|j ¡dS) Nz )rBrCcss<|d}x.t|ƒD]"}|||||||VqWdS)z;linearly interpolate from a to b (inclusive) in equal stepsrN)rO)ÚaÚbÚstepsZ last_stepÚir 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_dragÿs     zLineNumbersTest.simulate_dragcCsB|j ¡|j dd¡|j ¡| dd¡| | ¡d¡dS)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 ¡|j dd¡|j ¡| dd¡| | ¡d¡dS)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 ¡|j dd¡|j ¡|j dd¡|j ¡| |j d¡d¡| |jj  d¡d¡|jj j ddddd �|j ¡|  |j d¡d¡|  |jj  d¡d¡dS) Nz1.0aôline line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line line 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?rhÚassertNotEqual)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_fontcsxˆj‰tˆjƒ}dddœ}‡‡fdd„}ˆ ¡|ˆ_ˆ ¡ˆ ¡||ƒˆ ¡||ƒ|ˆ_ˆ ¡||ƒdS)Nz#222222z#ffff00)r(r)cs0ˆ ˆjd|d¡ˆ ˆjd|d¡dS)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.percolatorrrZTestCaserrÚmainr r r r Ús    [