<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
     f3                 @   s   d Z ddlZddlmZ ddlZddlZddlmZ ddl	Z
ddlmZ ddlmZ G dd dZG d	d
 d
ejZedkrejdd dS )zTest sidebar, coverage 93%    N)chain)requires)	Delegator)
Percolatorc               @   s$   e Zd Zdd Zdd Zdd ZdS )Dummy_editwinc             C   s4   || _ | j j| _t|| _t | _| j| j d S )N)textZmaster
text_framer   perr   ZundoZinsertfilter)selfr    r   C/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_sidebar.py__init__   s
    

zDummy_editwin.__init__c             C   s   d S )Nr   )r
   namevaluer   r   r   setvar   s    zDummy_editwin.setvarc             C   s   t t| j|S )N)intfloatr   index)r
   r   r   r   r   	getlineno   s    zDummy_editwin.getlinenoN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s   r   c               @   s   e Zd Zedd Zedd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/S )0LineNumbersTestc             C   s   t d t | _t| j| _| jjtjtjdd | jj	ddd | jj
ddd tj| jddtjd| _| jjddtjd	 t| j| _t| j| j_d S )
NZguiT)ZsideZfillexpand   )ZweightP      )widthZheightZwrap)rowcolumnZsticky)r   tkZTkrootZFramer   ZpackZLEFTZBOTHZrowconfigureZcolumnconfigureZTextZNONEr   ZgridZNSEWr   editwinZ	ScrollbarZvbar)clsr   r   r   
setUpClass   s    
zLineNumbersTest.setUpClassc             C   s4   | j j  | j  | j  | `| `| ` | `d S )N)r"   r	   closer!   updateZdestroyr   r   )r#   r   r   r   tearDownClass.   s    

zLineNumbersTest.tearDownClassc                s   t jj_ddd_t jjj  fdd}tj	j
t jjd|}|  |j d_fdd	}tj	j
t jjd
|}|  |j d S )Nz#abcdefz#123456)
background
foregroundc                s   |dkrj S  | |S )N
linenumber)highlight_cfg)ZthemeZelement)orig_idleConf_GetHighlightr
   r   r   mock_idleconf_GetHighlight;   s    z9LineNumbersTest.setUp.<locals>.mock_idleconf_GetHighlightGetHighlightZTkFixedFontc                s    j S )N)font_override)r!   Z
configTypeZsection)r
   r   r   mock_idleconf_GetFontE   s    z4LineNumbersTest.setUp.<locals>.mock_idleconf_GetFontZGetFont)idlelibZsidebarZLineNumbersr"   r*   r+   ZidleConfr.   unittestZmockZpatchobjectstartZ
addCleanupstopr/   )r
   r-   ZGetHighlight_patcherr0   ZGetFont_patcherr   )r,   r
   r   setUp5   s    

zLineNumbersTest.setUpc             C   s   | j dd d S )Nz1.0end)r   delete)r
   r   r   r   tearDownL   s    zLineNumbersTest.tearDownc             C   s   t tt| jdS )NZsel)tuplemapstrr   Z
tag_ranges)r
   r   r   r   get_selectionO   s    zLineNumbersTest.get_selectionc             C   s4   | j j| d}|d d }|d d }||fS )Nz.end -1cr      r   )r*   sidebar_textbbox)r
   liner@   xyr   r   r   get_line_screen_positionR   s    z(LineNumbersTest.get_line_screen_positionc             C   s&   | j j d }| |d tj d S )Nstate)r*   r?   configassertEqualr    ZDISABLED)r
   rE   r   r   r   assert_state_disabledX   s    z%LineNumbersTest.assert_state_disabledc             C   s   | j jdtjS )Nz1.0)r*   r?   getr    ZEND)r
   r   r   r   get_sidebar_text_contents\   s    z)LineNumbersTest.get_sidebar_text_contentsc          	   C   s6   d ttttd|d dg}| |  | d S )N
r    )joinr   r;   r<   rangerH   rK   )r
   Zn_linesexpectedr   r   r   assert_sidebar_n_lines_   s    "z&LineNumbersTest.assert_sidebar_n_linesc             C   s   |  | jdd|S )Nz1.0r7   )rH   r   rJ   )r
   rP   r   r   r   assert_text_equalsc   s    z"LineNumbersTest.assert_text_equalsc             C   s   |  d d S )Nr   )rQ   )r
   r   r   r   test_init_emptyf   s    zLineNumbersTest.test_init_emptyc             C   s&   | j dd | d | d d S )Ninsertzfoo bar
foo bar
foo bar
zfoo bar
foo bar
foo bar

   )r   rT   rR   rQ   )r
   r   r   r   test_init_not_emptyi   s    
z#LineNumbersTest.test_init_not_emptyc             C   s   |  | jjd | j  |  | jjd | j  |  | jjd | j  |  | jjd | j  |  | jjd | j  |  | jjd d S )NFT)rH   r*   Zis_shownshow_sidebarhide_sidebar)r
   r   r   r   test_toggle_linenumberingn   s    




z)LineNumbersTest.test_toggle_linenumberingc             C   s   | j dd | d | d |   | j dd | d | d |   | j dd | d	 | d
 |   | j dd | d | d |   d S )NrT   foobarzfoobar
r   z
foozfoobar
foo
r>   zhello
hello
zfoobar
foohello
hello

rU   z
worldzfoobar
foohello
hello

