a
    ¼3j1*  ã                   @   sú   d dl Z d dlmZ d dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZ d dlmZ d dlmZ G dd„ deƒZG dd	„ d	e jƒZG d
d„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ dee jƒZedkröe  ¡  dS )é    N)Úsupport)ÚVariableÚ	StringVarÚIntVarÚ	DoubleVarÚ
BooleanVarÚTclÚTclError)Ú	ALWAYS_EQ)ÚAbstractDefaultRootTestc                       s$   e Zd ZdZdZ‡ fdd„Z‡  ZS )ÚVarÚdefaultFc                    s   d| _ tƒ  |¡ d S )NT)Úside_effectÚsuperÚset)ÚselfÚvalue©Ú	__class__© úd/www/server/python_manager/versions/3.9.10/lib/python3.9/tkinter/test/test_tkinter/test_variables.pyr      s    zVar.set)Ú__name__Ú
__module__Ú__qualname__Z_defaultr   r   Ú__classcell__r   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestBasec                 C   s   t ƒ | _d S ©N)r   Úroot©r   r   r   r   ÚsetUp   s    zTestBase.setUpc                 C   s   | ` d S r   )r   r   r   r   r   ÚtearDown   s    zTestBase.tearDownN)r   r   r   r   r    r   r   r   r   r      s   r   c                   @   sd   e Z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d„ ZdS )ÚTestVariablec                 G   s   | j  | j jddg|¢R Ž ¡S )NÚinfoÚexists)r   Z
getbooleanÚcall)r   Úargsr   r   r   Úinfo_exists!   s    zTestVariable.info_existsc                 C   s.   t | jƒ}|  d| ¡ ¡ |  t|ƒd¡ d S )NÚ z^PY_VAR(\d+)$)r   r   ÚassertEqualÚgetZassertRegexÚstr©r   Úvr   r   r   Útest_default$   s    
zTestVariable.test_defaultc                 C   s2   t | jddƒ}|  d| ¡ ¡ |  dt|ƒ¡ d S )Núsample stringÚvarname)r   r   r(   r)   r*   r+   r   r   r   Útest_name_and_value)   s    z TestVariable.test_name_and_valuec                 C   sL   |   |  d¡¡ t| jddƒ}|  |  d¡¡ ~t ¡  |   |  d¡¡ d S )Nr/   r.   )ÚassertFalser&   r   r   Ú
assertTruer   Ú
gc_collectr+   r   r   r   Útest___del__.   s    zTestVariable.test___del__c                 C   sd   |   |  d¡¡ t| jdd}t| jdd}~t ¡  |   |  d¡¡ ~t ¡  |   |  d¡¡ d S )Nr/   Úname©r5   )r1   r&   r   r   r   r3   )r   Úv1Úv2r   r   r   Útest_dont_unset_not_existing6   s    z)TestVariable.test_dont_unset_not_existingc                 C   sô   t | jdd}t | jdd}|  ||¡ |  ||¡ t | jdd}|  ||¡ t| jdd}|  t|ƒt|ƒ¡ |  ||¡ tddi ƒ}|  ||ƒ ¡ |  |tƒ ¡ |  |t	¡ t
 ¡ }|  |j¡ t |dd}|  t|ƒt|ƒ¡ |  ||¡ d S )NÚabcr6   Zcbar   r   )r   r   ZassertIsNotr(   ZassertNotEqualr   r*   ÚtypeÚobjectr
   ÚtkinterÚTkZ
addCleanupÚdestroy)r   r7   r8   Zv3Zv4ÚVÚroot2Zv5r   r   r   Útest_equalityB   s$    zTestVariable.test_equalityc                 C   s<   |   t¡ t| jdd W d   ƒ n1 s.0    Y  d S )Né{   r6   )ÚassertRaisesÚ	TypeErrorr   r   r   r   r   r   Útest_invalid_name\   s    zTestVariable.test_invalid_namec                 C   s  |   t¡ t| jdd W d   ƒ n1 s.0    Y  |   t¡ | j dd¡ W d   ƒ n1 sf0    Y  |   t¡ | j dd¡ W d   ƒ n1 sž0    Y  |   t¡ | j dd¡ W d   ƒ n1 sÖ0    Y  |   t¡ | j dd¡ W d   ƒ n1 s0    Y  d S )Nzvar namer6   r   s   var name)rD   Ú
ValueErrorr   r   ÚglobalsetvarZsetvarr   r   r   r   Útest_null_in_name`   s    ,,,,zTestVariable.test_null_in_namec                 C   s0   t | jƒ}|  |j¡ | d¡ |  |j¡ d S ©Nr   )r   r   r1   r   r   r2   r+   r   r   r   Útest_initializel   s    

