o
    ²ó®g*  ã                   @   s  d dl 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eeeeefZedkr…d dl
mZ eeŽ  dS dS )é    N)Ú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__© ú^/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/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   sD   |   |  d¡¡ t| jddƒ}|  |  d¡¡ ~|   |  d¡¡ d S )Nr.   r-   )ÚassertFalser%   r   r   Ú
assertTruer*   r   r   r   Útest___del__,   s
   zTestVariable.test___del__c                 C   sT   |   |  d¡¡ t| jdd}t| jdd}~|   |  d¡¡ ~|   |  d¡¡ d S )Nr.   Úname©r3   )r0   r%   r   r   )r   Úv1Úv2r   r   r   Útest_dont_unset_not_existing3   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Úabcr4   Zcbar   r   )r   r   ZassertIsNotr'   ZassertNotEqualr   r)   ÚtypeÚobjectr	   ÚtkinterÚTkZ
addCleanupÚdestroy)r   r5   r6   Zv3Zv4ÚVÚroot2Zv5r   r   r   Útest_equality=   s$   zTestVariable.test_equalityc                 C   s>   |   t¡ t| jdd W d   ƒ d S 1 sw   Y  d S )Né{   r4   )ÚassertRaisesÚ	TypeErrorr   r   r   r   r   r   Útest_invalid_nameW   s   "ÿzTestVariable.test_invalid_namec                 C   s  |   t¡ t| jdd W d   ƒ n1 sw   Y  |   t¡ | j dd¡ W d   ƒ n1 s3w   Y  |   t¡ | j dd¡ W d   ƒ n1 sOw   Y  |   t¡ | j dd¡ W d   ƒ n1 skw   Y  |   t¡ | j dd¡ W d   ƒ d S 1 sˆw   Y  d S )Nzvar namer4   r   s   var name)rB   Ú
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   r0   r   r   r1   r*   r   r   r   Útest_initializeg   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ˆw   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                     ó   ˆ   d|  ¡ d S ©N©Úread©Úappend©r$   ©Ztracer   r   Úread_tracerr   ó   z0TestVariable.test_trace_old.<locals>.read_tracerc                     rJ   ©N)ÚwriterN   rP   rQ   r   r   Úwrite_tracert   rS   z1TestVariable.test_trace_old.<locals>.write_tracerÚrZwuÚspamrU   r&   ÚwrM   é+   ÚeggsÚu)r   r   r)   Ztrace_variabler'   ÚsortedZtrace_vinfor   r(   Ztrace_vdeleterB   r   ÚgcÚcollect)r   r+   ÚvnamerR   rV   Zcb1Zcb2r!   r   rQ   r   Útest_trace_oldm   sP   
 
