B YI~d�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 �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)Zside�fill�expand�)Zweight�P�)�widthZheight�wrap)�row�columnZsticky)r�tkZTk�rootZFramer�packZLEFTZBOTHZ 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 configType�section)r r r �mock_idleconf_GetFontEsz4LineNumbersTest.setUp..mock_idleconf_GetFontZGetFont)�idlelibZsidebarZ LineNumbersr%r-r.ZidleConfr1�unittestZmockZpatch�object�startZ addCleanup�stopr2)r r0ZGetHighlight_patcherr4ZGetFont_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 �linerD�x�yr r r �get_line_screen_positionRs  z(LineNumbersTest.get_line_screen_positioncCs&|jj��d}|�|dtj�dS)N�state�����)r-rC�config� assertEqualr"ZDISABLED)r rIr r r �assert_state_disabledXsz%LineNumbersTest.assert_state_disabledcCs|jj�dtj�S)Nz1.0)r-rC�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@�rangerLrO)r Zn_lines�expectedr r r �assert_sidebar_n_lines_s"z&LineNumbersTest.assert_sidebar_n_linescCs|�|j�dd�|�S)Nz1.0r;)rLrrN)r rTr r r �assert_text_equalscsz"LineNumbersTest.assert_text_equalscCs|�d�dS)Nr)rU)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 �)rrXrVrU)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)rLr-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)NrX�foobarzfoobar rz fooz foobar foo rBz hello hello zfoobar foohello hello rYz worldzfoobar foohello hello world �)rrXrVrUrM)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)NrXr^zfoobar z1.1z1.3zfbar rzfoo foo z fbarfoo foo �z2.0z2.endz fbarfoo r;zfba z1.0rP)rrXrVr<rUrM)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)Ncs�jj��ddS)NrrJ)r-rCrKr )r r r � get_width�sz:LineNumbersTest.test_sidebar_text_width..get_widthrrXZfooz foo foo foo foo foo foo foo foo � zfoo � rB� 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�dra�ez50.0 -1czend -1c�1z5.0 -1crYz1.0)rUrLrrXr<)r rcr )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 rBz )rFrG)z2.0z3.0) r-r[rrXr#r)rHrC�event_generaterLrA)r rFrGr 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 )rFrGcss<|d}x.t|�D]"}|||||||VqWdS)Nr)rS)�a�b�stepsZ last_step�ir r r �lerpsz+LineNumbersTest.simulate_drag..lerprf)rpz z) rHr-rCrlr#r)�zipr?r) r Z start_lineZend_lineZstart_xZstart_yZend_xZend_yrrrFrGr r r � simulate_drag�s     zLineNumbersTest.simulate_dragcCsB|j��|j�dd�|j��|�dd�|�|��d�dS)Nz1.0zone two three four five rBrY)z2.0z5.0) r-r[rrXr#r)rtrLrA)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 rYrB)z2.0z5.0) r-r[rrXr#r)rtrLrA)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 reZunitz@0,0z11.0z r)rFrGZdelta) r-r[rrXr#r)Z yview_scrollrLrrCrl�assertNotEqual)r r r r � test_scroll*s     zLineNumbersTest.test_scrollcCst|j}|jd}d}|�||�|��||_|��|��|�|jd|�||_|��|�|jd|�dS)NZfontZ TkTextFont)r-rCrwr\r2Z update_fontr[rL)r �lnZ orig_font� test_fontr r r rz?s  zLineNumbersTest.test_fontcsx�j�t�j�}ddd�}��fdd�}���|�_������||����||�|�_���||�dS)Nz#222222z#ffff00)r+r,cs0���jd|d����jd|d�dS)Nr+r,)rLrC)Zcolors)ryr r r �assert_colors_are_equal\szFLineNumbersTest.test_highlight_colors..assert_colors_are_equal)r-�dictr.r\Z update_colorsr[)r Z orig_colorsZ test_colorsr{r )ryr r �test_highlight_colorsVs  z%LineNumbersTest.test_highlight_colorsN)rrr� classmethodr'r*r:r=rArHrMrOrUrVrWrZr]r`rbrkrmrtrurvrxrzr}r r r r rs.   D   r�__main__rB)� verbosity)Zidlelib.sidebarr5� itertoolsrr6Z unittest.mockZ test.supportrZtkinterr"Zidlelib.delegatorrZidlelib.percolatorrrZTestCaserr�mainr r r r �s    [