<!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
     f>                 @   s   d Z ddlmZ ddlZddlZddlmZ ddlmZm	Z	m
Z
mZmZ ddlmZ ddlZddlmZ ejjZededededd	Zd
ZG dd dZG dd dejZG dd dejZedkrejdd dS )zTest codecontext, coverage 100%    )codecontextN)requires)NSEWTkFrameTextTclError)mock)config )mainZ	highlightkeys
extensionsz
class C1():
    # Class comment.
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def compare(self):
        if a > b:
            return a
        elif a < b:
            return b
        else:
            return None
c               @   s$   e Zd Zdd Zdd Zdd ZdS )DummyEditwinc             C   s"   || _ || _|| _|| _d| _d S )Nr   )roottopZ
text_frametextlabel)selfr   framer    r   G/opt/alt/python37/lib64/python3.7/idlelib/idle_test/test_codecontext.py__init__'   s
    zDummyEditwin.__init__c             C   s   t t| j|S )N)intfloatr   index)r   r   r   r   r   	getlineno.   s    zDummyEditwin.getlinenoc             K   s   |d | _ d S )Nr   )r   )r   kwargsr   r   r   update_menu_label1   s    zDummyEditwin.update_menu_labelN)__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ejejddd Zdd Zdd Zd S )!CodeContextTestc             C   s~   t d t  }| _|  t| }| _t| }| _|dt	 |j
dddd |jddtd t|||| _ttj_d S )NZguiz1.0leftZboth   )ZsideZfillexpand)rowcolumnZsticky)r   r   r   Zwithdrawr   r   r   r   insertcode_sampleZpackZgridr   r   editortestcfgr   idleConfuserCfg)clsr   r   r   r   r   r   
setUpClass7   s    zCodeContextTest.setUpClassc             C   s@   t tj_| jjdd | `| `| `| j	  | j
  | `d S )Nz1.0end)usercfgr   r,   r-   r*   r   deleter   r   Zupdate_idletasksdestroy)r.   r   r   r   tearDownClassE   s    

zCodeContextTest.tearDownClassc                s   j d dj d< tj_ddd_tjj  fdd}t	j
jtjd	|}|  |j d_fd
d}t	j
jtjd|}|  |j d S )Nr   ZTkFixedFontfontz#abcdefz#123456)
background
foregroundc                s   |dkrj S  | |S )Ncontext)highlight_cfg)ZthemeZelement)orig_idleConf_GetHighlightr   r   r   mock_idleconf_GetHighlightV   s    z9CodeContextTest.setUp.<locals>.mock_idleconf_GetHighlightGetHighlightc                s    j S )N)font_override)r   Z
configTypeZsection)r   r   r   mock_idleconf_GetFont`   s    z4CodeContextTest.setUp.<locals>.mock_idleconf_GetFontZGetFont)r   yviewr   CodeContextr*   ccr9   r,   r<   unittestr	   patchobjectstartZ
addCleanupstopr=   )r   r;   ZGetHighlight_patcherr>   ZGetFont_patcherr   )r:   r   r   setUpN   s"    

zCodeContextTest.setUpc             C   s,   | j jr| j j  | j   | j `| ` d S )N)rA   r8   r3   __del__)r   r   r   r   tearDowng   s    
zCodeContextTest.tearDownc             C   sz   | j }| j}| j}||j| ||j|j ||jd |jd  | |j ||jdg ||jd | | jj	 d S )Nr5   )r   r   Fr$   )
assertEqualr*   rA   editwinr   assertIsNoner8   info
topvisiblet1)r   eqZedrA   r   r   r   	test_initn   s    zCodeContextTest.test_initc             C   s   | j   d S )N)rA   rH   )r   r   r   r   test_del{   s    zCodeContextTest.test_delc          	   C   sb   | j ddd  }| j_| j  | t}| jj	dd| W d Q R X | 
dt|j d S )Ni'  c               S   s   d S )Nr   r   r   r   r   <lambda>       z5CodeContextTest.test_del_with_timer.<locals>.<lambda>afterrN   zdoesn't exist)r   rV   rA   rP   rH   assertRaisesr   r   tkcallZassertInstrZ	exception)r   timercmr   r   r   test_del_with_timer~   s
    
z#CodeContextTest.test_del_with_timerc             C   s   t j  | | jjd d S )N   )r   r@   reloadrK   rA   context_depth)r   r   r   r   test_reload   s    
zCodeContextTest.test_reloadc             C   sJ  | j }| j}|j}|jr|  |  | |j ||jd | jd  ||jd | jd  ||jd | jd  ||jddd ||jj	d	 || j
jd
d| jjd d |  | |j ||jj	d | | jj ddd |dd D }|jd |  ||jdd| |  |  ||jdd| d S )Nr5   Zfgr7   Zbgr6   z1.0zend-1cr   zHide Code ContextrV   rN   r$   r[   zShow Code Context
c             s   s   | ]}|d  V  qdS )   Nr   ).0xr   r   r   	<genexpr>   s    zACodeContextTest.test_toggle_code_context_event.<locals>.<genexpr>   r   )rK   rA   toggle_code_context_eventr8   ZassertIsNotNoner   r9   getrL   r   r   rX   rY   rP   rM   joinget_contextr?   )r   rQ   rA   ZtoggleZline11_contextr   r   r   test_toggle_code_context_event   s0     z.CodeContextTest.test_toggle_code_context_eventc          	   C   s.  | j }| jj}| t |ddd W d Q R X ||ddgdf ||ddgdf ||dddgdf ||d	dd
dgdf ||ddd
ddgdf ||ddddd
ddgdf ||dddd
ddgdf ||dddddgdf ||dddd
ddgdf ||dddddgdf d S )Nr$   r   )Zstopline   )rc   r   zclass C1():class      )ro   ro   z    def __init__(self, a, b):def
   )   ro   z    def compare(self):rq   )   rt   z        if a > b:ifrg   )rr   rt   z        elif a < b:elifrc   rt   )Z
stopindent)rK   rA   rk   rW   AssertionError)r   rQ   Zgcr   r   r   test_get_context   s:    


z CodeContextTest.test_get_contextc             C   s*  | j }| j}|js|  | |  ||jdg ||jd |j	d |  ||jdg ||jd ||j
ddd |j	d |  ||jddg ||jd ||j
ddd	 |j	d |  ||jddg ||jd
 ||j
ddd	 |j	d
 |  ||jdddg ||jd ||j
ddd |j	d |  ||jdddddg ||jd ||j
ddd |  d|_||jdddddg ||jd ||j
ddd |j	d |  ||jdddg ||jd ||j
ddd d S )N)r   rJ   r   Fr$   rc   z1.0zend-1cr   )rc   r   zclass C1():rn   rm   zclass C1():ro   )ro   ro   z    def __init__(self, a, b):rq   rp   z)class C1():
    def __init__(self, a, b):rg   )rs   ro   z    def compare(self):rq   )rt   rt   z        if a > b:ru   )rr   rt   z        elif a < b:rv      zHclass C1():
    def compare(self):
        if a > b:
        elif a < b:   z    def __init__(self, a, b):)rK   rA   r8   rh   rM   update_code_contextrN   rO   r   r?   ri   r`   )r   rQ   rA   r   r   r   test_update_code_context   sl    z(CodeContextTest.test_update_code_contextc             C   s.  | j }| j}|j}|js |  |jd |  ||jd |j	dd |  ||jd |jd |  ||jd |j	dd |  ||jd	 d|_
