
    ;bh*                     p   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mZ  G d de      Z G d d	e j$                        Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d dee j$                        Zedk(  r e j6                          yy)    N)support)Variable	StringVarIntVar	DoubleVar
BooleanVarTclTclError)	ALWAYS_EQ)AbstractDefaultRootTesttcl_versionc                   &     e Zd ZdZdZ fdZ xZS )VardefaultFc                 2    d| _         t        | 	  |       y )NT)side_effectsuperset)selfvalue	__class__s     J/opt/python-3.12.12/usr/lib/python3.12/test/test_tkinter/test_variables.pyr   zVar.set   s    E    )__name__
__module____qualname___defaultr   r   __classcell__)r   s   @r   r   r      s    HK r   r   c                       e Zd Zd Zd Zy)TestBasec                 "    t               | _        y N)r	   rootr   s    r   setUpzTestBase.setUp   s    E	r   c                     | ` y r"   )r#   r$   s    r   tearDownzTestBase.tearDown   s    Ir   N)r   r   r   r%   r'    r   r   r    r       s    r   r    c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestVariablec                 p    | j                   j                   | j                   j                  ddg|       S )Ninfoexists)r#   
getbooleancall)r   argss     r   info_existszTestVariable.info_exists!   s-    yy##NDIINN68$Kd$KLLr   c                     t        | j                        }| j                  d|j                                | j	                  t        |      d       y )N z^PY_VAR(\d+)$)r   r#   assertEqualgetassertRegexstrr   vs     r   test_defaultzTestVariable.test_default$   s;    TYYQUUW%Q!12r   c                     t        | j                  dd      }| j                  d|j                                | j                  dt	        |             y )Nsample stringvarname)r   r#   r4   r5   r7   r8   s     r   test_name_and_valuez TestVariable.test_name_and_value)   s>    TYY;!%%'2CF+r   c                    | j                  | j                  d             t        | j                  dd      }| j	                  | j                  d             ~t        j                          | j                  | j                  d             y )Nr=   r<   )assertFalser1   r   r#   
assertTruer   
gc_collectr8   s     r   test___del__zTestVariable.test___del__.   sl    )))45TYY;((34)))45r   c                 t   | j                  | j                  d             t        | j                  d      }t        | j                  d      }~t	        j
                          | j                  | j                  d             ~t	        j
                          | j                  | j                  d             y )Nr=   namerE   )r@   r1   r   r#   r   rB   )r   v1v2s      r   test_dont_unset_not_existingz)TestVariable.test_dont_unset_not_existing6   s    )))45diif-diif-))&12))&12r   c                     t        | j                  d      }t        | j                  d      }| j                  ||       | j                  ||       t        | j                  d      }| j	                  ||       t        | j                  d      }| j                  t        |      t        |             | j	                  ||       t        ddi       }| j	                  | |              | j	                  |t                      | j                  |t               t        j                         }| j                  |j                         t        |d      }| j                  t        |      t        |             | j	                  ||       y )NabcrF   cbar   r(   )r   r#   assertIsNotr4   assertNotEqualr   r7   typeobjectr   tkinterTk
addCleanupdestroy)r   rG   rH   v3v4Vroot2v5s           r   test_equalityzTestVariable.test_equalityB   s+   diie,diie,R R diie,B#tyyu-R#b'*B#R$B$B)Y'

