o
    JAfÄ  ã                   @   s  	 d dl mZ d dlmZ edƒ d dlZd dlZd dlmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d	d
„ Zdd„ ZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZedkrŒejdd dS dS )é    )Útextview)ÚrequiresZguiN)ÚTkÚTclErrorÚCHARÚNONEÚWORD)ÚButton)ÚFunc)Ú	Mbox_funcc                   C   s   t ƒ at ¡  d S ©N©r   ÚrootÚwithdraw© r   r   ú6/usr/lib/python3.10/idlelib/idle_test/test_textview.pyÚsetUpModule   s   r   c                   C   s   t  ¡  t  ¡  b d S r   ©r   Úupdate_idletasksÚdestroyr   r   r   r   ÚtearDownModule   s   r   c                   @   s   e Zd Zeƒ Zeƒ Zeƒ ZdS )ÚVWN)Ú__name__Ú
__module__Ú__qualname__r
   Ú	transientÚgrab_setÚwait_windowr   r   r   r   r   #   s    
r   c                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚViewWindowTestc                 C   s"   t j ¡  t j ¡  t j ¡  d S r   )r   r   Ú__init__r   r   ©Úselfr   r   r   ÚsetUp,   s   

zViewWindowTest.setUpc                 C   sB   t tddƒ}|  t jj¡ |  t jj¡ |  t jj¡ | ¡  d S )NÚTitleú	test text)r   r   Ú
assertTruer   Úcalledr   r   Úok©r"   Úviewr   r   r   Útest_init_modal1   s
   zViewWindowTest.test_init_modalc                 C   sF   t tdddd}|  t jj¡ |  t jj¡ |  t jj¡ | ¡  d S ©Nr$   r%   F©Úmodal)r   r   ZassertFalser   r'   r   r   r(   r)   r   r   r   Útest_init_nonmodal8   s
   z!ViewWindowTest.test_init_nonmodalc                 C   s>   t tdddd}tƒ |_| ¡  |  |jj¡ |`| ¡  d S r,   )r   r   r
   r   r(   r&   r'   r)   r   r   r   Útest_ok?   s   zViewWindowTest.test_okN)r   r   r   r#   r+   r/   r0   r   r   r   r   r   *   s
    r   c                   @   s   e Zd Zdd„ ZdS )ÚAutoHideScrollbarTestc                 C   s*   t  t¡}|  t|j¡ |  t|j¡ d S r   )ÚtvZAutoHideScrollbarr   ZassertRaisesr   ÚpackZplace)r"   Zscrollr   r   r   Útest_forbidden_geometryJ   s   
z-AutoHideScrollbarTest.test_forbidden_geometryN)r   r   r   r4   r   r   r   r   r1   H   s    r1   c                   @   s@   e Zd Zedd„ ƒZedd„ ƒZefdd„Zdd„ Zd	d
„ Z	dS )ÚScrollableTextFrameTestc                 C   s   t ƒ  | _}| ¡  d S r   r   ©Úclsr   r   r   r   Ú
setUpClassR   s   z"ScrollableTextFrameTest.setUpClassc                 C   s   | j  ¡  | j  ¡  | ` d S r   r   ©r7   r   r   r   ÚtearDownClassW   s   

z%ScrollableTextFrameTest.tearDownClassc                    s2   t j| jfd|i|¤Ž‰ ‡ fdd„}|  |¡ ˆ S )NÚwrapc                      s   ˆ   ¡  ˆ  ¡  d S r   )r   r   r   ©Úframer   r   Úcleanup_frame_   s   z9ScrollableTextFrameTest.make_frame.<locals>.cleanup_frame)r2   ZScrollableTextFramer   Ú
addCleanup)r"   r;   Úkwargsr>   r   r<   r   Ú
make_frame]   s   
z"ScrollableTextFrameTest.make_framec                 C   s0   |   ¡ }|j dd¡ |  |j dd¡d¡ d S )Nú1.0r%   ú1.end)rA   ÚtextÚinsertÚassertEqualÚget)r"   r=   r   r   r   Ú
test_line1e   s   z"ScrollableTextFrameTest.test_line1c              	   C   s–   | j td}|  |j d¡t¡ |  |j¡ ttfD ].}| j	|d | j |d}|  |j d¡|¡ |  
|j¡ W d   ƒ n1 sCw   Y  qd S )N)r;   r;   )rA   r   rF   rD   ÚcgetZassertIsNotNoneZxscrollr   r   ZsubTestÚassertIsNone)r"   r=   r;   r   r   r   Útest_horiz_scrollbarj   s   ý€ÿz,ScrollableTextFrameTest.test_horiz_scrollbarN)
r   r   r   Úclassmethodr8   r:   r   rA   rH   rK   r   r   r   r   r5   P   s    

r5   c                   @   s,   e Zd Zedd„ ƒZedd„ ƒZdd„ ZdS )ÚViewFrameTestc                 C   s&   t ƒ  | _}| ¡  t |d¡| _d S )Nr%   )r   r   r   r2   Ú	ViewFramer=   r6   r   r   r   r8   ~   s   zViewFrameTest.setUpClassc                 C   s    | ` | j ¡  | j ¡  | `d S r   )r=   r   r   r   r9   r   r   r   r:   „   s   

zViewFrameTest.tearDownClassc                 C   s    | j jj}|  |ddƒd¡ d S )NrB   rC   r%   )r=   rD   rG   rF   )r"   rG   r   r   r   rH   ‹   s   
zViewFrameTest.test_line1N)r   r   r   rL   r8   r:   rH   r   r   r   r   rM   |   s    

