
    daf6*                     l   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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 j4                          yy)    N)support)Variable	StringVarIntVar	DoubleVar
BooleanVarTclTclError)	ALWAYS_EQ)AbstractDefaultRootTestc                   &     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     ;/root/Python-3.12.4/Lib/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"   r3   r4   r6   r7   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;   )assertFalser0   r   r"   
assertTruer   
gc_collectr7   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rD   )r?   r0   r   r"   r   rA   )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abcrE   cbar   r'   )r   r"   assertIsNotr3   assertNotEqualr   r6   typeobjectr   tkinterTk
addCleanupdestroy)r   rF   rG   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{   rE   )assertRaises	TypeErrorr   r"   r#   s    r   test_invalid_namezTestVariable.test_invalid_name\   s3    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 namerE   r   s   var name)r\   
ValueErrorr   r"   globalsetvarsetvarr#   s    r   test_null_in_namezTestVariable.test_null_in_name`   s   z* 	4TYY]3	4z* 	;II""=':	;z* 	<II"">7;	<z* 	5II]G4	5z* 	6II^W5	6 	6	4 	4	; 	;	< 	<	5 	5	6 	6s;   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   r@   r7   s     r   test_initializezTestVariable.test_initializel   s<    		N'	g&r   c                    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)Nc                  .    j                  d| z          y Nreadappendr/   traces    r   read_tracerz0TestVariable.test_trace_old.<locals>.read_tracerw       LLT)*r   c                  .    j                  d| z          y N)writerl   rn   s    r   write_tracerz1TestVariable.test_trace_old.<locals>.write_tracery       LLd*+r   rwuspamrt   r2   wrk   +   eggsu)r   r"   r6   trace_variabler3   sortedtrace_vinfor   r4   trace_vdeleter\   r
   gccollect)	r   r8   vnamerp   ru   cb1cb2r+   ro   s	           @r   test_trace_oldzTestVariable.test_trace_oldr   s_   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   J>>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 ri   rl   rn   s    r   rp   z,TestVariable.test_trace.<locals>.read_tracer   rq   r   c                  .    j                  d| z          y rs   rl   rn   s    r   ru   z-TestVariable.test_trace.<locals>.write_tracer   rv   r   rk   rt   unsetrj   )rt   r   ry   r2   r|   )r   r"   r6   	trace_addr3   r   
trace_infor   r4   trace_remover\   r
   r   r   )	r   r8   r   rp   ru   tr1tr2r+   ro   s	           @r   
test_tracezTestVariable.test_trace   s@   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   r0   r9   r=   rB   rH   rY   r^   rc   rf   r   r   r'   r   r   r)   r)      s<    M3
,
6
3$4*
6'0=d/Ar   r)   c                       e Zd Zd Zd Zd Zy)TestStringVarc                 n    t        | j                        }| j                  d|j                                y )Nr2   )r   r"   r3   r4   r7   s     r   r9   zTestStringVar.test_default   s&    dii QUUW%r   c                     t        | j                  dd      }| j                  d|j                                | j                  j	                  dd       | j                  d|j                                y )NrJ   rD   r   r   r"   r3   r4   ra   r7   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 defrD   zval uer   r7   s     r   test_get_nullzTestStringVar.test_get_null   sT    diiv6quuw/		v{3aeeg.r   N)r   r   r   r9   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"   r3   r4   r7   s     r   r9   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[   rD   345iY  z876.5il  )r   r"   r3   r4   ra   r7   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NrD   rE   r   )r   r"   ra   r\   r`   r
   r4   r7   s     r   test_invalid_valuezTestIntVar.test_invalid_value   sW    4996*		vw/
H56 	EEG	 	 	   A))A2N)r   r   r   r9   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"   r3   r4   r7   s     r   r9   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?rD   3.45皙@r   r"   assertAlmostEqualr4   ra   r7   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   rD   r   r   456i  r   r7   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"   ra   r\   r`   r
   r4   r7   s     r   r   z TestDoubleVar.test_invalid_value  sW    diif-		vw/
H56 	EEG	 	 	r   N)r   r   r   r9   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"   assertIsr4   r7   s     r   r9   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 )	NTrD   0F*      r   on)r   r"   r   r4   ra   wantobjectsr7   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   rD   rE   Tr   r   )r"   r   r   r   r3   globalgetvar)r   truefalser8   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   rD   rE   r   z1.0)r"   r   r   r\   r
   r   r3   r   ra   r`   r4   )r   r   r8   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   r9   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 re   )
r\   RuntimeErrorr   rP   rQ   r   r3   r4   rS   NoDefaultRoot)r   r"   r8   s      r   test_variablezDefaultRootTest.test_variableJ  sj    ,1zz|J	g'*,1r   N)r   r   r   r   r'   r   r   r   r   H  s    2r   r   __main__)unittesttestr   r   rP   r   r   r   r   r   r	   r
   test.supportr   test.test_tkinter.supportr   r   TestCaser   r)   r   r   r   r   r   r   mainr'   r   r   <module>r      s      	    " =( x   tA8 tAn/H /& *H 6,X ,^
2-x/@/@ 
2 zHMMO r   