o
    JAf„  ã                   @   s„   d Z ddlmZ ddlZddlmZ edƒ ddlmZ ddlm	Z	m
Z
 ddlmZ G d	d
„ d
ejƒZedkr@ejddd dS dS )zTest undo, coverage 77%.é    )ÚUndoDelegatorN)ÚrequiresZgui)ÚMock)ÚTextÚTk)Ú
Percolatorc                   @   sd   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S )ÚUndoDelegatorTestc                 C   s$   t ƒ | _t| jƒ| _t| jƒ| _d S ©N)r   Úrootr   Útextr   Ú
percolator©Úcls© r   ú2/usr/lib/python3.10/idlelib/idle_test/test_undo.pyÚ
setUpClass   s   zUndoDelegatorTest.setUpClassc                 C   s&   | j j ¡  | ` | `| j ¡  | `d S r	   )r   ZredirÚcloser   r
   Zdestroyr   r   r   r   ÚtearDownClass   s   
zUndoDelegatorTest.tearDownClassc                 C   s$   t ƒ | _tƒ | j_| j | j¡ d S r	   )r   Ú	delegatorr   Úbellr   Zinsertfilter©Úselfr   r   r   ÚsetUp   s   
zUndoDelegatorTest.setUpc                 C   s*   | j  | j¡ | j dd¡ | j ¡  d S )Nú1.0Úend)r   Zremovefilterr   r   ÚdeleteZ
resetcacher   r   r   r   ÚtearDown"   s   zUndoDelegatorTest.tearDownc                 C   sð   | j }| dd¡ | dd¡ | d¡ |  | dd¡d¡ | dd¡ | dd	¡ | d
d¡ | dd¡ | d¡ |  | dd¡d¡ | d¡ |  | dd¡d¡ | d¡ |  | dd¡d¡ | d¡ | j d¡ |  | jj	j
¡ d S )NÚinsertZfoobarÚhú<<undo>>r   r   Ú
ÚfooÚbarú1.2ú1.4ZhelloZfoarz1.6ú1.3Úevent)r   r   Úevent_generateÚassertEqualÚgetr   r   Z
undo_eventÚ
assertTruer   Úcalled©r   r   r   r   r   Útest_undo_event'   s$   




z!UndoDelegatorTest.test_undo_eventc                 C   sp   | j }| dd¡ | dd¡ | dd¡ | d¡ | d¡ |  | dd¡d¡ | d¡ |  | jjj	¡ d S )Nr   r!   r"   r   r%   r   z<<redo>>)
r   r   r   r'   r(   r)   r*   r   r   r+   r,   r   r   r   Útest_redo_event=   s   


z!UndoDelegatorTest.test_redo_eventc                 C   sf   | j }| j}| dd¡ | dd¡ | dd¡ |  |j|jfd¡ | d¡ |  |j|jfd¡ d	S )
z›
        Dump_event cannot be tested directly without changing
        environment variables. So, test statements in dump_event
        indirectly
        r   r!   r"   r#   r$   )é   Tr   )é   FN)r   r   r   r   ZassertTupleEqualÚpointerZ	can_merger'   )r   r   Údr   r   r   Útest_dump_eventI   s   
z!UndoDelegatorTest.test_dump_eventc                 C   sŠ   | j }|  | ¡ ¡ | j dd¡ |  | ¡ ¡ tƒ |_| d¡ |  	|j
|j¡ |  |jj¡ | d¡ |  	|jd¡ |  |jj¡ d S )Nr   ÚaTFéÿÿÿÿ)r   r*   Z	get_savedr   r   ZassertFalser   Zsaved_change_hookZ	set_savedr(   r1   Zsavedr+   )r   r2   r   r   r   Útest_get_set_savedY   s   

z$UndoDelegatorTest.test_get_set_savedc                 C   sŠ   | j }| dd¡ | j ¡  | dd¡ | dd¡ | j ¡  |  | dd¡d¡ | j ¡  | dd¡ | j ¡  |  | dd¡d¡ d S )Nr   r!   r"   r   r%   )r   r   r   Zundo_block_startZundo_block_stopr(   r)   r,   r   r   r   Útest_undo_start_stopl   s   



z&UndoDelegatorTest.test_undo_start_stopc                 C   sH   | j }d | j_}t|d ƒD ]}| dd¡ |  t| jjƒ|¡ qd S )Né
   r   r!   )r   r   Úmax_undoÚranger   ZassertLessEqualÚlenZundolist)r   r   r9   Úir   r   r   Útest_addcmd}   s   þzUndoDelegatorTest.test_addcmdN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r   r-   r.   r3   r6   r7   r=   r   r   r   r   r      s    

r   Ú__main__r0   F)Ú	verbosityÚexit)Ú__doc__Zidlelib.undor   ZunittestZtest.supportr   Zunittest.mockr   Útkinterr   r   Zidlelib.percolatorr   ZTestCaser   r>   Úmainr   r   r   r   Ú<module>   s    xÿ