rM   c                   @   sL   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S )ÚViewFunctionTestc                 C   s   t j| _tƒ t _d S r   )r2   Ú	showerrorÚ
orig_errorr   r9   r   r   r   r8   “   s   zViewFunctionTest.setUpClassc                 C   s   | j t_| ` d S r   )rQ   r2   rP   r9   r   r   r   r:   ˜   s   zViewFunctionTest.tearDownClassc                 C   s>   t jtdddd}|  |t j¡ |  |jt j¡ |j ¡  d S r,   )r2   Ú	view_textr   ÚassertIsInstanceÚ
ViewWindowÚ	viewframerN   r(   r)   r   r   r   Útest_view_text   s   zViewFunctionTest.test_view_textc                 C   s\   t jtdtddd}|  |t j¡ |  |jt j¡ |jjj	j
}|  d|ddƒ¡ | ¡  d S )Nr$   ÚasciiFr-   ZTestrB   rC   )r2   Ú	view_filer   Ú__file__rS   rT   rU   rN   Ú	textframerD   rG   ZassertInr(   )r"   r*   rG   r   r   r   Útest_view_file£   s   zViewFunctionTest.test_view_filec                 C   s2   t jtddddd}|  |¡ |  t jjd¡ d S )Nr$   zabc.xyzrW   Fr-   zFile Load Error)r2   rX   r   rJ   rF   rP   Útitler)   r   r   r   Útest_bad_file«   s   
zViewFunctionTest.test_bad_filec                 C   sR   t j}| | | t¡dd¡¡}tjtd|ddd}|  	|¡ |  
tjjd¡ d S )Nz..zCREDITS.txtr$   rW   Fr-   zUnicode Decode Error)ÚosÚpathÚabspathÚjoinÚdirnamerY   r2   rX   r   rJ   rF   rP   r\   )r"   ÚpÚfnr*   r   r   r   Útest_bad_encoding±   s
   
z"ViewFunctionTest.test_bad_encodingc                 C   s4   t jtddddd}|jjj}|  | d¡d¡ d S )Nr$   ÚtestFZnone)r.   r;   r;   )r2   rR   r   rU   rZ   rD   rF   rI   )r"   r*   Ztext_widgetr   r   r   Útest_nowrap¸   s   
zViewFunctionTest.test_nowrapN)r   r   r   rL   r8   r:   rV   r[   r]   re   rg   r   r   r   r   rO   ‘   s    

rO   c                   @   r   )
ÚButtonClickTestc                 C   s   d | _ d| _d S )NF)r*   r'   r!   r   r   r   r#   Á   s   
zButtonClickTest.setUpc                 C   s   | j r
| j  ¡  d S d S r   )r*   r   r!   r   r   r   ÚtearDownÅ   s   ÿzButtonClickTest.tearDownc                    sn   ‡ fdd„}t td|d}| ¡  ˆ  |j¡ ˆ  ˆ jd¡ ˆ  ˆ j ¡ d¡ ˆ  ˆ jj	j
j dd¡d	¡ d S )
Nc                      s   dˆ _ tjtddddˆ _d S )NTÚ
TITLE_TEXTÚCOMMAND)Ú_utest)r'   r2   rR   r   r*   r   r!   r   r   Ú_commandÊ   s   zAButtonClickTest.test_view_text_bind_with_button.<locals>._commandÚBUTTON©rD   ZcommandTrj   rB   rC   rk   )r	   r   Úinvoker?   r   rF   r'   r*   r\   rU   rZ   rD   rG   )r"   rm   Úbuttonr   r!   r   Útest_view_text_bind_with_buttonÉ   s   ÿz/ButtonClickTest.test_view_text_bind_with_buttonc                    sÆ   ‡ fdd„}t td|d}| ¡  ˆ  |j¡ ˆ  ˆ jd¡ ˆ  ˆ j ¡ d¡ ˆ jj	j
jj}ttƒ'}ˆ  |ddƒ| ¡  ¡ ¡ | ¡  ˆ  |d	d
ƒ| ¡  ¡ ¡ W d   ƒ d S 1 s\w   Y  d S )Nc                      s    dˆ _ tjtdtdddˆ _d S )NTÚ
TITLE_FILErW   )Úencodingrl   )r'   r2   rX   r   rY   r*   r   r!   r   r   rm   ×   s   
ÿzAButtonClickTest.test_view_file_bind_with_button.<locals>._commandrn   ro   Trs   rB   rC   z3.0z3.end)r	   r   rp   r?   r   rF   r'   r*   r\   rU   rZ   rD   rG   ÚopenrY   ÚreadlineÚstrip)r"   rm   rq   rG   Úfr   r!   r   Útest_view_file_bind_with_buttonÖ   s   
"ýz/ButtonClickTest.test_view_file_bind_with_buttonN)r   r   r   r#   ri   rr   ry   r   r   r   r   rh   ¿   s
    rh   Ú__main__é   )Ú	verbosity) Zidlelibr   r2   Ztest.supportr   r^   ZunittestÚtkinterr   r   r   r   r   Ztkinter.ttkr	   Zidlelib.idle_test.mock_idler
   Zidlelib.idle_test.mock_tkr   r   r   rT   r   ZTestCaser   r1   r5   rM   rO   rh   r   Úmainr   r   r   r   Ú<module>   s,    ,.)ÿ