a
    ze                     @   s   d dl Z d dlZd dlZd dlZG dd dZG dd dZdd Zdd	 Zd dlZe	e
eejd
Zdd Zdadd ZdddddZdd Zdd Zdd ZdS )    Nc                   @   s4   e Zd Zedd Zedd Zdd Zdd Zd	S )
AbstractTkTestc                 C   sd   t j| _t  t   t  | _| j | _| jd z| j	dd W n t j
y^   Y n0 d S )NZnormalz-zoomedF)tkinter_support_default_root_old_support_default_rootdestroy_default_rootNoDefaultRootZTkrootwantobjectsZwm_stateZwm_attributesZTclErrorcls r   */usr/lib/python3.9/tkinter/test/support.py
setUpClass   s    
zAbstractTkTest.setUpClassc                 C   s*   | j   | j   | ` d t_| jt_d S N)r   update_idletasksdestroyr   _default_rootr   r   r
   r   r   r   tearDownClass   s
    

zAbstractTkTest.tearDownClassc                 C   s   | j   d S r   )r   Z	deiconifyselfr   r   r   setUp   s    zAbstractTkTest.setUpc                 C   s&   | j  D ]}|  q
| j   d S r   )r   Zwinfo_childrenr   Zwithdraw)r   wr   r   r   tearDown"   s    
zAbstractTkTest.tearDownN)__name__
__module____qualname__classmethodr   r   r   r   r   r   r   r   r      s   

r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )AbstractDefaultRootTestc                 C   s    t j| _t  dt _t j| _d S )NT)r   r   r   r   r	   r   r   r   r   r   *   s    zAbstractDefaultRootTest.setUpc                 C   s   t   d t_| jt_d S r   )r   r   r   r   r   r   r   r   r   r   0   s    z AbstractDefaultRootTest.tearDownc                 C   sj   | }|  tj | |jtj | |jtjj |  t  t  | 	t
| | ttd d S Nr   )ZassertIsNotNoner   r   ZassertIsZmasterZtkr   r   r   ZassertRaisesRuntimeErrorZassertFalsehasattr)r   constructorxr   r   r   _test_widget5   s    z$AbstractDefaultRootTest._test_widgetN)r   r   r   r   r   r#   r   r   r   r   r   (   s   r   c                   C   s*   t tdd r&tj  tj  d t_d S r   )getattrr   r   r   r   r   r   r   r   r   B   s    

r   c                 C   sD   | j dddd | j d||d | j d||d | j d||d d S )Nz<Enter>r   )r"   yz<Motion>z<ButtonPress-1>z<ButtonRelease-1>)Zevent_generate)Zwidgetr"   r%   r   r   r   simulate_mouse_clickH   s    r&   .c               	      s<   t  dkr,tt kddtt  S  fdd}|S )N   requires Tcl version >= r'   c                    s   t   fdd}|S )Nc                    s0   t  k r$| ddtt   |  d S )Nr)   r'   )get_tk_patchlevelZskipTestjoinmapstrr   )testversionr   r   newtestZ   s
    
z+requires_tcl.<locals>.deco.<locals>.newtest)	functoolswraps)r.   r0   r/   )r.   r   decoY   s    zrequires_tcl.<locals>.deco)lenunittestZ
skipUnlesstcl_versionr+   r,   r-   )r/   r4   r   r3   r   requires_tclT   s    
r8   c                  C   s   t d u rt } | dd}td|}| \}}}}t|t|t|  }}}dddd| }|dkr|||||dfa n||d||fa t S )	Ninfo
patchlevelz(\d+)\.(\d+)([ab.])(\d+)alphabetafinal)abr'   r   )_tk_patchlevelr   ZTclcallre	fullmatchgroupsint)Ztclr:   mmajorminorreleaselevelserialr   r   r   r*   d   s    r*   gbX<@H   gjZ@   )cirF   pc                 C   s    t | d d t| dd    S )N)floatunits)valuer   r   r   pixels_convz   s    rT   c                 C   sn   | |krdS t | tjr.t |tr.t| |kS t | trjt |trjt| t|kohtdd t| |D S dS )NTc                 s   s   | ]\}}t ||V  qd S r   )
tcl_obj_eq).0Zactexpr   r   r   	<genexpr>   s   ztcl_obj_eq.<locals>.<genexpr>F)
isinstance_tkinterZTcl_Objr-   tupler5   allzipactualZexpectedr   r   r   rU   }   s    


rU   c                 C   s@   | |krdS t | ttjfr<t |ttjfr<t| t|kS dS )NTF)rY   r-   r   ZWidgetr^   r   r   r   	widget_eq   s    r`   )r1   rB   r   r6   r   r   r   r&   rZ   r[   r,   rE   ZTCL_VERSIONsplitr7   r8   r@   r*   rR   rT   rU   r`   r   r   r   r   <module>   s(   "	