&e%(R#b'*B#r   c                     | j                  t              5  t        | j                  d       d d d        y # 1 sw Y   y xY w)N{   rF   )assertRaises	TypeErrorr   r#   r$   s    r   test_invalid_namezTestVariable.test_invalid_name\   s*    y)TYYS) *))s	   7A c                    | j                  t              5  t        | j                  d       d d d        | j                  t              5  | j                  j	                  dd       d d d        | j                  t              5  | j                  j	                  dd       d d d        | j                  t              5  | j                  j                  dd       d d d        | j                  t              5  | j                  j                  dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   y xY w)Nzvar namerF   r   s   var name)r]   
ValueErrorr   r#   globalsetvarsetvarr$   s    r   test_null_in_namezTestVariable.test_null_in_name`   s    z*TYY]3 +z*II""=': +z*II"">7; +z*II]G4 +z*II^W5 +* +*********s;   DD+D7?E9ED(+D47E EEc                     t        | j                        }| j                  |j                         |j	                  d       | j                  |j                         y Nr   )r   r#   r@   r   r   rA   r8   s     r   test_initializezTestVariable.test_initializel   s<    		N'	g&r   c                    t         dk\  r| j                  d       t        | j                        }t	        |      }g fd}fd}|j                  d|      }|j                  d|      }| j                  t        |j                               d|fd|fg       | j                  g        |j                  d       | j                  d|d	d
fg       g |j                          | j                  d|d	dfg       g t        |j                               }|j                  d
|       | j                  t        |j                               |       | j                  t              5  |j                  dd       d d d        | j                  t        |j                               |       |j                  d|df       | j                  t        |j                               |       |j                          | j                  d|d	dfg       g |j                  d|       | j                  |j                         d|fg       |j                          | j                  g        g ~t        j                          |j                  d       | j                  d|d	d
fg       g ~t        j                          | j                  d|d	dfg       y # 1 sw Y   ^xY w)N)	   r   zrequires Tcl version < 9.0c                  .    j                  d| z          y Nreadappendr0   traces    r   read_tracerz0TestVariable.test_trace_old.<locals>.read_tracery       LLT)*r   c                  .    j                  d| z          y N)writern   rp   s    r   write_tracerz1TestVariable.test_trace_old.<locals>.write_tracer{       LLd*+r   rwuspamrv   r3   wrm   +   eggsu)r   skipTestr   r#   r7   trace_variabler4   sortedtrace_vinfor   r5   trace_vdeleter]   r
   gccollect)	r   r9   vnamerr   rw   cb1cb2r,   rq   s	           @r   test_trace_oldzTestVariable.test_trace_oldr   sm   & MM67TYYA	+	,sK0t\20C:c{2KL#	f'5"c!: ;<	&%S!9 :;ammo&	S!0$7x(OOC( )0$7	c2Y'0$7	&%S!9 :;	S!D#;-8	#


	f'5"c!: ;<


'5"c!: ;</ )(s   )KK"c                     t        | j                        }t        |      }g fd}fd}|j                  d|      }|j                  ddg|      }| j	                  t        |j                               d|fd|fg       | j	                  g        |j                  d       | j	                  d|d	dfg       g |j                          | j	                  d|d	dfg       g t        |j                               }|j                  d|       | j	                  t        |j                               |       | j                  t              5  |j                  dd       d d d        | j	                  t        |j                               |       |j                          | j	                  d|d	dfg       g |j                  d|       | j	                  |j                         d|fg       |j                          | j	                  g        g ~t        j                          |j                  d
       | j	                  d|d	dfg       g ~t        j                          | j	                  d|d	dfg       y # 1 sw Y   !xY w)Nc                  .    j                  d| z          y rk   rn   rp   s    r   rr   z,TestVariable.test_trace.<locals>.read_tracer   rs   r   c                  .    j                  d| z          y ru   rn   rp   s    r   rw   z-TestVariable.test_trace.<locals>.write_tracer   rx   r   rm   rv   unsetrl   )rv   r   r{   r3   r~   )r   r#   r7   	trace_addr4   r   
trace_infor   r5   trace_remover]   r
   r   r   )	r   r9   r   rr   rw   tr1tr2r,   rq   s	           @r   
test_tracezTestVariable.test_trace   s9   TYYA	+	,kk&+.kk7G,l;/#S),c224 	5 	#	f'5"g!> ?@	&%V!< =>alln%	w$/6x(NN66* )/6	&%V!< =>	vs#+=s*C)DE	#


	f'5"g!> ?@


'5"g!> ?@+ )(s   JJN)r   r   r   r1   r:   r>   rC   rI   rZ   r_   rd   rg   r   r   r(   r   r   r*   r*      s<    M3
,
6
3$4*
6'2=h/Ar   r*   c                       e Zd Zd Zd Zd Zy)TestStringVarc                 n    t        | j                        }| j                  d|j                                y )Nr3   )r   r#   r4   r5   r8   s     r   r:   zTestStringVar.test_default   s&    dii QUUW%r   c                     t        | j                  dd      }| j                  d|j                                | j                  j	                  dd       | j                  d|j                                y )NrK   rE   r   r   r#   r4   r5   rb   r8   s     r   test_getzTestStringVar.test_get   sT    dii/(		vw/!%%'*r   c                     t        | j                  dd      }| j                  d|j                                | j                  j	                  dd       | j                  d|j                                y )Nzabc defrE   zval uer   r8   s     r   test_get_nullzTestStringVar.test_get_null   sT    diiv6quuw/		v{3aeeg.r   N)r   r   r   r:   r   r   r(   r   r   r   r      s    &+/r   r   c                       e Zd Zd Zd Zd Zy)
TestIntVarc                 n    t        | j                        }| j                  d|j                                y )Nr   )r   r#   r4   r5   r8   s     r   r:   zTestIntVar.test_default   s&    499AEEG$r   c                 b   t        | j                  dd      }| j                  d|j                                | j                  j	                  dd       | j                  d|j                                | j                  j	                  dd       | j                  d|j                                y )Nr\   rE   345iY  z876.5il  )r   r#   r4   r5   rb   r8   s     r   r   zTestIntVar.test_get   s~    499c6*aeeg&		vu-aeeg&		vw/aeeg&r   c                     t        | j                  d      }| j                  j                  dd       | j                  t        t
        f      5  |j                          d d d        y # 1 sw Y   y xY wNrE   rF   r   )r   r#   rb   r]   ra   r
   r5   r8   s     r   test_invalid_valuezTestIntVar.test_invalid_value   sN    4996*		vw/