world
   )r   rT   rR   rQ   rI   )r
   r   r   r   test_insert{   s     







zLineNumbersTest.test_insertc             C   s   | j dd | d | j dd | d | d |   | j dd | d	 | d
 |   | j dd | d | d
 |   | j dd | d | d |   | j dd | d | d |   d S )NrT   rZ   zfoobar
z1.1z1.3zfbar
r   zfoo
foo
zfbarfoo
foo

   z2.0z2.endz
fbarfoo


r7   zfba
z1.0rL   )r   rT   rR   r8   rQ   rI   )r
   r   r   r   test_delete   s,    










zLineNumbersTest.test_deletec                s<   fdd}  d  | d  jdd   d  | d  jdd   d  | d  jdd   d	  | d
  jdd   d  | d
  jdd   d	  | d
  jdd   d  | d  jdd   d  | d
  jdd   d  | d  jdd   d  | d  jdd   d  | d  jdd   d  | d
  jdd   d  | d
  jdd   d  | d  jdd   d  | d dS )zY
        Test that linenumber text widget is always at the minimum
        width
        c                  s    j j d d S )Nr   rF   )r*   r?   rG   r   )r
   r   r   	get_width   s    z:LineNumbersTest.test_sidebar_text_width.<locals>.get_widthr   rT   Zfooz foo
foo
foo
foo
foo
foo
foo
foo
	   zfoo

   r>      zinsert -1l linestartzinsert linestartah  foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
foo
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   d   r]   e   z50.0 -1czend -1c1   z5.0 -1crU   z1.0N)rQ   rH   r   rT   r8   )r
   r_   r   )r
   r   test_sidebar_text_width   sZ    














z'LineNumbersTest.test_sidebar_text_widthc             C   sn   | j   | jdd | j  | d\}}| j jjd||d | j j  | j  | 	| 
 d d S )Nz1.0zone
two
three
four
r>   z
<Button-1>)rB   rC   )z2.0z3.0)r*   rW   r   rT   r!   r&   rD   r?   event_generaterH   r=   )r
   rB   rC   r   r   r   test_click_selection   s    


z$LineNumbersTest.test_click_selectionc       
   	   C   s   |  |\}}|  |\}}| jjjd||d | j  dd }xTttt|||ddtt|||ddD ]&\}}	| jjjd||	d | j  qnW | jjjd||d | j  d S )	Nz
<Button-1>)rB   rC   c             s   s<   |d }x.t |D ]"}|| | |  || |  V  qW dS )z;linearly interpolate from a to b (inclusive) in equal stepsr   N)rO   )abstepsZ	last_stepir   r   r   lerp  s    z+LineNumbersTest.simulate_drag.<locals>.lerprb   )rl   z<B1-Motion>z<ButtonRelease-1>)	rD   r*   r?   rh   r!   r&   zipr;   r   )
r
   Z
start_lineZend_lineZstart_xZstart_yZend_xZend_yrn   rB   rC   r   r   r   simulate_drag   s    




zLineNumbersTest.simulate_dragc             C   sB   | j   | jdd | j  | dd | |  d d S )Nz1.0zone
two
three
four
five
r>   rU   )z2.0z5.0)	r*   rW   r   rT   r!   r&   rp   rH   r=   )r
   r   r   r   test_drag_selection_down  s
    

z(LineNumbersTest.test_drag_selection_downc             C   sB   | j   | jdd | j  | dd | |  d d S )Nz1.0zone
two
three
four
five
rU   r>   )z2.0z5.0)	r*   rW   r   rT   r!   r&   rp   rH   r=   )r
   r   r   r   test_drag_selection_up!  s
    

z&LineNumbersTest.test_drag_selection_upc             C   s   | j   | jdd | j  | jdd | j  | | jdd | | j j	dd | j j	j
ddddd	 | j  | | jdd | | j j	dd d S )
Nz1.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
ra   Zunitz@0,0z11.0z<MouseWheel>r   )rB   rC   Zdelta)r*   rW   r   rT   r!   r&   Zyview_scrollrH   r   r?   rh   assertNotEqual)r
   r   r   r   test_scroll*  s    




zLineNumbersTest.test_scrollc             C   st   | j }|jd }d}| || |  || _|  |  | |jd | || _|  | |jd | d S )NZfontZ
TkTextFont)r*   r?   rs   rX   r/   Zupdate_fontrW   rH   )r
   lnZ	orig_font	test_fontr   r   r   rv   ?  s    
zLineNumbersTest.test_fontc                sx   j  tj}ddd} fdd}   |_      ||    || |_   || d S )Nz#222222z#ffff00)r(   r)   c                s0     jd | d    jd | d  d S )Nr(   r)   )rH   r?   )Zcolors)ru   r
   r   r   assert_colors_are_equal\  s    zFLineNumbersTest.test_highlight_colors.<locals>.assert_colors_are_equal)r*   dictr+   rX   Zupdate_colorsrW   )r
   Zorig_colorsZtest_colorsrw   r   )ru   r
   r   test_highlight_colorsV  s    

z%LineNumbersTest.test_highlight_colorsN)r   r   r   classmethodr$   r'   r6   r9   r=   rD   rI   rK   rQ   rR   rS   rV   rY   r\   r^   rg   ri   rp   rq   rr   rt   rv   ry   r   r   r   r   r      s.   D		r   __main__r>   )	verbosity)__doc__Zidlelib.sidebarr1   	itertoolsr   r2   Zunittest.mockZtest.supportr   Ztkinterr    Zidlelib.delegatorr   Zidlelib.percolatorr   r   ZTestCaser   r   mainr   r   r   r   <module>   s     [