zTestVariable.test_initializec                    s  t | jƒ}t|ƒ}g ‰ ‡ fdd„}‡ fdd„}| d|¡}| d|¡}|  t| ¡ ƒd|fd|fg¡ |  ˆ g ¡ | d¡ |  ˆ d|d	d
fg¡ g ‰ | ¡  |  ˆ d|d	dfg¡ g ‰ t| ¡ ƒ}| 	d
|¡ |  t| ¡ ƒ|¡ |  
t¡ | 	dd¡ W d   ƒ n1 s0    Y  |  t| ¡ ƒ|¡ | 	d|df¡ |  t| ¡ ƒ|¡ | ¡  |  ˆ d|d	dfg¡ g ‰ | 	d|¡ |  | ¡ d|fg¡ | ¡  |  ˆ g ¡ g ‰ ~t ¡  | d¡ |  ˆ d|d	d
fg¡ g ‰ ~t ¡  |  ˆ d|d	dfg¡ d S )Nc                     s   ˆ   d|  ¡ d S ©N©Úread©Úappend©r%   ©Ztracer   r   Úread_tracerw   s    z0TestVariable.test_trace_old.<locals>.read_tracerc                     s   ˆ   d|  ¡ d S ©N)ÚwriterO   rQ   rR   r   r   Úwrite_tracery   s    z1TestVariable.test_trace_old.<locals>.write_tracerÚrZwuÚspamrU   r'   ÚwrN   é+   ÚeggsÚu)r   r   r*   Ztrace_variabler(   ÚsortedZtrace_vinfor   r)   Ztrace_vdeleterD   r	   ÚgcÚcollect)r   r,   ÚvnamerS   rV   Zcb1Zcb2r"   r   rR   r   Útest_trace_oldr   sN    
 
