o
    JAf                     @   s   d Z ddlmZ ddlZddlmZmZ ddlmZm	Z	 ddl
mZ ddlmZ ddlmZ ddlZdd	lmZ 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ZG dd dejZedkrrejdd dS dS )zTest help_about, coverage 100%.
help_about.build_bits branches on sys.platform='darwin'.
'100% combines coverage on Mac and others.
    )
help_aboutN)requiresfindfile)TkTclError)Func)	Mbox_func)textview)python_versionc                   @   sP   e Zd 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 )LiveDialogTestzmSimulate user clicking buttons other than [Close].

    Test that invoked textview has text from source.
    c                 C   0   t d t | _| j  t| jddd| _d S Ngui
About IDLET_utestr   r   rootZwithdrawAboutdialogcls r   8/usr/lib/python3.10/idlelib/idle_test/test_help_about.py
setUpClass      
zLiveDialogTest.setUpClassc                 C       | ` | j  | j  | `d S Nr   r   Zupdate_idletasksdestroyr   r   r   r   tearDownClass      

zLiveDialogTest.tearDownClassc                 C   s   |  t d d S )N)Z32Z64)ZassertInr   
build_bitsselfr   r   r   test_build_bits&   s   zLiveDialogTest.test_build_bitsc                 C   s   |  | j d dS )Test about dialog titler   N)assertEqualr   titler#   r   r   r   test_dialog_title)   s   z LiveDialogTest.test_dialog_titlec                 C   s8   t j| jjd \}}t j|\}}| |d dS )zTest about dialog logo.fileZidle_48N)ospathsplitr   Z
icon_imagesplitextr'   )r$   r,   r*   fnextr   r   r   test_dialog_logo-   s   zLiveDialogTest.test_dialog_logoc              	   C   s   | j }|jtdf|jtdf|jtdfg}|D ]U\}}}| j|dB |  |	  |j
jjjj}|j}t|dk rA| |d  | |d |dd	 | |d
 |dd |j
  W d   n1 sfw   Y  qdS )z1Test buttons whose commands use printer function.license	copyrightcreditsname   z full text was not foundr   1.01.end   z2.0z2.endN)r   Z
py_licenser2   Zpy_copyrightr3   Z
py_creditsr4   subTest_Printer__setupinvoke_current_textview	viewframe	textframetextget_Printer__lineslenZfailr'   r   )r$   r   button_sourcesbuttonZprinterr6   rB   linesr   r   r   test_printer_buttons3   s&   


z#LiveDialogTest.test_printer_buttonsc           	   
   C   s  | j }| j jddf| j jddf| j jddfg}|D ]e\}}}| j|dR |  t|dd	}|jjj	j
j}t|d
d&}| |  |dd |  | |  |dd W d   n1 sew   Y  |j  W d   n1 syw   Y  qdS )z Test buttons that display files.z
README.txtreadmezNEWS.txtnewszCREDITS.txtr4   r5   idlelib)Zsubdirzutf-8)encodingr8   r9   z3.0z3.endN)r   rI   	idle_newsidle_creditsr;   r=   r   r>   r?   r@   rA   rB   openr'   readlinestripr   )	r$   r   rE   rF   filenamer6   r/   rB   fr   r   r   test_file_buttonsF   s&   z LiveDialogTest.test_file_buttonsN)__name__
__module____qualname____doc__classmethodr   r    r%   r)   r1   rH   rT   r   r   r   r   r      s    

r   c                   @   0   e Zd ZdZedd Zedd Zdd ZdS )	DefaultTitleTestzTest default title.c                 C   s.   t d t | _| j  t| jdd| _d S )Nr   Tr   r   r   r   r   r   r   \   s   
zDefaultTitleTest.setUpClassc                 C   r   r   r   r   r   r   r   r    c   r!   zDefaultTitleTest.tearDownClassc                 C   s*   |  | j dt  dt  d dS )r&   zAbout IDLE z (z bit)N)r'   r   r(   r
   r   r"   r#   r   r   r   r)   j   s
   
z"DefaultTitleTest.test_dialog_titleN)rU   rV   rW   rX   rY   r   r    r)   r   r   r   r   r[   Y       

r[   c                   @   rZ   )		CloseTestz%Simulate user clicking [Close] buttonc                 C   r   r   r   r   r   r   r   r   t   r   zCloseTest.setUpClassc                 C   r   r   r   r   r   r   r   r    {   r!   zCloseTest.tearDownClassc                 C   sX   |  | j d | jj  | t | j  W d    d S 1 s%w   Y  d S )NZToplevel)r'   r   Zwinfo_classZ	button_okr=   ZassertRaisesr   r#   r   r   r   
test_close   s
   "zCloseTest.test_closeN)rU   rV   rW   rX   rY   r   r    r^   r   r   r   r   r]   q   r\   r]   c                   @   s(   e Zd ZejZejZejZ	ej
Z
dZdS )Dummy_about_dialogTN)rU   rV   rW   r   Zshow_idle_creditsrN   Zshow_readmeidle_readmeZshow_idle_newsrM   Zdisplay_file_textr   r   r   r   r   r_      s    r_   c                   @   s6   e Zd ZdZe Zedd Zedd Zdd Z	dS )	DisplayFileTestzTest functions that display files.

    While somewhat redundant with gui-based test_file_dialog,
    these unit tests run on all buildbots, not just a few.
    c                 C   s4   t j| _t j| _t | _t | _| jt _| jt _d S r   )	r	   	showerror
orig_error	view_text	orig_viewr   errorr   viewr   r   r   r   r      s   zDisplayFileTest.setUpClassc                 C   s   | j t_| jt_d S r   )rc   r	   rb   re   rd   r   r   r   r   r       s   zDisplayFileTest.tearDownClassc              	   C   s   | j j| j j| j jfD ]3}d| j_d| j_| j|d |  | 	| jjd | 	| jjd W d    n1 s9w   Y  qd S )N F)handlerT)
r   rN   r`   rM   rf   messagerg   Zcalledr;   r'   )r$   ri   r   r   r   test_file_display   s   z!DisplayFileTest.test_file_displayN)
rU   rV   rW   rX   r_   r   rY   r   r    rk   r   r   r   r   ra      s    

ra   __main__r7   )	verbosity)rX   rK   r   ZunittestZtest.supportr   r   tkinterr   r   Zidlelib.idle_test.mock_idler   Zidlelib.idle_test.mock_tkr   r	   Zos.pathr+   platformr
   ZAboutDialogr   ZTestCaser   r[   r]   r_   ra   rU   mainr   r   r   r   <module>   s&    F
"