B
    \B                 @   sv   d Z ddlZddlmZ ddlmZ G dd deZG dd deejZ	G d	d
 d
eejZ
edkrrejddd dS )zi Test mock_tk.Text class against tkinter.Text class

Run same tests with both by creating a mixin class.
    N)requires)TclErrorc               @   sl   e Zd ZdZdZe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 )TextTestz*Define items common to both sets of tests.zhello
world
c             C   s,   |  | jdd |  | jdd d S )Nz1.0r   end )assertEqualtextget)self r   ,lib/python3.7/idlelib/idle_test/test_text.py	test_init   s    zTextTest.test_initc             C   sH   | j j}xdD ]}| ||d qW xdD ]}| ||d q,W d S )N)g      g333333?z1.-1z1.0z1.0 lineendz1.endz1.33insertz1.0)r   g       @z2.1z33.44z2.0)r	   indexr   )r   r   dexr   r   r   test_index_empty   s
    

zTextTest.test_index_emptyc             C   sv   | j j}| j d| j xdD ]}| ||d qW xdD ]}| ||d q<W xdD ]}| ||d qZW d S )Nz1.0)g      g333333?z1.-1z1.0)z1.0 lineendz1.endz1.33z1.5)r   z33.44z3.0)r	   r   r   hwr   )r   r   r   r   r   r   test_index_data    s    


zTextTest.test_index_datac             C   s   | j j}| j}| j d| 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d| j ||dd| j d S )Nz1.0r   r   hz1.1z1.3ZhelZelz1.0 lineendhelloz1.10r   z2.3zello
worz2.5z0.0z5.0)r	   r
   r   r   r   hwn)r   r
   Equalr   r   r   test_get-   s     zTextTest.test_getc             C   s   | j j}| j j}| j}|d| j ||dd| j |dd ||dd| 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 S )Nz1.0r   r   *z*hello
world
z1.0 lineendz*hello*
world
z2.3z*hello*
wor*ld
xz*hello*
wor*ldx
z1.4zx
z*helx
lo*
wor*ldx
)r	   r   r
   r   r   r   )r   r   r
   r   r   r   r   test_insert@   s"    





zTextTest.test_insertc             C   s   | j j}| j j}| j}| j d| j |d ||dd| 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 S )Nz1.0r   r   z5.5z1.4)r	   deleter
   r   r   r   r   )r   r   r
   r   r   r   r   test_no_deleteZ   s     



zTextTest.test_no_deletec             C   s   | j j}| j j}| j}| j d| j |d ||ddd |dd ||ddd |d ||ddd | j dd |d	 ||ddd | j dd |dd
 ||ddd d S )Nz1.0z1.endZelloz1.1ZlloZlloworldz1.3r   z1.10z2.0)r	   r   r
   r   r   r   )r   r   r
   r   r   r   r   test_delete_chars   s     

zTextTest.test_delete_charc             C   s   | j j}| j j}| j}| j d| j |dd ||ddd |dd ||ddd | j d| j |dd ||ddd |dd ||ddd | j d| j |dd	 ||ddd
 d S )Nz1.0z1.0 lineendr   z
world
r   z2.0zworld
z1.2z2.3zheld
)r	   r   r
   r   r   r   )r   r   r
   r   r   r   r   test_delete_slice   s     




zTextTest.test_delete_slicec             C   sZ   | j dd | j dd | | j ddd | j dd | | j ddd d S )	Nz1.0r   z1.3z	1
2
3
4
5r   zhel1
2
3
4
5lo
z5.1zhello
)r	   r   r   r
   r   )r   r   r   r   test_multiple_lines   s
    zTextTest.test_multiple_linesc       	      C   s   | j j}| j}| j dd | t|ddd x|dD ]t\}}}}}}||d|d|| ||d|d|| ||d|d|| ||d|d|| ||d	|d|| q4W d S )
Nz1.0zFirst
Second
Third
z2.2op))<TTFFF)z<=TTTFF)>FFFTT)z>=FFTTT)z==FFTFF)z!=TTFTTz1.1z2.1z2.3z3.3)r	   comparer   r   ZassertRaisesr   )	r   r%   r   r"   Zless1Zless0ZequalZgreater0Zgreater1r   r   r   test_compare   s    zTextTest.test_compareN)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r    r!   r&   r   r   r   r   r   	   s   
	r   c               @   s(   e Zd Zedd Zdd Zdd ZdS )MockTextTestc             C   s   ddl m} || _d S )Nr   )Text)Zidlelib.idle_test.mock_tkr,   )clsr,   r   r   r   
setUpClass   s    zMockTextTest.setUpClassc             C   s   |   | _d S )N)r,   r	   )r   r   r   r   setUp   s    zMockTextTest.setUpc             C   sb   | j j}| j}| j d| j ||ddd ||ddd ||ddd ||ddd d S )Nz1.0r   )      z3.1r   )r1      )r	   Z_decoder   r   r   )r   decoder   r   r   r   test_decode   s    zMockTextTest.test_decodeN)r'   r(   r)   classmethodr.   r/   r5   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S )
TkTextTestc             C   s*   t d ddlm}m} || _| | _d S )NZguir   )Tkr,   )r   Ztkinterr8   r,   root)r-   r8   r,   r   r   r   r.      s    zTkTextTest.setUpClassc             C   s   | j   | ` d S )N)r9   Zdestroy)r-   r   r   r   tearDownClass   s    
zTkTextTest.tearDownClassc             C   s   |  | j| _d S )N)r,   r9   r	   )r   r   r   r   r/      s    zTkTextTest.setUpN)r'   r(   r)   r6   r.   r:   r/   r   r   r   r   r7      s   r7   __main__r1   F)	verbosityexit)r*   ZunittestZtest.supportr   Z_tkinterr   objectr   ZTestCaser+   r7   r'   mainr   r   r   r   <module>   s    :