U Ä:âePã@sÀddlZddlZddlZddlmZmZmZmZmZm Z ddl Z dZ eƒdkrRe Z eZeƒdd…dkrleZeƒ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|jWStk r6t|j dd¡ƒ|_|jYSXdS)NÚtkÚscaling)Z_scalingÚAttributeErrorÚfloatÚrootÚcall)Úself©rú>/usr/local/python38/lib/python3.8/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²|||<|tkr|}|r ||ƒ}|js,|jsJt|tƒrBt |¡}nt|ƒ}|dkrVt}|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Ú checkParam1s     zAbstractWidgetTest.checkParamT)Ú keep_origc CsÔ||}|dk r| |¡}| tj¡}|||<W5QRX|dk rT| t|jƒ|¡|rj| |||¡n|||<| tj¡}| ||i¡W5QRX|dk r²| t|jƒ|¡|rÈ| |||¡n|||<dSr")ÚformatZ assertRaisesr,ZTclErrorr#r Ú exceptionr-)rr/r0r!Úerrmsgr3ZorigÚcmrrrÚcheckInvalidParamEs" z$AbstractWidgetTest.checkInvalidParamcOs |D]}|j|||f|ŽqdSr")r2)rr/r0ÚvaluesÚkwargsr!rrrÚ checkParams[szAbstractWidgetTest.checkParamscOsN|j||f|ž|Ž|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ÚcheckFloatParamhs ÿ ÿ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ÚcheckBooleanParamps ÿ ÿz$AbstractWidgetTest.checkBooleanParam)Ú allow_emptyc Ks:|j||ddddddddd d f |Ž|j||d d d dS)Nz#ff0000z#00ff00z#0000ffz#123456ZredZgreenZblueZwhiteZblackZgreyrBzunknown color name "spam"r=r?)rr/r0rIr:rrrÚcheckColorParamzs"þý ÿz"AbstractWidgetTest.checkColorParamcKsD|j||ddddf|Žtdkr.| ||d¡|j||ddd dS) NZarrowZwatchZcrossr<)rr ÚnonerBzbad cursor spec "spam"r=)r;rr2r8)rr/r0r:rrrÚcheckCursorParam‚s  ÿz#AbstractWidgetTest.checkCursorParamcCs0dd„}|||<| ||¡| ||d¡dS)NcWsdSr"r)ÚargsrrrÚcommandŠsz5AbstractWidgetTest.checkCommandParam..commandr<)Z assertTruer;)rr/r0rNrrrÚcheckCommandParam‰sz$AbstractWidgetTest.checkCommandParamr=cOs‚|j||f|ž|Ž|dkrld|d |dd…¡t|ƒdkr@dnd|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|dkr|j}|D]P}t}|} t|tƒrF| rF| tk rFt|ƒ|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ÚcheckPixelsParams,  ÿÿ ÿ ÿ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}||kr”|||kr”|||kspt 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 s< ÿ ÿ   ÿ   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!„Ze ejd"kd#¡d$d%„ƒZd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Z d6d7„Z!d8d9„Z"d: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„Z0dVdW„Z1dXdY„Z2dZd[„Z3d\d]„Z4d^d_„Z5d`da„Z6dbdc„Z7ddde„Z8e9dfdgƒdhdi„ƒZ:e9dfdgƒdjdk„ƒZ;dldm„Z©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|jkr*| |d¡dS)Nrard©rfrJrmr¤rrrÚtest_configure_backgrounds  z.StandardOptionsTests.test_configure_backgroundcCs~| ¡}| |dd¡| |dd¡tjjddd}| |dd|¡d|jj d d ¡krhd |j ¡ksz|j |dd d ddS)NrZ questheadZgray50z python.xbmZ imghdrdata)Zsubdirú@Zaquar ZwindowingsystemZAppKitrBzbitmap "spam" not definedr=) rfr2rirjZfindfilerr rZ winfo_serverr8)rr/ÚfilenamerrrÚtest_configure_bitmaps ÿ ÿz*StandardOptionsTests.test_configure_bitmapc CsF| ¡}| |ddddddd¡d|jkrB| |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_font3sÿ ÿz(StandardOptionsTests.test_configure_fontcCs.| ¡}| |d¡d|jkr*| |d¡dS)Nrbrer´r¤rrrÚtest_configure_foreground:s  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_highlightcolorDsz2StandardOptionsTests.test_configure_highlightcolorc Cs8| ¡}| |dddddd¡|j|ddd|jddS) Nr‰rr¦r¹rr>r§rT)rfrWr2rUr¤rrrÚ!test_configure_highlightthicknessHsÿ ÿz6StandardOptionsTests.test_configure_highlightthicknessÚdarwinz"crashes with Cocoa Tk (issue19733)cCs| ¡}| |d¡dS)NrY©rfrZr¤rrrÚtest_configure_imageOsz)StandardOptionsTests.test_configure_imagecCs| ¡}| |d¡dS)NrŠr£r¤rrrÚtest_configure_insertbackgroundUsz4StandardOptionsTests.test_configure_insertbackgroundc Cs$| ¡}| |ddddddd¡dS)Nr‹rr¦r¹rr§r>r¨r¤rrrÚ test_configure_insertborderwidthYsÿ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_insertontimebsz0StandardOptionsTests.test_configure_insertontimecCs | ¡}| |ddddd¡dS)NrŽr¦r¹r§r>r¨r¤rrrÚtest_configure_insertwidthfsz/StandardOptionsTests.test_configure_insertwidthcCs| ¡}| |d¡dS)NrrÁr¤rrrÚtest_configure_jumpjsz(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_justifynsÿ ÿz+StandardOptionsTests.test_configure_justifycCs2| ¡}| t|dƒ|j¡| |ddd¡dS)Nr‘Z horizontalZvertical)rfr#r Zdefault_orientrSr¤rrrÚtest_configure_orientwsz*StandardOptionsTests.test_configure_orientc Cs(| ¡}|j|dddddd|jddS)Nr’r çš™™™™™@çffffff@r§Ú12mrA©rfrWrxr¤rrrÚtest_configure_padx|sÿz(StandardOptionsTests.test_configure_padxc Cs(| ¡}|j|dddddd|jddS)Nr“r rÕrÖr§r×rArØr¤rrrÚtest_configure_padysÿ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_selectbackground’sz4StandardOptionsTests.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)=rprtruZSTANDARD_OPTIONSr¥r©rªr³rµr¸rºr¾r¿rÀrÂrÃrÄrÅrÆrÇÚunittestZskipIfÚsysÚplatformrÊ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|çst  ÿ    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©rprtrurr rrrrrñsrc@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@r rZ5ir¨r¤rrrr sz#PixelSizeTests.test_configure_widthNr rrrrr ûsr cs‡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)rrZ methodnameZ source_classri©Úsource_classesrrÚ decorator s   ÿz'add_standard_options..decoratorr)rrrrrÚadd_standard_optionss rcCs&tjjr"t ¡}td| dd¡ƒdS)Nz patchlevel =ÚinfoZ patchlevel)rirjrkr,ZTclrnr)ZtclrrrÚ setUpModulesr)rrr,Ztkinter.test.supportrrrrrrZ test.supportriZnoconvr rVrwr]rzr+r r|rr rrrrrrÚs(  P