a
    ãzeœO  ã                   @   s¸   d dl Z d dlZd dlmZmZmZmZmZmZ d dl	Z
dZeƒ dk rJeZeZeƒ dd… dkrdeZeƒ ZG dd„ deƒZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZdd„ Zdd„ ZdS )é    N)ÚAbstractTkTestÚtcl_versionÚrequires_tclÚget_tk_patchlevelÚpixels_convÚ
tcl_obj_eqF)é   é   é   é   c                   @   sì   e Zd ZeeƒZdZdZedd„ ƒZ	dd„ Z
dejfdd„Zeddd	œd
d„Zd0ddœdd„Zdd„ Zdd„ Zedœdd„Zdd„ Zddœdd„Zdd„ Zdd„ Zdd œd!d"„Zddd#œd$d%„Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ ZdS )1ÚAbstractWidgetTestNFc                 C   s:   z| j W S  ty4   t| j dd¡ƒ| _ | j  Y S 0 d S )NÚtkÚscaling)Z_scalingÚAttributeErrorÚfloatÚrootÚcall)Úself© r   ú//usr/lib/python3.9/tkinter/test/widget_tests.pyr      s
    zAbstractWidgetTest.scalingc                 C   s<   | j s| jrtdkr|S t|tƒr4d t| j|ƒ¡S t|ƒS )N©r   é   ú )	Ú
_stringifyÚwantobjectsr   Ú
isinstanceÚtupleÚjoinÚmapÚ_strÚstr)r   Úvaluer   r   r   r   $   s
    
zAbstractWidgetTest._strc                 C   s    |||ƒrd S |   |||¡ d S ©N)ÚassertEqual)r   ÚactualÚexpectedÚmsgÚeqr   r   r   ÚassertEqual2+   s    
zAbstractWidgetTest.assertEqual2)r%   Úconvr'   c                C   s²   |||< |t u r|}|r ||ƒ}| js,| jsJt|tƒrBt |¡}nt|ƒ}|d u rVt}| j	|| ||d | j	| 
|¡||d | |¡}|  t|ƒd¡ | j	|d ||d d S )N)r'   r	   é   )Ú	_sentinelr   r   r   r   ÚtkinterZ_joinr    r   r(   ZcgetÚ	configurer#   Úlen)r   ÚwidgetÚnamer!   r%   r)   r'   Útr   r   r   Ú
checkParam0   s     