,
zTestVariable.test_trace_oldc                    sâ  t | jƒ}t|ƒ}g ‰ ‡ fdd„}‡ fdd„}| d|¡}| ddg|¡}|  t| ¡ ƒd|fd	|fg¡ |  ˆ g ¡ | d
¡ |  ˆ d|ddfg¡ g ‰ | ¡  |  ˆ d|ddfg¡ g ‰ t| ¡ ƒ}| 	d|¡ |  t| ¡ ƒ|¡ |  
t¡ | 	dd
¡ W d   ƒ n1 s0    Y  |  t| ¡ ƒ|¡ | ¡  |  ˆ d|ddfg¡ g ‰ | 	d|¡ |  | ¡ d	|fg¡ | ¡  |  ˆ g ¡ g ‰ ~t ¡  | d¡ |  ˆ d|ddfg¡ g ‰ ~t ¡  |  ˆ d|ddfg¡ d S )Nc                     s   ˆ   d|  ¡ d S rL   rO   rQ   rR   r   r   rS   ¨   s    z,TestVariable.test_trace.<locals>.read_tracerc                     s   ˆ   d|  ¡ d S rT   rO   rQ   rR   r   r   rV   ª   s    z-TestVariable.test_trace.<locals>.write_tracerrN   rU   ÚunsetrM   )rU   rb   rX   r'   r[   )r   r   r*   Z	trace_addr(   r]   Z
trace_infor   r)   Ztrace_removerD   r	   r^   r_   )r   r,   r`   rS   rV   Ztr1Ztr2r"   r   rR   r   Ú
test_trace¤   sP    
þ
,
zTestVariable.test_traceN)r   r   r   r&   r-   r0   r4   r9   rB   rF   rI   rK   ra   rc   r   r   r   r   r!      s   2r!   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestStringVarc                 C   s   t | jƒ}|  d| ¡ ¡ d S )Nr'   )r   r   r(   r)   r+   r   r   r   r-   Ø   s    
zTestStringVar.test_defaultc                 C   s@   t | jddƒ}|  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ d S )Nr:   r5   r   ©r   r   r(   r)   rH   r+   r   r   r   Útest_getÜ   s    zTestStringVar.test_getc                 C   s@   t | jddƒ}|  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ d S )Nzabc defr5   zval uere   r+   r   r   r   Útest_get_nullâ   s    zTestStringVar.test_get_nullN)r   r   r   r-   rf   rg   r   r   r   r   rd   Ö   s   rd   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú
TestIntVarc                 C   s   t | jƒ}|  d| ¡ ¡ d S )Nr   )r   r   r(   r)   r+   r   r   r   r-   ë   s    
zTestIntVar.test_defaultc                 C   s^   t | jddƒ}|  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ d S )NrC   r5   Z345iY  z876.5il  )r   r   r(   r)   rH   r+   r   r   r   rf   ï   s    zTestIntVar.test_getc                 C   sV   t | jdd}| j dd¡ |  ttf¡ | ¡  W d   ƒ n1 sH0    Y  d S ©Nr5   r6   r   )r   r   rH   rD   rG   r	   r)   r+   r   r   r   Útest_invalid_value÷   s    zTestIntVar.test_invalid_valueN)r   r   r   r-   rf   rj   r   r   r   r   rh   é   s   rh   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestDoubleVarc                 C   s   t | jƒ}|  d| ¡ ¡ d S )Ng        )r   r   r(   r)   r+   r   r   r   r-      s    
zTestDoubleVar.test_defaultc                 C   s@   t | jddƒ}|  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ d S )Nç®Gáz®ó?r5   ú3.45çš™™™™™@©r   r   ZassertAlmostEqualr)   rH   r+   r   r   r   rf     s    zTestDoubleVar.test_getc                 C   s^   t | jddƒ}|  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ d S )Nrl   r5   rm   rn   Z456iÈ  ro   r+   r   r   r   Útest_get_from_int
  s    zTestDoubleVar.test_get_from_intc                 C   sV   t | jdd}| j dd¡ |  ttf¡ | ¡  W d   ƒ n1 sH0    Y  d S ri   )r   r   rH   rD   rG   r	   r)   r+   r   r   r   rj     s    z TestDoubleVar.test_invalid_valueN)r   r   r   r-   rf   rp   rj   r   r   r   r   rk   þ   s   rk   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestBooleanVarc                 C   s   t | jƒ}|  | ¡ d¡ d S )NF)r   r   ÚassertIsr)   r+   r   r   r   r-     s    
zTestBooleanVar.test_defaultc                 C   s¨   t | jddƒ}|  | ¡ d¡ | j dd¡ |  | ¡ d¡ | j d| j ¡ rRdnd¡ |  | ¡ d¡ | j dd¡ |  | ¡ d¡ | j dd¡ |  | ¡ d¡ d S )	NTr5   Ú0Fé*   é   r   Úon)r   r   rr   r)   rH   Úwantobjectsr+   r   r   r   rf     s    zTestBooleanVar.test_getc                 C   sÌ   | j  ¡ rdnd}| j  ¡ r dnd}t| j dd}| d¡ |  | j  d¡|¡ | d¡ |  | j  d¡|¡ | d¡ |  | j  d¡|¡ | d¡ |  | j  d¡|¡ | d	¡ |  | j  d¡|¡ d S )
Nru   Ú1r   rs   r5   r6   Trt   rv   )r   rw   r   r   r(   Úglobalgetvar)r   ÚtrueÚfalser,   r   r   r   Útest_set+  s    




zTestBooleanVar.test_setc                 C   sì   | j  ¡ rdnd}t| j dd}|  t¡ | d¡ W d   ƒ n1 sJ0    Y  |  | j  d¡|¡ | j  dd¡ |  t	¡ | 
¡  W d   ƒ n1 sž0    Y  | j  dd¡ |  t	¡ | 
¡  W d   ƒ n1 sÞ0    Y  d S )Nr   rs   r5   r6   r   z1.0)r   rw   r   rD   r	   r   r(   ry   rH   rG   r)   )r   r{   r,   r   r   r   Útest_invalid_value_domain:  s    (&z(TestBooleanVar.test_invalid_value_domainN)r   r   r   r-   rf   r|   r}   r   r   r   r   rq     s   rq   c                   @   s   e Zd Zdd„ ZdS )ÚDefaultRootTestc                 C   sT   |   tt¡ t ¡ }tƒ }| d¡ |  | ¡ d¡ | ¡  t 	¡  |   tt¡ d S rJ   )
rD   ÚRuntimeErrorr   r=   r>   r   r(   r)   r?   ZNoDefaultRoot)r   r   r,   r   r   r   Útest_variableJ  s    
zDefaultRootTest.test_variableN)r   r   r   r€   r   r   r   r   r~   H  s   r~   Ú__main__)ZunittestÚtestr   r^   r=   r   r   r   r   r   r   r	   Ztest.supportr
   Ztkinter.test.supportr   r   ZTestCaser   r!   rd   rh   rk   rq   r~   r   Úmainr   r   r   r   Ú<module>   s"   $
	 8/