|jd |  ||jd |j	dd
 |  ||jd	 |jd |  |jdd
d |j	dd
 |  ||jd d S )Nz2.0rc   r(   z1.5r$   z12.0ry   z3.0rt   z1.0z5.0Zselrp   )rK   rA   Z
jumptoliner8   rh   r   r?   r{   rO   Zmark_setr`   Ztag_add)r   rQ   rA   Zjumpr   r   r   test_jumptoline.  s<    zCodeContextTest.test_jumptoliner{   c             C   sD   | j jr| j   | j   |  | j   | j   |  d S )N)rA   r8   rh   Ztimer_eventZassert_not_calledZassert_called)r   Zmock_updater   r   r   test_timer_eventW  s    



z CodeContextTest.test_timer_eventc             C   s   | j }| j}|jd }d}| || |jd k	r8|  || _|  |  ||jd | || _|  ||jd | d S )Nr5   Z
TkTextFont)rK   rA   r   ZassertNotEqualr8   rh   r=   Zupdate_font)r   rQ   rA   Z	orig_font	test_fontr   r   r   r   d  s    

zCodeContextTest.test_fontc                s   | j | j t| j}ddd} fdd} jr<   || _      ||    || || _   || d S )Nz#222222z#ffff00)r6   r7   c                s,    j d | d   j d | d  d S )Nr6   r7   )r8   )Zcolors)rA   rQ   r   r   assert_colors_are_equal  s    zFCodeContextTest.test_highlight_colors.<locals>.assert_colors_are_equal)rK   rA   dictr9   r8   rh   Zupdate_highlight_colors)r   Zorig_colorsZtest_colorsr   r   )rA   rQ   r   test_highlight_colors}  s     

z%CodeContextTest.test_highlight_colorsN)r   r    r!   classmethodr/   r4   rG   rI   rR   rS   r]   ra   rl   rx   r|   r}   r	   rC   rD   r   r@   r~   r   r   r   r   r   r   r"   5   s   	$0Q)r"   c               @   s   e Zd Zdd Zdd ZdS )HelperFunctionTextc             C   sJ   t j}d}x |D ]\}}| ||| qW | |dtddd d S )N))z    first word)z    first)z	first word)	r   )u
     ᧔᧒: )z  u   ᧔᧒)z	no spaces)r   Zno)r   )r   r   )z# TEST COMMENT)r   r   )z    (continuation))z    r   z    (continuation)z^(\s*)([^\s]*))c)z    z(continuation))r   Zget_spaces_firstwordrK   recompile)r   ri   Z
test_lineslineZexpected_outputr   r   r   test_get_spaces_firstword  s    z,HelperFunctionText.test_get_spaces_firstwordc             C   s   | j }tj}t }|||d tjddf |||d d |||d tjddf |||d d	 |||d
 d ||dd d S )Nr   r   Fr$   )r   zclass C1():rn   rc   z    # Class comment.rm   )ro   z    def __init__(self, a, b):rq   rs   )rt   z        if a > b:ru   z	if a == b:)r$   z	if a == b:ru   )rK   r   Zget_line_infor)   
splitlinesZINFINITY)r   rQ   Zglilinesr   r   r   test_get_line_info  s    z%HelperFunctionText.test_get_line_infoN)r   r    r!   r   r   r   r   r   r   r     s   r   __main__rc   )	verbosity)__doc__Zidlelibr   rB   Zunittest.mockZtest.supportr   Ztkinterr   r   r   r   r   r	   r   r
   r,   r-   r1   ZIdleUserConfParserr+   r)   r   ZTestCaser"   r   r   r   r   r   r   r   <module>   s*     k(