a 4êdg*ã@s ddlZddlZddlZddlmZmZmZmZmZmZm Z ddl m Z ddl m Z Gdd„deƒZGdd„dejƒZGd d „d eƒZGd d „d eƒZGd d„deƒZGdd„deƒZGdd„deƒZGdd„de ejƒZeeeeeefZedkrddl mZeeŽdS)éN)ÚVariableÚ StringVarÚIntVarÚ DoubleVarÚ BooleanVarÚTclÚTclError)Ú ALWAYS_EQ)ÚAbstractDefaultRootTestcs$eZdZdZdZ‡fdd„Z‡ZS)ÚVarÚdefaultFcsd|_tƒ |¡dS)NT)Ú side_effectÚsuperÚset)ÚselfÚvalue©Ú __class__©úD/usr/local/lib/python3.9/tkinter/test/test_tkinter/test_variables.pyrszVar.set)Ú__name__Ú __module__Ú __qualname__Z_defaultr rÚ __classcell__rrrrr sr c@seZdZdd„Zdd„ZdS)ÚTestBasecCs tƒ|_dS©N)rÚroot©rrrrÚsetUpszTestBase.setUpcCs|`dSr)rrrrrÚtearDownszTestBase.tearDownN)rrrrrrrrrrsrc@sdeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dS)Ú TestVariablecGs|j |jjddg|¢RŽ¡S)NÚinfoÚexists)rZ getbooleanÚcall)rÚargsrrrÚ info_existsszTestVariable.info_existscCs.t|jƒ}| d| ¡¡| t|ƒd¡dS)NÚz ^PY_VAR(\d+)$)rrÚ assertEqualÚgetZ assertRegexÚstr©rÚvrrrÚ test_default"s zTestVariable.test_defaultcCs2t|jddƒ}| d| ¡¡| dt|ƒ¡dS)Nú sample stringÚvarname)rrr'r(r)r*rrrÚtest_name_and_value'sz TestVariable.test_name_and_valuecCsD| | d¡¡t|jddƒ}| | d¡¡~| | d¡¡dS)Nr.r-)Ú assertFalser%rrÚ assertTruer*rrrÚ test___del__,s zTestVariable.test___del__cCsT| | d¡¡t|jdd}t|jdd}~| | d¡¡~| | d¡¡dS)Nr.Úname©r3)r0r%rr)rÚv1Úv2rrrÚtest_dont_unset_not_existing3sz)TestVariable.test_dont_unset_not_existingcCsôt|jdd}t|jdd}| ||¡| ||¡t|jdd}| ||¡t|jdd}| t|ƒt|ƒ¡| ||¡tddiƒ}| ||ƒ¡| |tƒ¡| |t ¡t   ¡}|  |j ¡t|dd}| t|ƒt|ƒ¡| ||¡dS)NÚabcr4Zcbarr)rrZ assertIsNotr'ZassertNotEqualrr)ÚtypeÚobjectr ÚtkinterÚTkZ addCleanupÚdestroy)rr5r6Zv3Zv4ÚVÚroot2Zv5rrrÚ test_equality=s$        zTestVariable.test_equalitycCs<| t¡t|jddWdƒn1s.0YdS)Né{r4)Ú assertRaisesÚ TypeErrorrrrrrrÚtest_invalid_nameWs zTestVariable.test_invalid_namecCs| t¡t|jddWdƒn1s.0Y| t¡|j dd¡Wdƒn1sf0Y| t¡|j dd¡Wdƒn1sž0Y| t¡|j dd¡Wdƒn1sÖ0Y| t¡|j dd¡Wdƒn1s0YdS)Nzvarnamer4rsvarname)rBÚ ValueErrorrrÚ globalsetvarZsetvarrrrrÚtest_null_in_name[s , , , , zTestVariable.test_null_in_namecCs0t|jƒ}| |j¡| d¡| |j¡dS©Nr)r rr0r rr1r*rrrÚtest_initializegs   zTestVariable.test_initializecst|jƒ}t|ƒ}g‰‡fdd„}‡fdd„}| d|¡}| d|¡}| t| ¡ƒd|fd|fg¡| ˆg¡| d¡| ˆd|d d fg¡g‰| ¡| ˆd |d dfg¡g‰t| ¡ƒ}|  d |¡| t| ¡ƒ|¡|  t ¡|  dd¡Wdƒn1s0Y| t| ¡ƒ|¡|  d|d f¡| t| ¡ƒ|¡| ¡| ˆd |d dfg¡g‰|  d|¡| | ¡d|fg¡| ¡| ˆg¡g‰~t   ¡| d ¡| ˆd|d d fg¡g‰~t   ¡| ˆd|d dfg¡dS)Ncsˆ d|¡dS©N©Úread©Úappend©r$©ZtracerrÚ read_tracerrsz0TestVariable.test_trace_old..read_tracercsˆ d|¡dS©N)ÚwriterMrOrPrrÚ write_tracertsz1TestVariable.test_trace_old..write_tracerÚrZwuÚspamrSr&ÚwrLé+ÚeggsÚu)rrr)Ztrace_variabler'ÚsortedZ trace_vinforr(Z trace_vdeleterBrÚgcÚcollect)rr+ÚvnamerQrTZcb1Zcb2r!rrPrÚtest_trace_oldmsN           ,   zTestVariable.test_trace_oldcsât|jƒ}t|ƒ}g‰‡fdd„}‡fdd„}| d|¡}| ddg|¡}| t| ¡ƒd|fd |fg¡| ˆg¡| d ¡| ˆd|d dfg¡g‰| ¡| ˆd|d dfg¡g‰t| ¡ƒ}|  d|¡| t| ¡ƒ|¡|  t ¡|  dd ¡Wdƒn1s0Y| t| ¡ƒ|¡| ¡| ˆd|d dfg¡g‰|  d|¡| | ¡d |fg¡| ¡| ˆg¡g‰~t   ¡| d ¡| ˆd|d dfg¡g‰~t   ¡| ˆd|d dfg¡dS) Ncsˆ d|¡dSrJrMrOrPrrrQ£sz,TestVariable.test_trace..read_tracercsˆ d|¡dSrRrMrOrPrrrT¥sz-TestVariable.test_trace..write_tracerrLrSÚunsetrK)rSr`rVr&rY)rrr)Z trace_addr'r[Z trace_inforr(Z trace_removerBrr\r])rr+r^rQrTZtr1Ztr2r!rrPrÚ test_traceŸsP    þ     ,   zTestVariable.test_traceN)rrrr%r,r/r2r7r@rDrGrIr_rarrrrr s  2r c@s$eZdZdd„Zdd„Zdd„ZdS)Ú TestStringVarcCst|jƒ}| d| ¡¡dS)Nr&)rrr'r(r*rrrr,Ós zTestStringVar.test_defaultcCs@t|jddƒ}| d| ¡¡|j dd¡| d| ¡¡dS)Nr8r3r©rrr'r(rFr*rrrÚtest_get×szTestStringVar.test_getcCs@t|jddƒ}| d| ¡¡|j dd¡| d| ¡¡dS)Nzabcdefr3zvaluercr*rrrÚ test_get_nullÝszTestStringVar.test_get_nullN)rrrr,rdrerrrrrbÑsrbc@s$eZdZdd„Zdd„Zdd„ZdS)Ú TestIntVarcCst|jƒ}| d| ¡¡dS)Nr)rrr'r(r*rrrr,æs zTestIntVar.test_defaultcCs^t|jddƒ}| d| ¡¡|j dd¡| d| ¡¡|j dd¡| d| ¡¡dS)NrAr3Z345iYz876.5il)rrr'r(rFr*rrrrdês zTestIntVar.test_getcCsVt|jdd}|j dd¡| ttf¡| ¡Wdƒn1sH0YdS©Nr3r4r)rrrFrBrErr(r*rrrÚtest_invalid_valueòszTestIntVar.test_invalid_valueN)rrrr,rdrhrrrrrfäsrfc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú TestDoubleVarcCst|jƒ}| d| ¡¡dS)Ng)rrr'r(r*rrrr,ûs zTestDoubleVar.test_defaultcCs@t|jddƒ}| d| ¡¡|j dd¡| d| ¡¡dS)Nç®Gáz®ó?r3ú3.45çš™™™™™ @©rrZassertAlmostEqualr(rFr*rrrrdÿszTestDoubleVar.test_getcCs^t|jddƒ}| d| ¡¡|j dd¡| d| ¡¡|j dd¡| d| ¡¡dS)Nrjr3rkrlZ456iÈrmr*rrrÚtest_get_from_ints zTestDoubleVar.test_get_from_intcCsVt|jdd}|j dd¡| ttf¡| ¡Wdƒn1sH0YdSrg)rrrFrBrErr(r*rrrrh sz TestDoubleVar.test_invalid_valueN)rrrr,rdrnrhrrrrriùsric@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚTestBooleanVarcCst|jƒ}| | ¡d¡dS)NF)rrÚassertIsr(r*rrrr,s zTestBooleanVar.test_defaultcCs¨t|jddƒ}| | ¡d¡|j dd¡| | ¡d¡|j d|j ¡rRdnd¡| | ¡d¡|j dd¡| | ¡d¡|j dd¡| | ¡d¡dS) NTr3Ú0Fé*érÚon)rrrpr(rFÚ wantobjectsr*rrrrdszTestBooleanVar.test_getcCsÌ|j ¡rdnd}|j ¡r dnd}t|jdd}| d¡| |j d¡|¡| d¡| |j d¡|¡| d¡| |j d¡|¡| d¡| |j d¡|¡| d ¡| |j d¡|¡dS) NrsÚ1rrqr3r4Trrrt)rrurrr'Ú globalgetvar)rÚtrueÚfalser+rrrÚtest_set&s     zTestBooleanVar.test_setcCsì|j ¡rdnd}t|jdd}| t¡| d¡Wdƒn1sJ0Y| |j d¡|¡|j dd¡| t ¡|  ¡Wdƒn1sž0Y|j dd¡| t ¡|  ¡Wdƒn1sÞ0YdS)Nrrqr3r4rz1.0) rrurrBrrr'rwrFrEr()rryr+rrrÚtest_invalid_value_domain5s ( & z(TestBooleanVar.test_invalid_value_domainN)rrrr,rdrzr{rrrrros roc@seZdZdd„ZdS)ÚDefaultRootTestcCsT| tt¡t ¡}tƒ}| d¡| | ¡d¡| ¡t  ¡| tt¡dSrH) rBÚ RuntimeErrorrr;r<rr'r(r=Z NoDefaultRoot)rrr+rrrÚ test_variableEs  zDefaultRootTest.test_variableN)rrrr~rrrrr|Csr|Ú__main__)Ú run_unittest)Zunittestr\r;rrrrrrrZ test.supportr Ztkinter.test.supportr r ZTestCaserr rbrfriror|Z tests_guirr€rrrrÚs($    5/ ÿ