
    4hh*                     r   S SK r S SKJr  S SKrS SKrS SKJrJrJrJrJ	r	J
r
Jr  S SKJr  S SKJrJr   " S S\5      r " S S	\ R$                  5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\\ R$                  5      r\S:X  a  \ R6                  " 5         gg)    N)support)Variable	StringVarIntVar	DoubleVar
BooleanVarTclTclError)	ALWAYS_EQ)AbstractDefaultRootTesttcl_versionc                   0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )Var   defaultFc                 2   > SU l         [        TU ]	  U5        g )NT)side_effectsuperset)selfvalue	__class__s     I/opt/python-3.13.8/usr/lib/python3.13/test/test_tkinter/test_variables.pyr   Var.set   s    E    )r   )	__name__
__module____qualname____firstlineno___defaultr   r   __static_attributes____classcell__)r   s   @r   r   r      s    HK r   r   c                        \ rS rSrS rS rSrg)TestBase   c                 "    [        5       U l        g N)r	   rootr   s    r   setUpTestBase.setUp   s    E	r   c                     U ? g r'   r(   r)   s    r   tearDownTestBase.tearDown   s    Ir   r-   N)r   r   r   r   r*   r.   r!    r   r   r$   r$      s    r   r$   c                   V    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)TestVariable   c                 p    U R                   R                  U R                   R                  " SS/UQ76 5      $ )Ninfoexists)r(   
getbooleancall)r   argss     r   info_existsTestVariable.info_exists!   s+    yy##DIINN68$Kd$KLLr   c                     [        U R                  5      nU R                  SUR                  5       5        U R	                  [        U5      S5        g )N z^PY_VAR(\d+)$)r   r(   assertEqualgetassertRegexstrr   vs     r   test_defaultTestVariable.test_default$   s;    TYYQUUW%Q!12r   c                     [        U R                  SS5      nU R                  SUR                  5       5        U R                  S[	        U5      5        g )Nsample stringvarname)r   r(   r>   r?   rA   rB   s     r   test_name_and_value TestVariable.test_name_and_value)   s>    TYY;!%%'2CF+r   c                    U R                  U R                  S5      5        [        U R                  SS5      nU R	                  U R                  S5      5        A[
        R                  " 5         U R                  U R                  S5      5        g )NrH   rG   )assertFalser:   r   r(   
