o
    JAf:                     @   sx   d Z ddlZddlmZ ddlmZ G dd dZG dd deejZG d	d
 d
eejZ	e
dkr:ejddd dS 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 )N1.0r   end )assertEqualtextgetself r   2/usr/lib/python3.10/idlelib/idle_test/test_text.py	test_init   s   zTextTest.test_initc                 C   s@   | j j}dD ]
}| ||d qdD ]
}| ||d qd S )N)      333333?1.-1r   1.0 lineend1.end1.33insertr   )r   g       @2.133.442.0)r
   indexr	   r   r   Zdexr   r   r   test_index_empty   s   zTextTest.test_index_emptyc                 C   sj   | j j}| j d| j dD ]
}| ||d qdD ]
}| ||d qdD ]
}| ||d q(d S )Nr   )r   r   r   r   )r   r   r   z1.5)r   r   z3.0)r
   r   r   hwr	   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 )Nr   r   r   h1.11.3Zhelelr   hello1.10r   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 )Nr   r   r   *z*hello
world
r   z*hello*
world
r&   z*hello*
wor*ld
xz*hello*
wor*ldx
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 )Nr   r   r   z5.5r,   )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 )Nr   r   Zellor!   ZlloZlloworldr"   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 )Nr   r   r   z
world
r   r   zworld
z1.2r&   zheld
r1   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 )	Nr   r$   r"   z	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 dD ]:\}}}}}}||d|d|| ||d|d|| ||d|d|| ||d|d|| ||d	|d|| qd S )
Nr   zFirst
Second
Third
z2.2op))<TTFFF)z<=TTTFF)>FFFTT)z>=FFTTT)z==FFTFF)z!=TTFTTr!   r   r&   z3.3)r
   comparer	   r   ZassertRaisesr   )	r   r8   r(   r5   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-   r0   r2   r3   r4   r9   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 )Nr   r   )      z3.1r   )rE      )r
   Z_decoder	   r   r   )r   decoder(   r   r   r   test_decode   s   zMockTextTest.test_decodeN)r:   r;   r<   classmethodrA   rC   rI   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   tkinterrL   r?   root)r@   rL   r?   r   r   r   rA      s   zTkTextTest.setUpClassc                 C   s   | j   | ` d S rB   )rN   Zdestroy)r@   r   r   r   tearDownClass   s   
zTkTextTest.tearDownClassc                 C   s   |  | j| _d S rB   )r?   rN   r
   r   r   r   r   rC      s   zTkTextTest.setUpN)r:   r;   r<   rJ   rA   rO   rC   r   r   r   r   rK      s    

rK   __main__rE   F)	verbosityexit)r=   ZunittestZtest.supportr   Z_tkinterr   r   ZTestCaser>   rK   r:   mainr   r   r   r   <module>   s     :