H56EEG 766   A))A2N)r   r   r   r:   r   r   r(   r   r   r   r      s    %'r   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestDoubleVarc                 n    t        | j                        }| j                  d|j                                y )Ng        )r   r#   r4   r5   r8   s     r   r:   zTestDoubleVar.test_default  s&    dii aeeg&r   c                     t        | j                  dd      }| j                  d|j                                | j                  j	                  dd       | j                  d|j                                y )NGz?rE   3.45皙@r   r#   assertAlmostEqualr5   rb   r8   s     r   r   zTestDoubleVar.test_get  sT    diiv.tQUUW-		vv.tQUUW-r   c                 b   t        | j                  dd      }| j                  d|j                                | j                  j	                  dd       | j                  d|j                                | j                  j	                  dd       | j                  d|j                                y )Nr   rE   r   r   456i  r   r8   s     r   test_get_from_intzTestDoubleVar.test_get_from_int  s~    diiv.tQUUW-		vv.tQUUW-		vu-sAEEG,r   c                     t        | j                  d      }| j                  j                  dd       | j                  t        t
        f      5  |j                          d d d        y # 1 sw Y   y xY wr   )r   r#   rb   r]   ra   r
   r5   r8   s     r   r   z TestDoubleVar.test_invalid_value  sN    diif-		vw/
H56EEG 766r   N)r   r   r   r:   r   r   r   r(   r   r   r   r      s    '.-r   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestBooleanVarc                 n    t        | j                        }| j                  |j                         d       y )NF)r   r#   assertIsr5   r8   s     r   r:   zTestBooleanVar.test_default  s$    tyy!aeegu%r   c                    t        | j                  dd      }| j                  |j                         d       | j                  j	                  dd       | j                  |j                         d       | j                  j	                  d| j                  j                         rdnd       | j                  |j                         d       | j                  j	                  dd       | j                  |j                         d       | j                  j	                  dd       | j                  |j                         d       y )	NTrE   0F*      r   on)r   r#   r   r5   rb   wantobjectsr8   s     r   r   zTestBooleanVar.test_get!  s    tyy$/aeegt$		vs+aeegu%		vTYY-B-B-Dr!Laeegt$		vq)aeegu%		vt,aeegt$r   c                    | j                   j                         rdnd}| j                   j                         rdnd}t        | j                   d      }|j                  d       | j	                  | j                   j                  d      |       |j                  d       | j	                  | j                   j                  d      |       |j                  d       | j	                  | j                   j                  d      |       |j                  d       | j	                  | j                   j                  d      |       |j                  d	       | j	                  | j                   j                  d      |       y )
Nr   1r   r   rE   rF   Tr   r   )r#   r   r   r   r4   globalgetvar)r   truefalser9   s       r   test_setzTestBooleanVar.test_set-  s   II))+qYY**,#tyyv.	d//7>	c
//7?	b	//7>	a//7?	d//7>r   c                    | j                   j                         rdnd}t        | j                   d      }| j                  t              5  |j                  d       d d d        | j                  | j                   j                  d      |       | j                   j                  dd       | j                  t              5  |j                          d d d        | j                   j                  dd       | j                  t              5  |j                          d d d        y # 1 sw Y   xY w# 1 sw Y   `xY w# 1 sw Y   y xY w)Nr   r   rE   rF   r   z1.0)r#   r   r   r]   r
   r   r4   r   rb   ra   r5   )r   r   r9   s      r   test_invalid_value_domainz(TestBooleanVar.test_invalid_value_domain<  s    YY**,#tyyv.x(EE'N )//7?		vw/z*EEG +		vu-z*EEG +* )( +* +*s$   D%D1D=%D.1D:=EN)r   r   r   r:   r   r   r   r(   r   r   r   r     s    &
%?r   r   c                       e Zd Zd Zy)DefaultRootTestc                 R   | j                  t        t               t        j                         }t               }|j                  d       | j                  |j                         d       |j                          t        j                          | j                  t        t               y rf   )
r]   RuntimeErrorr   rQ   rR   r   r4   r5   rT   NoDefaultRoot)r   r#   r9   s      r   test_variablezDefaultRootTest.test_variableL  sj    ,1zz|J	g'*,1r   N)r   r   r   r   r(   r   r   r   r   J  s    2r   r   __main__)unittesttestr   r   rQ   r   r   r   r   r   r	   r
   test.supportr   test.test_tkinter.supportr   r   r   TestCaser    r*   r   r   r   r   r   r   mainr(   r   r   <module>r      s      	    " J( x   vA8 vAr/H /& *H 6,X ,^
2-x/@/@ 
2 zHMMO r   