assertTruer   
gc_collectrB   s     r   test___del__TestVariable.test___del__.   sl    )))45TYY;((34)))45r   c                 l   U R                  U R                  S5      5        [        U R                  SS9n[        U R                  SS9nA[        R
                  " 5         U R                  U R                  S5      5        A[        R
                  " 5         U R                  U R                  S5      5        g )NrH   namerR   )rL   r:   r   r(   r   rN   )r   v1v2s      r   test_dont_unset_not_existing)TestVariable.test_dont_unset_not_existing6   s    )))45diif-diif-))&12))&12r   c                    [        U R                  SS9n[        U R                  SS9nU R                  X5        U R                  X5        [        U R                  SS9nU R	                  X5        [        U R                  SS9nU R                  [        U5      [        U5      5        U R	                  X5        [        SS0 5      nU R	                  X" 5       5        U R	                  U[        5       5        U R                  U[        5        [        R                  " 5       nU R                  UR                  5        [        USS9nU R                  [        U5      [        U5      5        U R	                  X5        g )NabcrS   cbar   r0   )r   r(   assertIsNotr>   assertNotEqualr   rA   typeobjectr   tkinterTk
addCleanupdestroy)r   rT   rU   v3v4Vroot2v5s           r   test_equalityTestVariable.test_equalityB   s!   diie,diie,  diie,B#tyyu-R#b'*B#R$B$B)Y'

&e%(R#b'*B#r   c                     U R                  [        5         [        U R                  SS9  S S S 5        g ! , (       d  f       g = f)N{   rS   )assertRaises	TypeErrorr   r(   r)   s    r   test_invalid_nameTestVariable.test_invalid_name\   s*    y)TYYS) *))s	   4
Ac                    U R                  [        5         [        U R                  SS9  S S S 5        U R                  [        5         U R                  R	                  SS5        S S S 5        U R                  [        5         U R                  R	                  SS5        S S S 5        U R                  [        5         U R                  R                  SS5        S S S 5        U R                  [        5         U R                  R                  SS5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N|= f! , (       d  f       g = f)Nzvar namerS   r   s   var name)rl   
ValueErrorr   r(   globalsetvarsetvarr)   s    r   test_null_in_name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-D><E6E 
D*-
D;>
E
E 
E.c                     [        U R                  5      nU R                  UR                  5        UR	                  S5        U R                  UR                  5        g Nr   )r   r(   rL   r   r   rM   rB   s     r   test_initializeTestVariable.test_initializel   s<    		N'	g&r   c                   ^ [         S:  a  U R                  S5        [        U R                  5      n[	        U5      n/ mU4S jnU4S jnUR                  SU5      nUR                  SU5      nU R                  [        UR                  5       5      SU4SU4/5        U R                  T/ 5        UR                  S5        U R                  TSUS	S
4/5        / mUR                  5         U R                  TSUS	S4/5        / m[        UR                  5       5      nUR                  S
U5        U R                  [        UR                  5       5      U5        U R                  [        5         UR                  SS5        S S S 5        U R                  [        UR                  5       5      U5        UR                  SUS45        U R                  [        UR                  5       5      U5        UR                  5         U R                  TSUS	S4/5        / mUR                  SU5        U R                  UR                  5       SU4/5        UR                  5         U R                  T/ 5        / mA[        R                  " 5         UR                  S5        U R                  TSUS	S
4/5        / mA[        R                  " 5         U R                  TSUS	S4/5        g ! , (       d  f       GNe= f)N)	   r   zrequires Tcl version < 9.0c                  .   > TR                  SU -   5        g Nreadappendr9   traces    r   read_tracer0TestVariable.test_trace_old.<locals>.read_tracery       LLT)*r   c                  .   > TR                  SU -   5        g N)writer   r   s    r   write_tracer1TestVariable.test_trace_old.<locals>.write_tracer{       LLd*+r   rwuspamr   r=   wr   +   eggsu)r   skipTestr   r(   rA   trace_variabler>   sortedtrace_vinfor   r?   trace_vdeleterl   r
   gccollect)	r   rC   vnamer   r   cb1cb2r5   r   s	           @r   test_trace_old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                 2  ^ [        U R                  5      n[        U5      n/ mU4S jnU4S jnUR                  SU5      nUR                  SS/U5      nU R	                  [        UR                  5       5      SU4SU4/5        U R	                  T/ 5        UR                  S5        U R	                  TSUS	S4/5        / mUR                  5         U R	                  TSUS	S4/5        / m[        UR                  5       5      nUR                  SU5        U R	                  [        UR                  5       5      U5        U R                  [        5         UR                  SS5        S S S 5        U R	                  [        UR                  5       5      U5        UR                  5         U R	                  TSUS	S4/5        / mUR                  SU5        U R	                  UR                  5       SU4/5        UR                  5         U R	                  T/ 5        / mA[        R                  " 5         UR                  S
5        U R	                  TSUS	S4/5        / mA[        R                  " 5         U R	                  TSUS	S4/5        g ! , (       d  f       GN(= f)Nc                  .   > TR                  SU -   5        g r}   r   r   s    r   r   ,TestVariable.test_trace.<locals>.read_tracer   r   r   c                  .   > TR                  SU -   5        g r   r   r   s    r   r   -TestVariable.test_trace.<locals>.write_tracer   r   r   r   r   unsetr~   )r   r   r   r=   r   )r   r(   rA   	trace_addr>   r   
trace_infor   r?   trace_removerl   r
   r   r   )	r   rC   r   r   r   tr1tr2r5   r   s	           @r   
test_trace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r0   N)r   r   r   r   r:   rD   rI   rO   rV   rh   rn   rt   rx   r   r   r!   r0   r   r   r2   r2      s<    M3
,
6
3$4*
6'2=h/Ar   r2   c                   &    \ rS rSrS rS rS rSrg)TestStringVar   c                 n    [        U R                  5      nU R                  SUR                  5       5        g )Nr=   )r   r(   r>   r?   rB   s     r   rD   TestStringVar.test_default   s&    dii QUUW%r   c                     [        U R                  SS5      nU R                  SUR                  5       5        U R                  R	                  SS5        U R                  SUR                  5       5        g )NrY   rR   r   r   r(   r>   r?   rr   rB   s     r   test_getTestStringVar.test_get   sT    dii/(		vw/!%%'*r   c                     [        U R                  SS5      nU R                  SUR                  5       5        U R                  R	                  SS5        U R                  SUR                  5       5        g )Nzabc defrR   zval uer   rB   s     r   test_get_nullTestStringVar.test_get_null   sT    diiv6quuw/		v{3aeeg.r   r0   N)r   r   r   r   rD   r   r   r!   r0   r   r   r   r      s    &+/r   r   c                   &    \ rS rSrS rS rS rSrg)
TestIntVar   c                 n    [        U R                  5      nU R                  SUR                  5       5        g )Nr   )r   r(   r>   r?   rB   s     r   rD   TestIntVar.test_default   s&    499AEEG$r   c                 b   [        U R                  SS5      nU R                  SUR                  5       5        U R                  R	                  SS5        U R                  SUR                  5       5        U R                  R	                  SS5        U R                  SUR                  5       5        g )Nrk   rR   345iY  z876.5il  )r   r(   r>   r?   rr   rB   s     r   r   TestIntVar.test_get   s~    499c6*aeeg&		vu-aeeg&		vw/aeeg&r   c                     [        U R                  SS9nU R                  R                  SS5        U R                  [        [
        45         UR                  5         S S S 5        g ! , (       d  f       g = fNrR   rS   r   )r   r(   rr   rl   rq   r
   r?   rB   s     r   test_invalid_valueTestIntVar.test_invalid_value   sN    4996*		vw/
H56EEG 766   A&&
A4r0   N)r   r   r   r   rD   r   r   r!   r0   r   r   r   r      s    %'r   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestDoubleVar   c                 n    [        U R                  5      nU R                  SUR                  5       5        g )Ng        )r   r(   r>   r?   rB   s     r   rD   TestDoubleVar.test_default  s&    dii aeeg&r   c                     [        U R                  SS5      nU R                  SUR                  5       5        U R                  R	                  SS5        U R                  SUR                  5       5        g )NGz?rR   3.45皙@r   r(   assertAlmostEqualr?   rr   rB   s     r   r   TestDoubleVar.test_get  sT    diiv.tQUUW-		vv.tQUUW-r   c                 b   [        U R                  SS5      nU R                  SUR                  5       5        U R                  R	                  SS5        U R                  SUR                  5       5        U R                  R	                  SS5        U R                  SUR                  5       5        g )Nr   rR   r   r   456i  r   rB   s     r   test_get_from_intTestDoubleVar.test_get_from_int  s~    diiv.tQUUW-		vv.tQUUW-		vu-sAEEG,r   c                     [        U R                  SS9nU R                  R                  SS5        U R                  [        [
        45         UR                  5         S S S 5        g ! , (       d  f       g = fr   )r   r(   rr   rl   rq   r
   r?   rB   s     r   r    TestDoubleVar.test_invalid_value  sN    diif-		vw/
H56EEG 766r   r0   N)	r   r   r   r   rD   r   r   r   r!   r0   r   r   r   r      s    '.-r   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestBooleanVari  c                 n    [        U R                  5      nU R                  UR                  5       S5        g )NF)r   r(   assertIsr?   rB   s     r   rD   TestBooleanVar.test_default  s$    tyy!aeegu%r   c                    [        U R                  SS5      nU R                  UR                  5       S5        U R                  R	                  SS5        U R                  UR                  5       S5        U R                  R	                  SU R                  R                  5       (       a  SOS5        U R                  UR                  5       S5        U R                  R	                  SS5        U R                  UR                  5       S5        U R                  R	                  SS5        U R                  UR                  5       S5        g )	NTrR   0F*      r   on)r   r(   r   r?   rr   wantobjectsrB   s     r   r   TestBooleanVar.test_get!  s    tyy$/aeegt$		vs+aeegu%		vTYY-B-B-D-Dr!Laeegt$		vq)aeegu%		vt,aeegt$r   c                    U R                   R                  5       (       a  SOSnU R                   R                  5       (       a  SOSn[        U R                   SS9nUR                  S5        U R	                  U R                   R                  S5      U5        UR                  S5        U R	                  U R                   R                  S5      U5        UR                  S5        U R	                  U R                   R                  S5      U5        UR                  S5        U R	                  U R                   R                  S5      U5        UR                  S	5        U R	                  U R                   R                  S5      U5        g )
Nr   1r   r   rR   rS   Tr   r   )r(   r   r   r   r>   globalgetvar)r   truefalserC   s       r   test_setTestBooleanVar.test_set-  s   II))++qYY**,,#tyyv.	d//7>	c
//7?	b	//7>	a//7?	d//7>r   c                    U R                   R                  5       (       a  SOSn[        U R                   SS9nU R                  [        5         UR                  S5        S S S 5        U R                  U R                   R                  S5      U5        U R                   R                  SS5        U R                  [        5         UR                  5         S S S 5        U R                   R                  SS5        U R                  [        5         UR                  5         S S S 5        g ! , (       d  f       N= f! , (       d  f       Nj= f! , (       d  f       g = f)Nr   r   rR   rS   r   z1.0)r(   r   r   rl   r
   r   r>   r   rr   rq   r?   )r   r   rC   s      r   test_invalid_value_domain(TestBooleanVar.test_invalid_value_domain<  s    YY**,,#tyyv.x(EE'N )//7?		vw/z*EEG +		vu-z*EEG +* )( +* +*s$   D'D8E	'
D58
E	
Er0   N)	r   r   r   r   rD   r   r   r   r!   r0   r   r   r   r     s    &
%?r   r   c                       \ rS rSrS rSrg)DefaultRootTestiJ  c                 V   U R                  [        [        5        [        R                  " 5       n[        5       nUR                  S5        U R                  UR                  5       S5        UR                  5         [        R                  " 5         U R                  [        [        5        g rw   )
rl   RuntimeErrorr   r_   r`   r   r>   r?   rb   NoDefaultRoot)r   r(   rC   s      r   test_variableDefaultRootTest.test_variableL  sj    ,1zz|J	g'*,1r   r0   N)r   r   r   r   r   r!   r0   r   r   r   r   J  s    2r   r   __main__)unittesttestr   r   r_   r   r   r   r   r   r	   r
   test.supportr   test.test_tkinter.supportr   r   r   TestCaser$   r2   r   r   r   r   r   r   mainr0   r   r   <module>r      s      	    " J( x   vA8 vAr/H /& *H 6,X ,^
2-x/@/@ 
2 zMMO r   