zAbstractWidgetTest.checkParamT)Ú	keep_origc                C   sü   || }|d ur|  |¡}|  tj¡}|||< W d   ƒ n1 sD0    Y  |d urh|  t|jƒ|¡ |r~|  || |¡ n|||< |  tj¡}| ||i¡ W d   ƒ n1 s¶0    Y  |d urÚ|  t|jƒ|¡ |rð|  || |¡ n|||< d S r"   )ÚformatZassertRaisesr,   ZTclErrorr#   r    Ú	exceptionr-   )r   r/   r0   r!   Úerrmsgr3   ZorigÚcmr   r   r   ÚcheckInvalidParamD   s"    
&,z$AbstractWidgetTest.checkInvalidParamc                 O   s$   |D ]}| j |||fi |¤Ž qd S r"   )r2   )r   r/   r0   ÚvaluesÚkwargsr!   r   r   r   ÚcheckParamsZ   s    zAbstractWidgetTest.checkParamsc                 O   sT   | j ||g|¢R i |¤Ž | j||ddd | j||ddd | j||ddd d S )NÚ zexpected integer but got ""©r6   Ú10pzexpected integer but got "10p"gš™™™™™	@zexpected integer but got "3.2"©r;   r8   )r   r/   r0   r9   r:   r   r   r   ÚcheckIntegerParam^   s    
ÿ
ÿ
ÿz$AbstractWidgetTest.checkIntegerParam©r)   c                O   sL   |D ]}| j |||fd|i|¤Ž q| j||ddd | j||ddd d S )Nr)   r<   z)expected floating-point number but got ""r=   Úspamz-expected floating-point number but got "spam"©r2   r8   )r   r/   r0   r)   r9   r:   r!   r   r   r   ÚcheckFloatParamg   s    
ÿ
ÿz"AbstractWidgetTest.checkFloatParamc                 C   s`   dD ]}| j |||dd qdD ]}| j |||dd q | j||ddd | j||d	d
d d S )N)Fr   ZfalseÚnoZoffr   )r%   )Té   ÚtrueZyesZonrF   r<   z!expected boolean value but got ""r=   rB   z%expected boolean value but got "spam"rC   )r   r/   r0   r!   r   r   r   ÚcheckBooleanParamo   s    
ÿ
ÿz$AbstractWidgetTest.checkBooleanParam)Úallow_emptyc                K   s>   | j ||ddddddddd	d
fi |¤Ž | j||ddd d S )Nz#ff0000z#00ff00z#0000ffz#123456ZredZgreenZblueZwhiteZblackZgreyrB   zunknown color name "spam"r=   r?   )r   r/   r0   rI   r:   r   r   r   ÚcheckColorParamy   s    þý
ÿz"AbstractWidgetTest.checkColorParamc                 K   sH   | j ||ddddfi |¤Ž tdkr2|  ||d¡ | j||ddd	 d S )
NZarrowZwatchZcrossr<   )r   r	   ÚnonerB   zbad cursor spec "spam"r=   )r;   r   r2   r8   )r   r/   r0   r:   r   r   r   ÚcheckCursorParam   s    
ÿz#AbstractWidgetTest.checkCursorParamc                 C   s0   dd„ }|||< |   || ¡ |  ||d¡ d S )Nc                  W   s   d S r"   r   )Úargsr   r   r   Úcommand‰   s    z5AbstractWidgetTest.checkCommandParam.<locals>.commandr<   )Z
assertTruer;   )r   r/   r0   rN   r   r   r   ÚcheckCommandParamˆ   s    z$AbstractWidgetTest.checkCommandParamr=   c                O   sˆ   | j ||g|¢R i |¤Ž |d u rrd|d |d d… ¡t|ƒdkrFdnd|d f }| j||dd| d d	| }| j||d
|d d S )Nz %s "{}": must be %s%s or %sz, éÿÿÿÿé   ú,r<   Z	ambiguousr=   ZbadrB   )r;   r   r.   r8   )r   r/   r0   r6   r9   r:   Zerrmsg2r   r   r   ÚcheckEnumParam   s    ü
ÿz!AbstractWidgetTest.checkEnumParam)r)   r3   c          
      O   s   |d u r| j }|D ]P}t}|}	t|tƒrF|	rF|	turFt|ƒ| j }t}	| j|||f||	dœ|¤Ž q| j||dd|d | j||dd|d d S )N©r%   r)   Z6xzbad screen distance "6x")r6   r3   rB   zbad screen distance "spam")	Ú_conv_pixelsr+   r   r    r   r   Úroundr2   r8   )
r   r/   r0   r)   r3   r9   r:   r!   r%   Zconv1r   r   r   ÚcheckPixelsParamœ   s(    
ÿÿ
ÿ
ÿz#AbstractWidgetTest.checkPixelsParamc              
   C   s>   |   ||dddddd¡ d}tdk r(d }| j||d	|d
 d S )NZflatZgrooveZraisedZridgeZsolidZsunkenzHbad relief "spam": must be flat, groove, raised, ridge, solid, or sunkenr   rB   r=   )r;   r   r8   )r   r/   r0   r6   r   r   r   ÚcheckReliefParam®   s    ÿ
ÿz#AbstractWidgetTest.checkReliefParamc                 C   s@   t j| jdd}| j|||td | j||ddd d||< d S )NZimage1)Zmasterr0   rA   rB   zimage "spam" doesn't existr=   r<   )r,   Z
PhotoImager   r2   r    r8   )r   r/   r0   Úimager   r   r   ÚcheckImageParam¸   s    
ÿz"AbstractWidgetTest.checkImageParamc                 C   s   | j |||td d S )NrA   )r2   r    )r   r/   r0   Úvarr   r   r   ÚcheckVariableParam¿   s    z%AbstractWidgetTest.checkVariableParamc                 C   s^   |   |¡ |  |t¡ t|ƒdkr2|  d|f ¡ |D ]"}t|tƒs6|  d|f ¡  qZq6d S )Nr*   zInvalid bounding box: %r)ZassertIsNotNoneZassertIsInstancer   r.   Zfailr   Úint)r   ZbboxÚitemr   r   r   ÚassertIsBoundingBoxÂ   s    

