a 4êdgœOã@s¸ddlZddlZddlmZmZmZmZmZmZddl Z dZ eƒdkrJe Z e Zeƒdd…dkrdeZeƒZGdd„deƒZGdd „d ƒZGd d „d ƒZGd d „d ƒZdd„Zdd„ZdS)éN)ÚAbstractTkTestÚ tcl_versionÚ requires_tclÚget_tk_patchlevelÚ pixels_convÚ tcl_obj_eqF)ééé éc@sìeZdZeeƒZdZdZedd„ƒZ dd„Z de j fdd„Z eddd œd d „Zd0d d œdd„Zdd„Zdd„Zedœdd„Zdd„Zddœdd„Zdd„Zdd„Zdd œd!d"„Zdd d#œd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„ZdS)1ÚAbstractWidgetTestNFcCs:z|jWSty4t|j dd¡ƒ|_|jYS0dS)NÚtkÚscaling)Z_scalingÚAttributeErrorÚfloatÚrootÚcall)Úself©rú5/usr/local/lib/python3.9/tkinter/test/widget_tests.pyrs  zAbstractWidgetTest.scalingcCs<|js|jrtdkr|St|tƒr4d t|j|ƒ¡St|ƒS)N©réú ) Ú _stringifyÚ wantobjectsrÚ isinstanceÚtupleÚjoinÚmapÚ_strÚstr)rÚvaluerrrr$s  zAbstractWidgetTest._strcCs |||ƒrdS| |||¡dS©N)Ú assertEqual)rÚactualÚexpectedÚmsgÚeqrrrÚ assertEqual2+s zAbstractWidgetTest.assertEqual2)r%Úconvr'cCs²|||<|tur|}|r ||ƒ}|js,|jsJt|tƒrBt |¡}nt|ƒ}|durVt}|j ||||d|j |  |¡||d|  |¡}|  t |ƒd¡|j |d||ddS)N)r'r é)Ú _sentinelrrrrÚtkinterZ_joinr rr(ZcgetÚ configurer#Úlen)rÚwidgetÚnamer!r%r)r'ÚtrrrÚ checkParam0s     zAbstractWidgetTest.checkParamT)Ú keep_origcCsü||}|dur| |¡}| tj¡}|||<Wdƒn1sD0Y|durh| t|jƒ|¡|r~| |||¡n|||<| tj¡}| ||i¡Wdƒn1s¶0Y|durÚ| t|jƒ|¡|rð| |||¡n|||<dSr")ÚformatZ assertRaisesr,ZTclErrorr#r Ú exceptionr-)rr/r0r!Úerrmsgr3ZorigÚcmrrrÚcheckInvalidParamDs" &,z$AbstractWidgetTest.checkInvalidParamcOs$|D]}|j|||fi|¤ŽqdSr")r2)rr/r0ÚvaluesÚkwargsr!rrrÚ checkParamsZszAbstractWidgetTest.checkParamscOsT|j||g|¢Ri|¤Ž|j||ddd|j||ddd|j||ddddS)NÚzexpected integer but got ""©r6Ú10pzexpected integer but got "10p"gš™™™™™ @zexpected integer but got "3.2"©r;r8)rr/r0r9r:rrrÚcheckIntegerParam^s ÿ ÿ ÿz$AbstractWidgetTest.checkIntegerParam©r)cOsL|D]}|j|||fd|i|¤Žq|j||ddd|j||ddddS)Nr)r<z)expected floating-point number but got ""r=Úspamz-expected floating-point number but got "spam"©r2r8)rr/r0r)r9r:r!rrrÚcheckFloatParamgs ÿ ÿz"AbstractWidgetTest.checkFloatParamcCs`dD]}|j|||ddqdD]}|j|||ddq |j||ddd|j||d d ddS) N)FrZfalseÚnoZoffr)r%)TéÚtrueZyesZonrFr<z!expected boolean value but got ""r=rBz%expected boolean value but got "spam"rC)rr/r0r!rrrÚcheckBooleanParamos ÿ ÿz$AbstractWidgetTest.checkBooleanParam)Ú allow_emptyc Ks>|j||ddddddddd d f i|¤Ž|j||d d d dS)Nz#ff0000z#00ff00z#0000ffz#123456ZredZgreenZblueZwhiteZblackZgreyrBzunknown color name "spam"r=r?)rr/r0rIr:rrrÚcheckColorParamys þý ÿz"AbstractWidgetTest.checkColorParamcKsH|j||ddddfi|¤Žtdkr2| ||d¡|j||ddd dS) NZarrowZwatchZcrossr<)rr ÚnonerBzbad cursor spec "spam"r=)r;rr2r8)rr/r0r:rrrÚcheckCursorParams  ÿz#AbstractWidgetTest.checkCursorParamcCs0dd„}|||<| ||¡| ||d¡dS)NcWsdSr"r)ÚargsrrrÚcommand‰sz5AbstractWidgetTest.checkCommandParam..commandr<)Z assertTruer;)rr/r0rNrrrÚcheckCommandParamˆsz$AbstractWidgetTest.checkCommandParamr=cOsˆ|j||g|¢Ri|¤Ž|durrd|d |dd…¡t|ƒdkrFdnd|df}|j||dd|dd |}|j||d |ddS) Nz %s "{}": must be %s%s or %sz, éÿÿÿÿéú,r<Z ambiguousr=ZbadrB)r;rr.r8)rr/r0r6r9r:Zerrmsg2rrrÚcheckEnumParamsü ÿz!AbstractWidgetTest.checkEnumParam)r)r3c Os|dur|j}|D]P}t}|} t|tƒrF| rF| turFt|ƒ|j}t} |j|||f|| dœ|¤Žq|j||dd|d|j||dd|ddS)N©r%r)Z6xzbad screen distance "6x")r6r3rBzbad screen distance "spam") Ú _conv_pixelsr+rr rrÚroundr2r8) rr/r0r)r3r9r:r!r%Zconv1rrrÚcheckPixelsParamœs(  ÿÿ ÿ ÿz#AbstractWidgetTest.checkPixelsParamc Cs>| ||dddddd¡d}tdkr(d}|j||d |d dS) NZflatZgrooveZraisedZridgeZsolidZsunkenzHbad relief "spam": must be flat, groove, raised, ridge, solid, or sunkenrrBr=)r;rr8)rr/r0r6rrrÚcheckReliefParam®s ÿ ÿz#AbstractWidgetTest.checkReliefParamcCs@tj|jdd}|j|||td|j||dddd||<dS)NZimage1)Zmasterr0rArBzimage "spam" doesn't existr=r<)r,Z PhotoImagerr2r r8)rr/r0ÚimagerrrÚcheckImageParam¸s  ÿz"AbstractWidgetTest.checkImageParamcCs|j|||tddS)NrA)r2r )rr/r0ÚvarrrrÚcheckVariableParam¿sz%AbstractWidgetTest.checkVariableParamcCs^| |¡| |t¡t|ƒdkr2| d|f¡|D]"}t|tƒs6| d|f¡qZq6dS)Nr*zInvalid bounding box: %r)ZassertIsNotNoneZassertIsInstancerr.ZfailrÚint)rZbboxÚitemrrrÚassertIsBoundingBoxÂs    z&AbstractWidgetTest.assertIsBoundingBoxcCs®| ¡}| ¡}| t|ƒt| ¡ƒ¡|D] }||q,tjjrªddddddœ}t|ƒ}t|j ƒ}t||ƒD]8}||vr”|||vr”|||vspt d|j j |fƒqpdS)NÚ borderwidthÚ backgroundÚ foregroundZinvalidcommandZvalidatecommand)ÚbdÚbgÚfgZinvcmdZvcmdz%s.OPTIONS doesn't contain "%s") ÚcreateÚkeysr#Úsortedr-ÚtestÚsupportÚverboseÚsetÚOPTIONSÚprintÚ __class__Ú__name__)rr/rgÚkÚaliasesr%rrrÚ test_keysÍs. û  ÿ þ ÿzAbstractWidgetTest.test_keys)N) rpÚ __module__Ú __qualname__Ú staticmethodÚ pixels_roundrUÚ_conv_pad_pixelsrÚpropertyrrÚobjectÚ__eq__r(r+r2r8r;r@rrDrHrJrLrOrSrWrXrZr\r_rsrrrrr s8 ÿ ÿ   ÿ   r c@sÄeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Zd6d7„Zd8d9„Zd:d;„Z dd?„Z"d@dA„Z#dBdC„Z$dDdE„Z%dFdG„Z&dHdI„Z'dJdK„Z(dLdM„Z)dNdO„Z*dPdQ„Z+dRdS„Z,dTdU„Z-dVdW„Z.dXdY„Z/dZd[„Z0d\d]„Z1d^d_„Z2d`da„Z3dbdc„Z4e5dddeƒdfdg„ƒZ6e5dddeƒdhdi„ƒZ7djdk„Z8dlS)mÚStandardOptionsTests)*ÚactivebackgroundÚactiveborderwidthÚactiveforegroundÚanchorraÚbitmapr`ÚcompoundÚcursorÚdisabledforegroundÚexportselectionÚfontrbÚhighlightbackgroundÚhighlightcolorÚhighlightthicknessrYÚinsertbackgroundÚinsertborderwidthÚ insertofftimeÚ insertontimeÚ insertwidthÚjumpÚjustifyÚorientÚpadxÚpadyÚreliefÚ repeatdelayÚrepeatintervalÚselectbackgroundÚselectborderwidthÚselectforegroundÚsetgridÚ takefocusÚtextÚ textvariableÚ troughcolorÚ underlineÚ wraplengthÚxscrollcommandÚyscrollcommandcCs| ¡}| |d¡dS)Nr}©rfrJ©rr/rrrÚtest_configure_activebackgroundõsz4StandardOptionsTests.test_configure_activebackgroundc Cs$| ¡}| |ddddddd¡dS)Nr~rçÍÌÌÌÌÌô?g333333@réþÿÿÿr>©rfrWr¤rrrÚ test_configure_activeborderwidthùs ÿz5StandardOptionsTests.test_configure_activeborderwidthcCs| ¡}| |d¡dS)Nrr£r¤rrrÚtest_configure_activeforegroundþsz4StandardOptionsTests.test_configure_activeforegroundc Cs*| ¡}| |ddddddddd d ¡ dS) Nr€ÚnÚneÚeZseÚsÚswÚwZnwÚcenter©rfrSr¤rrrÚtest_configure_anchorsÿz*StandardOptionsTests.test_configure_anchorcCs.| ¡}| |d¡d|jvr*| |d¡dS)Nrard©rfrJrmr¤rrrÚtest_configure_backgrounds  z.StandardOptionsTests.test_configure_backgroundcCs~| ¡}| |dd¡| |dd¡tjjddd}| |dd|¡d|jj d d ¡vrhd |j ¡vsz|j |dd d ddS)NrZ questheadZgray50z python.xbmZ imghdrdata)Zsubdirú@Zaquar ZwindowingsystemZAppKitrBzbitmap "spam" not definedr=) rfr2rirjZfindfilerr rZ winfo_serverr8)rr/ÚfilenamerrrÚtest_configure_bitmap s ÿ ÿz*StandardOptionsTests.test_configure_bitmapc CsF| ¡}| |ddddddd¡d|jvrB| |ddddddd¡dS) Nr`rr¦çÍÌÌÌÌÌ@rr§r>rc)rfrWrmr¤rrrÚtest_configure_borderwidths  ÿ z/StandardOptionsTests.test_configure_borderwidthc Cs$| ¡}| |ddddddd¡dS)Nr‚Zbottomr±ÚleftrKÚrightÚtopr²r¤rrrÚtest_configure_compound!s ÿz,StandardOptionsTests.test_configure_compoundcCs| ¡}| |d¡dS)Nrƒ)rfrLr¤rrrÚtest_configure_cursor&sz*StandardOptionsTests.test_configure_cursorcCs| ¡}| |d¡dS)Nr„r£r¤rrrÚ!test_configure_disabledforeground*sz6StandardOptionsTests.test_configure_disabledforegroundcCs| ¡}| |d¡dS)Nr…©rfrHr¤rrrÚtest_configure_exportselection.sz3StandardOptionsTests.test_configure_exportselectioncCs,| ¡}| |dd¡|j|dddddS)Nr†z3-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*r<zfont "" doesn't existr=)rfr2r8r¤rrrÚtest_configure_font2sÿ ÿz(StandardOptionsTests.test_configure_fontcCs.| ¡}| |d¡d|jvr*| |d¡dS)Nrbrer´r¤rrrÚtest_configure_foreground9s  z.StandardOptionsTests.test_configure_foregroundcCs| ¡}| |d¡dS)Nr‡r£r¤rrrÚ"test_configure_highlightbackground?sz7StandardOptionsTests.test_configure_highlightbackgroundcCs| ¡}| |d¡dS)Nrˆr£r¤rrrÚtest_configure_highlightcolorCsz2StandardOptionsTests.test_configure_highlightcolorc Cs8| ¡}| |dddddd¡|j|ddd|jddS) Nr‰rr¦r¹rr>r§rT)rfrWr2rUr¤rrrÚ!test_configure_highlightthicknessGs ÿ ÿz6StandardOptionsTests.test_configure_highlightthicknesscCs| ¡}| |d¡dS)NrY©rfrZr¤rrrÚtest_configure_imageNsz)StandardOptionsTests.test_configure_imagecCs| ¡}| |d¡dS)NrŠr£r¤rrrÚtest_configure_insertbackgroundRsz4StandardOptionsTests.test_configure_insertbackgroundc Cs$| ¡}| |ddddddd¡dS)Nr‹rr¦r¹rr§r>r¨r¤rrrÚ test_configure_insertborderwidthVs ÿz5StandardOptionsTests.test_configure_insertborderwidthcCs| ¡}| |dd¡dS)NrŒéd©rfr@r¤rrrÚtest_configure_insertofftime[sz1StandardOptionsTests.test_configure_insertofftimecCs| ¡}| |dd¡dS)NrrÌrÍr¤rrrÚtest_configure_insertontime_sz0StandardOptionsTests.test_configure_insertontimecCs | ¡}| |ddddd¡dS)NrŽr¦r¹r§r>r¨r¤rrrÚtest_configure_insertwidthcsz/StandardOptionsTests.test_configure_insertwidthcCs| ¡}| |d¡dS)NrrÁr¤rrrÚtest_configure_jumpgsz(StandardOptionsTests.test_configure_jumpcCs4| ¡}|j|dddddd|j|dddddS) Nrr»r¼r±z6bad justification "{}": must be left, right, or centerr=r<z:ambiguous justification "": must be left, right, or center)rfrSr8r¤rrrÚtest_configure_justifyksÿ ÿz+StandardOptionsTests.test_configure_justifycCs2| ¡}| t|dƒ|j¡| |ddd¡dS)Nr‘Z horizontalZvertical)rfr#r Zdefault_orientrSr¤rrrÚtest_configure_orienttsz*StandardOptionsTests.test_configure_orientc Cs(| ¡}|j|dddddd|jddS)Nr’r çš™™™™™@çffffff@r§Ú12mrA©rfrWrxr¤rrrÚtest_configure_padxysÿz(StandardOptionsTests.test_configure_padxc Cs(| ¡}|j|dddddd|jddS)Nr“r rÔrÕr§rÖrAr×r¤rrrÚtest_configure_pady~sÿz(StandardOptionsTests.test_configure_padycCs| ¡}| |d¡dS)Nr”©rfrXr¤rrrÚtest_configure_reliefƒsz*StandardOptionsTests.test_configure_reliefcCs| ¡}| |ddd¡dS)Nr•é þÿÿéôrÍr¤rrrÚtest_configure_repeatdelay‡sz/StandardOptionsTests.test_configure_repeatdelaycCs| ¡}| |ddd¡dS)Nr–rÜrÝrÍr¤rrrÚtest_configure_repeatinterval‹sz2StandardOptionsTests.test_configure_repeatintervalcCs| ¡}| |d¡dS)Nr—r£r¤rrrÚtest_configure_selectbackgroundsz4StandardOptionsTests.test_configure_selectbackgroundcCs | ¡}| |ddddd¡dS)Nr˜r¦r¹r§r>r¨r¤rrrÚ test_configure_selectborderwidth“sz5StandardOptionsTests.test_configure_selectborderwidthcCs| ¡}| |d¡dS)Nr™r£r¤rrrÚtest_configure_selectforeground—sz4StandardOptionsTests.test_configure_selectforegroundcCs| ¡}| |d¡dS)NršrÁr¤rrrÚtest_configure_setgrid›sz+StandardOptionsTests.test_configure_setgridcCs| ¡}| |dddd¡dS)NÚstateZactiveÚdisabledZnormalr²r¤rrrÚtest_configure_stateŸsz)StandardOptionsTests.test_configure_statecCs| ¡}| |dddd¡dS)Nr›Ú0Ú1r<©rfr;r¤rrrÚtest_configure_takefocus£sz-StandardOptionsTests.test_configure_takefocuscCs| ¡}| |ddd¡dS)Nrœr<z any stringrér¤rrrÚtest_configure_text§sz(StandardOptionsTests.test_configure_textcCs&| ¡}t |j¡}| |d|¡dS)Nr)rfr,Z StringVarrr\©rr/r[rrrÚtest_configure_textvariable«s z0StandardOptionsTests.test_configure_textvariablecCs| ¡}| |d¡dS)Nržr£r¤rrrÚtest_configure_troughcolor°sz/StandardOptionsTests.test_configure_troughcolorcCs| ¡}| |dddd¡dS)NrŸrrFé rÍr¤rrrÚtest_configure_underline´sz-StandardOptionsTests.test_configure_underlinecCs| ¡}| |dd¡dS)Nr rÌr¨r¤rrrÚtest_configure_wraplength¸sz.StandardOptionsTests.test_configure_wraplengthcCs| ¡}| |d¡dS)Nr¡©rfrOr¤rrrÚtest_configure_xscrollcommand¼sz2StandardOptionsTests.test_configure_xscrollcommandcCs| ¡}| |d¡dS)Nr¢ròr¤rrrÚtest_configure_yscrollcommandÀsz2StandardOptionsTests.test_configure_yscrollcommandcCs| ¡}| |d¡dS)NrNròr¤rrrÚtest_configure_commandÆsz+StandardOptionsTests.test_configure_commandcCs| ¡}| |d¡dS)NZ indicatoronrÁr¤rrrÚtest_configure_indicatoronÊsz/StandardOptionsTests.test_configure_indicatoroncCs| ¡}| |d¡dS)NZ offreliefrÚr¤rrrÚtest_configure_offreliefÎsz-StandardOptionsTests.test_configure_offreliefcCs| ¡}| |d¡dS)NZ overreliefrÚr¤rrrÚtest_configure_overreliefÒsz.StandardOptionsTests.test_configure_overreliefcCs| ¡}| |d¡dS)NZ selectcolorr£r¤rrrÚtest_configure_selectcolorÖsz/StandardOptionsTests.test_configure_selectcolorcCs| ¡}| |d¡dS)NZ selectimagerÈr¤rrrÚtest_configure_selectimageÚsz/StandardOptionsTests.test_configure_selectimagerr cCs| ¡}| |d¡dS)NZ tristateimagerÈr¤rrrÚtest_configure_tristateimageÞsz1StandardOptionsTests.test_configure_tristateimagecCs| ¡}| |dd¡dS)NZ tristatevalueZ unknowable)rfr2r¤rrrÚtest_configure_tristatevalueãsz1StandardOptionsTests.test_configure_tristatevaluecCs&| ¡}t |j¡}| |d|¡dS)NÚvariable)rfr,Z DoubleVarrr\rìrrrÚtest_configure_variableès z,StandardOptionsTests.test_configure_variableN)9rprtruZSTANDARD_OPTIONSr¥r©rªr³rµr¸rºr¾r¿rÀrÂrÃrÄrÅrÆrÇrÉrÊrËrÎrÏrÐrÑrÒrÓrØrÙrÛrÞrßràrárârãrærêrërírîrðrñrórôrõrör÷rørùrúrrûrürþrrrrr|æsn    r|c@seZdZdd„Zdd„ZdS)ÚIntegerSizeTestscCs| ¡}| |dddd¡dS)NÚheightrÌéœÿÿÿrrÍr¤rrrÚtest_configure_heightïsz&IntegerSizeTests.test_configure_heightcCs| ¡}| |dddd¡dS)NÚwidthé’énþÿÿrrÍr¤rrrÚtest_configure_widthósz%IntegerSizeTests.test_configure_widthN©rprtrurrrrrrrÿîsrÿc@seZdZdd„Zdd„ZdS)ÚPixelSizeTestsc Cs$| ¡}| |ddddddd¡dS)NrrÌgÍÌÌÌÌLY@gfffff¦Y@rrZ3cr¨r¤rrrrùsz$PixelSizeTests.test_configure_heightc Cs$| ¡}| |ddddddd¡dS)Nrrgfffff6y@gš™™™™Iy@rrZ5ir¨r¤rrrrýsz#PixelSizeTests.test_configure_widthNrrrrrrøsrcs‡fdd„}|S)NcsnˆjD]b}d|}tˆ|ƒsˆD]$}t||ƒr tˆ|t||ƒƒqq |f‡fdd„ }||_tˆ||ƒqˆS)NZtest_configure_cs&| ¡}||td|ˆjfƒ‚dS)NzOption "%s" is not tested in %s)rfÚAssertionErrorrp)rÚoptionr/©Úclsrrris ÿz5add_standard_options..decorator..test)rmÚhasattrÚsetattrÚgetattrrp)r r Z methodnameZ source_classri©Úsource_classesr rÚ decorators   ÿz'add_standard_options..decoratorr)rrrrrÚadd_standard_optionss rcCs&tjjr"t ¡}td| dd¡ƒdS)Nz patchlevel =ÚinfoZ patchlevel)rirjrkr,ZTclrnr)ZtclrrrÚ setUpModulesr)Zunittestr,Ztkinter.test.supportrrrrrrZ test.supportriZnoconvr rVrwr]rzr+r r|rÿrrrrrrrÚs&  P