<!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
    YI~d>                 @   s   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 )    )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sidefillexpand)rowcolumnZsticky)r   r   r   Zwithdrawr   r   r   r   insertcode_sample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)r0   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
configTypesection)r   r   r   mock_idleconf_GetFont`   s    z4CodeContextTest.setUp.<locals>.mock_idleconf_GetFontZGetFont)r   yviewr   CodeContextr,   ccr;   r.   r>   unittestr	   patchobjectstartZ
addCleanupstopr?   )r   r=   ZGetHighlight_patcherrA   ZGetFont_patcherr   )r<   r   r   setUpN   s"    

zCodeContextTest.setUpc             C   s,   | j jr| j j  | j   | j `| ` d S )N)rD   r:   r5   __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 )Nr7   )r   r   Fr$   )
assertEqualr,   rD   editwinr   assertIsNoner:   info
topvisiblet1)r   eqZedrD   r   r   r   	test_initn   s    zCodeContextTest.test_initc             C   s   | j   d S )N)rD   rK   )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>afterrQ   zdoesn't exist)r   rY   rD   rS   rK   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   rC   reloadrN   rD   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 )Nr7   Zfgr9   bgr8   z1.0zend-1cr   zHide Code ContextrY   rQ   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   )rN   rD   toggle_code_context_eventr:   ZassertIsNotNoner   r;   getrO   r   r   r[   r\   rS   rP   joinget_contextrB   )r   rT   rD   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   )rg   r   zclass C1():class      )rs   rs   z    def __init__(self, a, b):def
   )   rs   z    def compare(self):ru   )   rx   z        if a > b:ifrk   )rv   rx   z        elif a < b:elifrg   rx   )Z
stopindent)rN   rD   ro   rZ   AssertionError)r   rT   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   rM   r   Fr$   rg   z1.0zend-1cr   )rg   r   zclass C1():rr   rq   zclass C1():rs   )rs   rs   z    def __init__(self, a, b):ru   rt   z)class C1():
    def __init__(self, a, b):rk   )rw   rs   z    def compare(self):ru   )rx   rx   z        if a > b:ry   )rv   rx   z        elif a < b:rz      zHclass C1():
    def compare(self):
        if a > b:
        elif a < b:   z    def __init__(self, a, b):)rN   rD   r:   rl   rP   update_code_contextrQ   rR   r   rB   rm   rc   )r   rT   rD   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.0rg   r)   z1.5r$   z12.0r}   z3.0rx   z1.0z5.0Zselrt   )rN   rD   Z
jumptoliner:   rl   r   rB   r   rR   Zmark_setrc   Ztag_add)r   rT   rD   Zjumpr   r   r   test_jumptoline.  s<    zCodeContextTest.test_jumptoliner   c             C   sD   | j jr| j   | j   |  | j   | j   |  d S )N)rD   r:   rl   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 )Nr7   Z
TkTextFont)rN   rD   r   ZassertNotEqualr:   rl   r?   Zupdate_font)r   rT   rD   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)r8   r9   c                s,    j d | d   j d | d  d S )Nr8   r9   )r:   )Zcolors)rD   rT   r   r   assert_colors_are_equal  s    zFCodeContextTest.test_highlight_colors.<locals>.assert_colors_are_equal)rN   rD   dictr;   r:   rl   Zupdate_highlight_colors)r   Zorig_colorsZtest_colorsr   r   )rD   rT   r   test_highlight_colors}  s     

z%CodeContextTest.test_highlight_colorsN)r   r    r!   classmethodr1   r6   rJ   rL   rU   rV   r`   rd   rp   r|   r   r   r	   rF   rG   r   rC   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   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_firstwordrN   recompile)r   rm   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():rr   rg   z    # Class comment.rq   )rs   z    def __init__(self, a, b):ru   rw   )rx   z        if a > b:ry   z	if a == b:)r$   z	if a == b:ry   )rN   r   Zget_line_infor*   
splitlinesZINFINITY)r   rT   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__rg   )	verbosity)Zidlelibr   rE   Zunittest.mockZtest.supportr   Ztkinterr   r   r   r   r   r	   r   r
   r.   r/   r3   ZIdleUserConfParserr-   r*   r   ZTestCaser"   r   r   r   r   r   r   r   <module>   s(     k(