z&AbstractWidgetTest.assertIsBoundingBoxc                 C   s®   |   ¡ }| ¡ }|  t|ƒt| ¡ ƒ¡ |D ]}||  q,tjjrªddddddœ}t|ƒ}t| j	ƒ}t|| ƒD ]8}||v r”|| |v r”|| |v spt
d| jj|f ƒ qpd S )NÚborderwidthÚ
backgroundÚ
foregroundZinvalidcommandZvalidatecommand)ÚbdÚbgÚfgZinvcmdZvcmdz%s.OPTIONS doesn't contain "%s")ÚcreateÚkeysr#   Úsortedr-   ÚtestÚsupportÚverboseÚsetÚOPTIONSÚprintÚ	__class__Ú__name__)r   r/   rg   ÚkÚaliasesr%   r   r   r   Ú	test_keysÍ   s.    
û

ÿ
þ
ÿzAbstractWidgetTest.test_keys)N) rp   Ú
__module__Ú__qualname__ÚstaticmethodÚpixels_roundrU   Ú_conv_pad_pixelsr   Úpropertyr   r   ÚobjectÚ__eq__r(   r+   r2   r8   r;   r@   r   rD   rH   rJ   rL   rO   rS   rW   rX   rZ   r\   r_   rs   r   r   r   r   r      s8   
ÿÿ	
ÿ
r   c                   @   sÄ  e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!d>d?„ 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Úyscrollcommandc                 C   s   |   ¡ }|  |d¡ d S )Nr}   ©rf   rJ   ©r   r/   r   r   r   Útest_configure_activebackgroundõ   s    z4StandardOptionsTests.test_configure_activebackgroundc              
   C   s$   |   ¡ }|  |ddddddd¡ d S )Nr~   r   çÍÌÌÌÌÌô?g333333@r   éþÿÿÿr>   ©rf   rW   r¤   r   r   r   Ú test_configure_activeborderwidthù   s    ÿz5StandardOptionsTests.test_configure_activeborderwidthc                 C   s   |   ¡ }|  |d¡ d S )Nr   r£   r¤   r   r   r   Útest_configure_activeforegroundþ   s    z4StandardOptionsTests.test_configure_activeforegroundc                 C   s*   |   ¡ }|  |ddddddddd	d