ÿ
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Šw   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                     rJ   rK   rN   rP   rQ   r   r   rR   £   rS   z,TestVariable.test_trace.<locals>.read_tracerc                     rJ   rT   rN   rP   rQ   r   r   rV   ¥   rS   z-TestVariable.test_trace.<locals>.write_tracerrM   rU   ÚunsetrL   )rU   rb   rX   r&   r[   )r   r   r)   Z	trace_addr'   r]   Z
trace_infor   r(   Ztrace_removerB   r   r^   r_   )r   r+   r`   rR   rV   Ztr1Ztr2r!   r   rQ   r   Ú
test_traceŸ   sR   
þ
ÿ
zTestVariable.test_traceN)r   r   r   r%   r,   r/   r2   r7   r@   rD   rG   rI   ra   rc   r   r   r   r   r       s    
2r    c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestStringVarc                 C   ó   t | jƒ}|  d| ¡ ¡ d S )Nr&   )r   r   r'   r(   r*   r   r   r   r,   Ó   ó   
zTestStringVar.test_defaultc                 C   ó@   t | jddƒ}|  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ d S )Nr8   r3   r   ©r   r   r'   r(   rF   r*   r   r   r   Útest_get×   ó   zTestStringVar.test_getc                 C   rh   )Nzabc defr3   zval ueri   r*   r   r   r   Útest_get_nullÝ   rk   zTestStringVar.test_get_nullN)r   r   r   r,   rj   rl   r   r   r   r   re   Ñ   s    re   c                   @   rd   )Ú
TestIntVarc                 C   rf   )Nr   )r   r   r'   r(   r*   r   r   r   r,   æ   rg   zTestIntVar.test_defaultc                 C   ó^   t | jddƒ}|  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ d S )NrA   r3   Z345iY  z876.5il  )r   r   r'   r(   rF   r*   r   r   r   rj   ê   ó   zTestIntVar.test_getc                 C   óX   t | jdd}| j dd¡ |  ttf¡ | ¡  W d   ƒ d S 1 s%w   Y  d S ©Nr3   r4   r   )r   r   rF   rB   rE   r   r(   r*   r   r   r   Útest_invalid_valueò   ó
   
"ÿzTestIntVar.test_invalid_valueN)r   r   r   r,   rj   rr   r   r   r   r   rm   ä   s    rm   c                   @   ó,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestDoubleVarc                 C   rf   )Ng        )r   r   r'   r(   r*   r   r   r   r,   û   rg   zTestDoubleVar.test_defaultc                 C   s@   t | jddƒ}|  d| ¡ ¡ | j dd¡ |  d| ¡ ¡ d S )Nç®Gáz®ó?r3   ú3.45çš™™™™™@©r   r   ZassertAlmostEqualr(   rF   r*   r   r   r   rj   ÿ   rk   zTestDoubleVar.test_getc                 C   rn   )Nrv   r3   rw   rx   Z456iÈ  ry   r*   r   r   r   Útest_get_from_int  ro   zTestDoubleVar.test_get_from_intc                 C   rp   rq   )r   r   rF   rB   rE   r   r(   r*   r   r   r   rr     rs   z TestDoubleVar.test_invalid_valueN)r   r   r   r,   rj   rz   rr   r   r   r   r   ru   ù   s
    ru   c                   @   rt   )
ÚTestBooleanVarc                 C   s   t | jƒ}|  | ¡ d¡ d S )NF)r   r   ÚassertIsr(   r*   r   r   r   r,     rg   zTestBooleanVar.test_defaultc                 C   s¨   t | jddƒ}|  | ¡ d¡ | j dd¡ |  | ¡ d¡ | j d| j ¡ r)dnd¡ |  | ¡ d¡ | j dd¡ |  | ¡ d¡ | j dd¡ |  | ¡ d¡ d S )	NTr3   Ú0Fé*   é   r   Úon)r   r   r|   r(   rF   Úwantobjectsr*   r   r   r   rj     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 )
Nr   Ú1r   r}   r3   r4   Tr~   r€   )r   r   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 s%w   Y  |  | j  d¡|¡ | j  dd¡ |  t	¡ | 
¡  W d   ƒ n1 sOw   Y  | j  dd¡ |  t	¡ | 
¡  W d   ƒ d S 1 spw   Y  d S )Nr   r}   r3   r4   r   z1.0)r   r   r   rB   r   r   r'   rƒ   rF   rE   r(   )r   r…   r+   r   r   r   Útest_invalid_value_domain5  s   ÿ
ÿ
"ÿz(TestBooleanVar.test_invalid_value_domainN)r   r   r   r,   rj   r†   r‡   r   r   r   r   r{     s
    r{   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 rH   )
rB   ÚRuntimeErrorr   r;   r<   r   r'   r(   r=   ZNoDefaultRoot)r   r   r+   r   r   r   Útest_variableE  s   
zDefaultRootTest.test_variableN)r   r   r   rŠ   r   r   r   r   rˆ   C  s    rˆ   Ú__main__)Úrun_unittest)Zunittestr^   r;   r   r   r   r   r   r   r   Ztest.supportr	   Ztkinter.test.supportr
   r   ZTestCaser   r    re   rm   ru   r{   rˆ   Z	tests_guir   rŒ   r   r   r   r   Ú<module>   s,    $
	 5/ÿþ