B
    v9aB                 @   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   /usr/lib/python3.7/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hel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   )r2      )r	   Z_decoder   r   r   )r   decoder   r   r   r   test_decode   s    zMockTextTest.test_decodeN)r(   r)   r*   classmethodr/   r0   r6   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tkinterr9   r-   root)r.   r9   r-   r   r   r   r/      s    zTkTextTest.setUpClassc             C   s   | j   | ` d S )N)r:   Zdestroy)r.   r   r   r   tearDownClass   s    
zTkTextTest.tearDownClassc             C   s   |  | j| _d S )N)r-   r:   r	   )r   r   r   r   r0      s    zTkTextTest.setUpN)r(   r)   r*   r7   r/   r;   r0   r   r   r   r   r8      s   r8   __main__r2   F)	verbosityexit)r+   ZunittestZtest.supportr   Z_tkinterr   objectr   ZTestCaser,   r8   r(   mainr   r   r   r   <module>   s    :