¡ d S )Nr€   ÚnÚneÚeZseÚsÚswÚwZnwÚcenter©rf   rS   r¤   r   r   r   Útest_configure_anchor  s    ÿz*StandardOptionsTests.test_configure_anchorc                 C   s.   |   ¡ }|  |d¡ d| jv r*|  |d¡ d S )Nra   rd   ©rf   rJ   rm   r¤   r   r   r   Útest_configure_background  s    
z.StandardOptionsTests.test_configure_backgroundc                 C   s~   |   ¡ }|  |dd¡ |  |dd¡ tjjddd}|  |dd| ¡ d| jj d	d
¡v rhd| j ¡ v sz| j	|dddd d S )Nr   Z	questheadZgray50z
python.xbmZ
imghdrdata)Zsubdirú@Zaquar   ZwindowingsystemZAppKitrB   zbitmap "spam" not definedr=   )
rf   r2   ri   rj   Zfindfiler   r   r   Zwinfo_serverr8   )r   r/   Úfilenamer   r   r   Útest_configure_bitmap  s    ÿ
ÿz*StandardOptionsTests.test_configure_bitmapc              
   C   sF   |   ¡ }|  |ddddddd¡ d| jv rB|  |ddddddd¡ d S )	Nr`   r   r¦   çÍÌÌÌÌÌ@r   r§   r>   rc   )rf   rW   rm   r¤   r   r   r   Útest_configure_borderwidth  s    ÿ
z/StandardOptionsTests.test_configure_borderwidthc              
   C   s$   |   ¡ }|  |ddddddd¡ d S )Nr‚   Zbottomr±   ÚleftrK   ÚrightÚtopr²   r¤   r   r   r   Útest_configure_compound!  s    ÿz,StandardOptionsTests.test_configure_compoundc                 C   s   |   ¡ }|  |d¡ d S )Nrƒ   )rf   rL   r¤   r   r   r   Útest_configure_cursor&  s    z*StandardOptionsTests.test_configure_cursorc                 C   s   |   ¡ }|  |d¡ d S )Nr„   r£   r¤   r   r   r   Ú!test_configure_disabledforeground*  s    z6StandardOptionsTests.test_configure_disabledforegroundc                 C   s   |   ¡ }|  |d¡ d S )Nr…   ©rf   rH   r¤   r   r   r   Útest_configure_exportselection.  s    z3StandardOptionsTests.test_configure_exportselectionc                 C   s,   |   ¡ }|  |dd¡ | j|dddd d S )Nr†   z3-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*r<   zfont "" doesn't existr=   )rf   r2   r8   r¤   r   r   r   Útest_configure_font2  s    ÿ
ÿz(StandardOptionsTests.test_configure_fontc                 C   s.   |   ¡ }|  |d¡ d| jv r*|  |d¡ d S )Nrb   re   r´   r¤   r   r   r   Útest_configure_foreground9  s    
z.StandardOptionsTests.test_configure_foregroundc                 C   s   |   ¡ }|  |d¡ d S )Nr‡   r£   r¤   r   r   r   Ú"test_configure_highlightbackground?  s    z7StandardOptionsTests.test_configure_highlightbackgroundc                 C   s   |   ¡ }|  |d¡ d S )Nrˆ   r£   r¤   r   r   r   Útest_configure_highlightcolorC  s    z2StandardOptionsTests.test_configure_highlightcolorc              	   C   s8   |   ¡ }|  |dddddd¡ | j|ddd| jd d S )	Nr‰   r   r¦   r¹   r   r>   r§   rT   )rf   rW   r2   rU   r¤   r   r   r   Ú!test_configure_highlightthicknessG  s    
ÿÿz6StandardOptionsTests.test_configure_highlightthicknessc                 C   s   |   ¡ }|  |d¡ d S )NrY   ©rf   rZ   r¤   r   r   r   Útest_configure_imageN  s    z)StandardOptionsTests.test_configure_imagec                 C   s   |   ¡ }|  |d¡ d S )NrŠ   r£   r¤   r   r   r   Útest_configure_insertbackgroundR  s    z4StandardOptionsTests.test_configure_insertbackgroundc              
   C   s$   |   ¡ }|  |ddddddd¡ d S )Nr‹   r   r¦   r¹   r   r§   r>   r¨   r¤   r   r   r   Ú test_configure_insertborderwidthV  s    ÿz5StandardOptionsTests.test_configure_insertborderwidthc                 C   s   |   ¡ }|  |dd¡ d S )NrŒ   éd   ©rf   r@   r¤   r   r   r   Útest_configure_insertofftime[  s    z1StandardOptionsTests.test_configure_insertofftimec                 C   s   |   ¡ }|  |dd¡ d S )Nr   rÌ   rÍ   r¤   r   r   r   Útest_configure_insertontime_  s    z0StandardOptionsTests.test_configure_insertontimec                 C   s    |   ¡ }|  |ddddd¡ d S )NrŽ   r¦   r¹   r§   r>   r¨   r¤   r   r   r   Útest_configure_insertwidthc  s    z/StandardOptionsTests.test_configure_insertwidthc                 C   s   |   ¡ }|  |d¡ d S )Nr   rÁ   r¤   r   r   r   Útest_configure_jumpg  s    z(StandardOptionsTests.test_configure_jumpc                 C   s4   |   ¡ }| j|dddddd | j|dddd d S )	Nr   r»   r¼   r±   z6bad justification "{}": must be left, right, or centerr=   r<   z:ambiguous justification "": must be left, right, or center)rf   rS   r8   r¤   r   r   r   Útest_configure_justifyk  s    ÿ
ÿz+StandardOptionsTests.test_configure_justifyc                 C   s2   |   ¡ }|  t|d ƒ| j¡ |  |ddd¡ d S )Nr‘   Z
horizontalZvertical)rf   r#   r    Zdefault_orientrS   r¤   r   r   r   Útest_configure_orientt  s    z*StandardOptionsTests.test_configure_orientc              
   C   s(   |   ¡ }| j|dddddd| jd d S )Nr’   r   çš™™™™™@çffffff@r§   Ú12mrA   ©rf   rW   rx   r¤   r   r   r   Útest_configure_padxy  s    ÿz(StandardOptionsTests.test_configure_padxc              
   C   s(   |   ¡ }| j|dddddd| jd d S )Nr“   r   rÔ   rÕ   r§   rÖ   rA   r×   r¤   r   r   r   Útest_configure_pady~  s    ÿz(StandardOptionsTests.test_configure_padyc                 C   s   |   ¡ }|  |d¡ d S )Nr”   ©rf   rX   r¤   r   r   r   Útest_configure_reliefƒ  s    z*StandardOptionsTests.test_configure_reliefc                 C   s   |   ¡ }|  |ddd¡ d S )Nr•   éþÿÿéô  rÍ   r¤   r   r   r   Útest_configure_repeatdelay‡  s    z/StandardOptionsTests.test_configure_repeatdelayc                 C   s   |   ¡ }|  |ddd¡ d S )Nr–   rÜ   rÝ   rÍ   r¤   r   r   r   Útest_configure_repeatinterval‹  s    z2StandardOptionsTests.test_configure_repeatintervalc                 C   s   |   ¡ }|  |d¡ d S )Nr—   r£   r¤   r   r   r   Útest_configure_selectbackground  s    z4StandardOptionsTests.test_configure_selectbackgroundc                 C   s    |   ¡ }|  |ddddd¡ d S )Nr˜   r¦   r¹   r§   r>   r¨   r¤   r   r   r   Ú test_configure_selectborderwidth“  s    z5StandardOptionsTests.test_configure_selectborderwidthc                 C   s   |   ¡ }|  |d¡ d S )Nr™   r£   r¤   r   r   r   Útest_configure_selectforeground—  s    z4StandardOptionsTests.test_configure_selectforegroundc                 C   s   |   ¡ }|  |d¡ d S )Nrš   rÁ   r¤   r   r   r   Útest_configure_setgrid›  s    z+StandardOptionsTests.test_configure_setgridc                 C   s   |   ¡ }|  |dddd¡ d S )NÚstateZactiveÚdisabledZnormalr²   r¤   r   r   r   Útest_configure_stateŸ  s    z)StandardOptionsTests.test_configure_statec                 C   s   |   ¡ }|  |dddd¡ d S )Nr›   Ú0Ú1r<   ©rf   r;   r¤   r   r   r   Útest_configure_takefocus£  s    z-StandardOptionsTests.test_configure_takefocusc                 C   s   |   ¡ }|  |ddd¡ d S )Nrœ   r<   z
any stringré   r¤   r   r   r   Útest_configure_text§  s    z(StandardOptionsTests.test_configure_textc                 C   s&   |   ¡ }t | j¡}|  |d|¡ d S )Nr   )rf   r,   Z	StringVarr   r\   ©r   r/   r[   r   r   r   Útest_configure_textvariable«  s    z0StandardOptionsTests.test_configure_textvariablec                 C   s   |   ¡ }|  |d¡ d S )Nrž   r£   r¤   r   r   r   Útest_configure_troughcolor°  s    z/StandardOptionsTests.test_configure_troughcolorc                 C   s   |   ¡ }|  |dddd¡ d S )NrŸ   r   rF   é
   rÍ   r¤   r   r   r   Útest_configure_underline´  s    z-StandardOptionsTests.test_configure_underlinec                 C   s   |   ¡ }|  |dd¡ d S )Nr    rÌ   r¨   r¤   r   r   r   Útest_configure_wraplength¸  s    z.StandardOptionsTests.test_configure_wraplengthc                 C   s   |   ¡ }|  |d¡ d S )Nr¡   ©rf   rO   r¤   r   r   r   Útest_configure_xscrollcommand¼  s    z2StandardOptionsTests.test_configure_xscrollcommandc                 C   s   |   ¡ }|  |d¡ d S )Nr¢   rò   r¤   r   r   r   Útest_configure_yscrollcommandÀ  s    z2StandardOptionsTests.test_configure_yscrollcommandc                 C   s   |   ¡ }|  |d¡ d S )NrN   rò   r¤   r   r   r   Útest_configure_commandÆ  s    z+StandardOptionsTests.test_configure_commandc                 C   s   |   ¡ }|  |d¡ d S )NZindicatoronrÁ   r¤   r   r   r   Útest_configure_indicatoronÊ  s    z/StandardOptionsTests.test_configure_indicatoronc                 C   s   |   ¡ }|  |d¡ d S )NZ	offreliefrÚ   r¤   r   r   r   Útest_configure_offreliefÎ  s    z-StandardOptionsTests.test_configure_offreliefc                 C   s   |   ¡ }|  |d¡ d S )NZ
overreliefrÚ   r¤   r   r   r   Útest_configure_overreliefÒ  s    z.StandardOptionsTests.test_configure_overreliefc                 C   s   |   ¡ }|  |d¡ d S )NZselectcolorr£   r¤   r   r   r   Útest_configure_selectcolorÖ  s    z/StandardOptionsTests.test_configure_selectcolorc                 C   s   |   ¡ }|  |d¡ d S )NZselectimagerÈ   r¤   r   r   r   Útest_configure_selectimageÚ  s    z/StandardOptionsTests.test_configure_selectimager   r	   c                 C   s   |   ¡ }|  |d¡ d S )NZtristateimagerÈ   r¤   r   r   r   Útest_configure_tristateimageÞ  s    z1StandardOptionsTests.test_configure_tristateimagec                 C   s   |   ¡ }|  |dd¡ d S )NZtristatevalueZ
unknowable)rf   r2   r¤   r   r   r   Útest_configure_tristatevalueã  s    z1StandardOptionsTests.test_configure_tristatevaluec                 C   s&   |   ¡ }t | j¡}|  |d|¡ d S )NÚvariable)rf   r,   Z	DoubleVarr   r\   rì   r   r   r   Útest_configure_variableè  s    z,StandardOptionsTests.test_configure_variableN)9rp   rt   ru   ZSTANDARD_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ú   r   rû   rü   rþ   r   r   r   r   r|   æ   sn   	

r|   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚIntegerSizeTestsc                 C   s   |   ¡ }|  |dddd¡ d S )NÚheightrÌ   éœÿÿÿr   rÍ   r¤   r   r   r   Útest_configure_heightï  s    z&IntegerSizeTests.test_configure_heightc                 C   s   |   ¡ }|  |dddd¡ d S )NÚwidthé’  énþÿÿr   rÍ   r¤   r   r   r   Útest_configure_widthó  s    z%IntegerSizeTests.test_configure_widthN©rp   rt   ru   r  r  r   r   r   r   rÿ   î  s   rÿ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚPixelSizeTestsc              
   C   s$   |   ¡ }|  |ddddddd¡ d S )Nr   rÌ   gÍÌÌÌÌLY@gfffff¦Y@r  r   Z3cr¨   r¤   r   r   r   r  ù  s    z$PixelSizeTests.test_configure_heightc              
   C   s$   |   ¡ }|  |ddddddd¡ d S )Nr  r  gfffff6y@gš™™™™Iy@r  r   Z5ir¨   r¤   r   r   r   r  ý  s    z#PixelSizeTests.test_configure_widthNr  r   r   r   r   r  ø  s   r  c                     s   ‡ fdd„}|S )Nc                    sn   ˆ j D ]b}d| }tˆ |ƒsˆD ]$}t||ƒr tˆ |t||ƒƒ  qq |f‡ fdd„	}||_tˆ ||ƒ qˆ S )NZtest_configure_c                    s&   |   ¡ }||  td|ˆ jf ƒ‚d S )NzOption "%s" is not tested in %s)rf   ÚAssertionErrorrp   )r   Úoptionr/   ©Úclsr   r   ri     s
    ÿz5add_standard_options.<locals>.decorator.<locals>.test)rm   ÚhasattrÚsetattrÚgetattrrp   )r  r
  Z
methodnameZsource_classri   ©Úsource_classesr  r   Ú	decorator  s    


ÿz'add_standard_options.<locals>.decoratorr   )r  r  r   r  r   Úadd_standard_options  s    r  c                  C   s&   t jjr"t ¡ } td|  dd¡ƒ d S )Nzpatchlevel =ÚinfoZ
patchlevel)ri   rj   rk   r,   ZTclrn   r   )Ztclr   r   r   ÚsetUpModule  s    r  )Zunittestr,   Ztkinter.test.supportr   r   r   r   r   r   Ztest.supportri   Znoconvr    rV   rw   r]   rz   r+   r   r|   rÿ   r  r  r  r   r   r   r   Ú<module>   s&    
 P  


