B
    v9a„  ã               @   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 )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   ú/usr/lib/python3.7/test_undo.pyÚ
setUpClass   s    zUndoDelegatorTest.setUpClassc             C   s&   | j j ¡  | ` | `| j ¡  | `d S )N)r   ZredirÚcloser
   r	   Zdestroy)r   r   r   r   ÚtearDownClass   s    
zUndoDelegatorTest.tearDownClassc             C   s$   t ƒ | _tƒ | j_| j | j¡ d S )N)r   Ú	delegatorr   Úbellr   Zinsertfilter)Úselfr   r   r   ÚsetUp   s    
zUndoDelegatorTest.setUpc             C   s*   | j  | j¡ | j dd¡ | j ¡  d S )Nz1.0Úend)r   Zremovefilterr   r
   ÚdeleteZ
resetcache)r   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Úhz<<undo>>z1.0r   Ú
ÚfooÚbarz1.2z1.4ZhelloZfoarz1.6z1.3Z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   z1.0z1.3z<<undo>>z<<redo>>)
r
   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   z1.2z1.4)é   Tz<<undo>>)é   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   r'   Zsavedr"   )r   r(   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   z1.0z1.3)r
   r   r   Zundo_block_startZundo_block_stopr   r    )r   r
   r   r   r   Útest_undo_start_stopl   s    



z&UndoDelegatorTest.test_undo_start_stopc             C   sL   | j }d | j_}x4t|d ƒD ]$}| dd¡ |  t| jjƒ|¡ q W d S )Né
   r   r   )r
   r   Úmax_undoÚranger   ZassertLessEqualÚlenZundolist)r   r
   r/   Úir   r   r   Útest_addcmd}   s
    zUndoDelegatorTest.test_addcmdN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r   r#   r$   r)   r,   r-   r3   r   r   r   r   r      s   r   Ú__main__r&   F)Ú	verbosityÚexit)Ú__doc__Zidlelib.undor   ZunittestZtest.supportr   Zunittest.mockr   Ztkinterr   r   Zidlelib.percolatorr   ZTestCaser   r4   Úmainr   r   r   r   Ú<module>   s   x