o
    g                     @   s  d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZmZm	Z	m
Z
mZ d dlmZmZmZmZmZmZmZmZ ed dd ZG d	d
 d
eeZeeG dd dee jZeeG dd dee jZeeG dd dee jZG dd deeZeeG dd dee jZeeG dd dee jZeeG dd dee jZeeG dd dee jZeeG dd dee jZ G dd de e jZ!eeeG dd  d ee jZ"eeG d!d" d"e"e jZ#eeG d#d$ d$ee jZ$eeeG d%d& d&ee jZ%eeeG d'd( d(ee jZ&eeeG d)d* d*ee jZ'eeeG d+d, d,ee jZ(eeG d-d. d.ee jZ)eeG d/d0 d0ee jZ*eeeG d1d2 d2ee jZ+G d3d4 d4ee jZ,ee%ee"eeee&e e*e+e!e)ee'e(e#e$ee,fZ-e.d5kre /  dS dS )6    N)TclError)requires)tcl_versionrequires_tclget_tk_patchlevel	widget_eqAbstractDefaultRootTest)add_standard_optionsnoconvpixels_roundAbstractWidgetTestStandardOptionsTestsIntegerSizeTestsPixelSizeTestssetUpModuleZguic                 C   s   t t| S N)floatroundx r   \/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/tkinter/test/test_tkinter/test_widgets.pyfloat_round   s   r   c                   @   s0   e Zd ZeZdd Zdd Zdd Zdd Zd	S )
AbstractToplevelTestc                 C   sR   |   }| |d |jj  | j|dddd | j dd}| |d d d S )NclassZFooz2can't modify -class option after widget is createderrmsg)Zclass_)createassertEqual	__class____name__titlecheckInvalidParamselfwidgetwidget2r   r   r   test_configure_class   s   


z)AbstractToplevelTest.test_configure_classc                 C   J   |   }| |d d | j|dddd | j dd}| |d d d S )Ncolormap newz5can't modify -colormap option after widget is createdr   )r)   r   r   r"   r#   r   r   r   test_configure_colormap"      
z,AbstractToplevelTest.test_configure_colormapc                 C   sd   |   }| |d | jrdnd | j|dddd | j dd}| |d | jr-d d S d	 d S )
N	containerr   0   z6can't modify -container option after widget is createdr   Tr/   1)r   r   wantobjectsr"   r#   r   r   r   test_configure_container*   s   
$z-AbstractToplevelTest.test_configure_containerc                 C   r(   )Nvisualr*   defaultz3can't modify -visual option after widget is createdr   )r6   r,   r#   r   r   r   test_configure_visual2   r.   z*AbstractToplevelTest.test_configure_visualN)	r    
__module____qualname__r
   _conv_pad_pixelsr'   r-   r5   r8   r   r   r   r   r      s    	r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )ToplevelTest)
backgroundborderwidthr   r)   r/   cursorheighthighlightbackgroundhighlightcolorhighlightthicknessmenupadxpadyreliefscreen	takefocususer6   widthc                 K      t j| jfi |S r   )tkinterZToplevelrootr$   kwargsr   r   r   r   E      zToplevelTest.createc                 C   s8   |   }t| j}| j|d|td | |dd d S )NrD   eqr*   )r   rM   MenurN   
checkParamr   r$   r%   rD   r   r   r   test_configure_menuH   s   z ToplevelTest.test_configure_menuc                 C   sv   |   }| |d d ztjd }W n ty!   | d Y nw | j|d|dd | j |d}| |d | d S )NrH   r*   ZDISPLAYzNo $DISPLAY set.z3can't modify -screen option after widget is createdr   )rH   )r   r   osenvironKeyErrorZskipTestr"   )r$   r%   Zdisplayr&   r   r   r   test_configure_screenN   s   
z"ToplevelTest.test_configure_screenc                 C   s~   |   }| |d d | j dd}t| }| j|d | j |d}| |d | W d    d S 1 s8w   Y  d S )NrJ   r*   Tr2   )wid)rJ   )r   r   hexZwinfo_idZsubTest)r$   r%   parentr\   r&   r   r   r   test_configure_useZ   s   "zToplevelTest.test_configure_useN)r    r9   r:   OPTIONSr   rW   r[   r_   r   r   r   r   r<   ;   s    r<   c                   @      e Zd ZdZdd ZdS )	FrameTest)r=   r>   r   r)   r/   r?   r@   rA   rB   rC   rE   rF   rG   rI   r6   rK   c                 K   rL   r   )rM   FramerN   rO   r   r   r   r   m   rQ   zFrameTest.createNr    r9   r:   r`   r   r   r   r   r   rb   d   s    rb   c                   @   (   e Zd ZdZdd Zdd Zdd ZdS )	LabelFrameTest)r=   r>   r   r)   r/   r?   font
foregroundr@   rA   rB   rC   labelanchorlabelwidgetrE   rF   rG   rI   textr6   rK   c                 K   rL   r   )rM   Z
LabelFramerN   rO   r   r   r   r   |   rQ   zLabelFrameTest.createc                 C   s>   |   }| |ddddddddd	d
ddd | |dd d S )Nri   eZenZesnnenwsseswwZwnwscenter)r   checkEnumParamr"   r$   r%   r   r   r   test_configure_labelanchor   s   z)LabelFrameTest.test_configure_labelanchorc                 C   s8   |   }tj| jddd}| j|d|dd |  d S )NZMuppfoo)rk   namerj   z.fooexpected)r   rM   LabelrN   rU   destroy)r$   r%   labelr   r   r   test_configure_labelwidget   s   z)LabelFrameTest.test_configure_labelwidgetN)r    r9   r:   r`   r   rx   r   r   r   r   r   rf   q   s
    	rf   c                   @   s   e Zd ZeZdd ZdS )AbstractLabelTestc              
   C   $   |   }| |ddddddd d S )NrC   r   ?@   10pr   checkPixelsParamrw   r   r   r   !test_configure_highlightthickness      z3AbstractLabelTest.test_configure_highlightthicknessN)r    r9   r:   r
   _conv_pixelsr   r   r   r   r   r      s    r   c                   @   ra   )	LabelTest)activebackgroundactiveforegroundanchorr=   bitmapr>   compoundr?   disabledforegroundrg   rh   r@   rA   rB   rC   imagejustifyrE   rF   rG   staterI   rk   textvariable	underlinerK   
wraplengthc                 K   rL   r   )rM   r}   rN   rO   r   r   r   r      rQ   zLabelTest.createNrd   r   r   r   r   r      s    
r   c                   @       e Zd ZdZdd Zdd ZdS )
ButtonTest) r   r   r   r=   r   r>   commandr   r?   r7   r   rg   rh   r@   rA   rB   rC   r   r   
overreliefrE   rF   rG   repeatdelayrepeatintervalr   rI   rk   r   r   rK   r   c                 K   rL   r   )rM   ButtonrN   rO   r   r   r   r      rQ   zButtonTest.createc                 C      |   }| |dddd d S )Nr7   Zactivedisablednormalr   rv   rw   r   r   r   test_configure_default      z!ButtonTest.test_configure_defaultN)r    r9   r:   r`   r   r   r   r   r   r   r      s    r   c                   @   re   )	CheckbuttonTest)&r   r   r   r=   r   r>   r   r   r?   r   rg   rh   r@   rA   rB   rC   r   indicatoronr   	offreliefoffvalueonvaluer   rE   rF   rG   selectcolorselectimager   rI   rk   r   tristateimagetristatevaluer   variablerK   r   c                 K   rL   r   )rM   ZCheckbuttonrN   rO   r   r   r   r      rQ   zCheckbuttonTest.createc                 C       |   }| |ddddd d S )Nr   r1   ffffff@r*   
any stringr   checkParamsrw   r   r   r   test_configure_offvalue      z'CheckbuttonTest.test_configure_offvaluec                 C   r   )Nr   r1   r   r*   r   r   rw   r   r   r   test_configure_onvalue   r   z&CheckbuttonTest.test_configure_onvalueN)r    r9   r:   r`   r   r   r   r   r   r   r   r      s
    r   c                   @   r   )RadiobuttonTest)%r   r   r   r=   r   r>   r   r   r?   r   rg   rh   r@   rA   rB   rC   r   r   r   r   r   rE   rF   rG   r   r   r   rI   rk   r   r   r   r   valuer   rK   r   c                 K   rL   r   )rM   ZRadiobuttonrN   rO   r   r   r   r      rQ   zRadiobuttonTest.createc                 C   r   )Nr   r1   r   r*   r   r   rw   r   r   r   test_configure_value   r   z$RadiobuttonTest.test_configure_valueN)r    r9   r:   r`   r   r   r   r   r   r   r      s    r   c                   @   s^   e Zd ZdZeeZdd Zdd Zdd Z	e
jZdd	 Zd
d Zdd Zdd Zdd ZdS )MenubuttonTest)r   r   r   r=   r   r>   r   r?   	directionr   rg   rh   r@   rA   rB   rC   r   r   r   rD   rE   rF   rG   r   rI   rk   r   r   rK   r   c                 K   rL   r   )rM   Z
MenubuttonrN   rO   r   r   r   r      rQ   zMenubuttonTest.createc              	   C   "   |   }| |dddddd d S )Nr   ZaboveZbelowflushleftrightr   rw   r   r   r   test_configure_direction     
z'MenubuttonTest.test_configure_directionc                 C   "   |   }| j|ddddtd d S )Nr@   d   r   convr   checkIntegerParamstrrw   r   r   r   test_configure_height     z$MenubuttonTest.test_configure_heightc                 C   s   |   }tj| jdd}| j|d|td d}| tj}d|d< W d    n1 s,w   Y  |d ur>| t|j	| | tj}|
ddi W d    n1 sVw   Y  |d urj| t|j	| d S d S )NZimage1)Zmasterrz   r   r   zimage "spam" doesn't existspam)r   rM   Z
PhotoImagerN   rU   r   assertRaisesr   r   	exceptionZ	configure)r$   r%   r   r   cmr   r   r   test_configure_image  s   
z#MenubuttonTest.test_configure_imagec                 C   s4   |   }tj|dd}| j|d|td |  d S )NrD   )rz   rR   )r   rM   rT   rU   r   r~   rV   r   r   r   rW     s   z"MenubuttonTest.test_configure_menuc                 C   2   |   }| |ddddd | j|dddd d S )	NrE      皙@ffffff@12mr   r   r{   r   r   rU   rw   r   r   r   test_configure_padx!     z"MenubuttonTest.test_configure_padxc                 C   r   )	NrF   r   r   r   r   r   r   r{   r   rw   r   r   r   test_configure_pady&  r   z"MenubuttonTest.test_configure_padyc                 C   r   )NrK     nr   r   r   rw   r   r   r   test_configure_width+  r   z#MenubuttonTest.test_configure_widthN)r    r9   r:   r`   staticmethodr   r   r   r   r   r   r   r   rW   r   r   r   r   r   r   r   r      s    r   c                   @   s   e Zd ZdddZdd ZdS )	OptionMenuTestbar   cc                 K   s   t j| jd |g|R i |S r   )rM   
OptionMenurN   )r$   r7   valuesrP   r   r   r   r   2  s   zOptionMenuTest.createc                 C   sF   |  td tj| jd ddd W d    d S 1 sw   Y  d S )Nz^unknown option -image$r   r*   )r   )assertRaisesRegexr   rM   r   rN   r$   r   r   r   test_bad_kwarg5  s   "zOptionMenuTest.test_bad_kwargN)r   r   )r    r9   r:   r   r   r   r   r   r   r   0  s    
r   c                   @   sh   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S )	EntryTest)r=   r>   r?   disabledbackgroundr   exportselectionrg   rh   rA   rB   rC   insertbackgroundinsertborderwidthinsertofftimeinsertontimeinsertwidthinvalidcommandr   readonlybackgroundrG   selectbackgroundselectborderwidthselectforegroundshowr   rI   r   validatevalidatecommandrK   xscrollcommandc                 K   rL   r   )rM   ZEntryrN   rO   r   r   r   r   I  rQ   zEntryTest.createc                 C      |   }| |d d S )Nr   r   ZcheckColorParamrw   r   r   r   !test_configure_disabledbackgroundL     z+EntryTest.test_configure_disabledbackgroundc              
   C   s:   | j dd}| |ddddddd	 | j|dd
dd d S )Nr   )r   r   r   r   r   r   r   r   <   2   r{   r   rw   r   r   r    test_configure_insertborderwidthP  s
   z*EntryTest.test_configure_insertborderwidthc                 C   sv   |   }| |dddd | j|dddd | j|dddd td	d
kr0| j|dd	dd d S | j|dd	dd d S )Nr   r   @r   g?   r{   r   g?r   r1   )r   r   rU   r   rw   r   r   r   test_configure_insertwidthW  s   z$EntryTest.test_configure_insertwidthc                 C   $   |   }| |d | |d d S )Nr   Zinvcmdr   ZcheckCommandParamrw   r   r   r   test_configure_invalidcommanda     z'EntryTest.test_configure_invalidcommandc                 C   r   )Nr   r   rw   r   r   r   !test_configure_readonlybackgroundf  r   z+EntryTest.test_configure_readonlybackgroundc                 C   s6   |   }| |dd | |dd | |dd d S )Nr   *r*    r   rU   rw   r   r   r   test_configure_showj  s   zEntryTest.test_configure_showc                 C   r   )Nr   r   r   readonlyr   rw   r   r   r   test_configure_statep     zEntryTest.test_configure_statec              
   C   r   )Nr   allkeyZfocusZfocusinZfocusoutnoner   rw   r   r   r   test_configure_validateu  r   z!EntryTest.test_configure_validatec                 C   r  )Nr   Zvcmdr  rw   r   r   r   test_configure_validatecommandz  r  z(EntryTest.test_configure_validatecommandc                 C   s$  |   }|dd | |  |dd | | d | |  |d |	d | | d |dd | | d	 |
  | |  |dd |d | | d
 |d | | d |d | | d |d | | d |d d S Nr   Z12345endr1   r  2r      4Z1234Z234   Z2345r   insertZassertFalseZselection_presentZselection_ranger   Zselection_getZ
assertTrueZselection_fromZselection_toselection_clearZselection_adjustrw   r   r   r   test_selection_methods  s.   





z EntryTest.test_selection_methodsN)r    r9   r:   r`   r   r   r  r  r  r	  r  r  r  r  r  r   r   r   r   r   :  s    
r   c                   @   s   e Zd ZdZd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S )SpinboxTest),r   r=   r>   buttonbackgroundbuttoncursorbuttondownreliefbuttonupreliefr   r?   r   r   r   rg   rh   formatfromrA   rB   rC   	incrementr   r   r   r   r   r   r   rG   r   r   r   r   r   r   r   rI   r   tor   r   r   rK   wrapr   c                 K   rL   r   )rM   ZSpinboxrN   rO   r   r   r   r     rQ   zSpinboxTest.createNc                 C   r   )Nr!  r   rw   r   r   r   test_configure_buttonbackground  r   z+SpinboxTest.test_configure_buttonbackgroundc                 C   r   )Nr"  r   ZcheckCursorParamrw   r   r   r   test_configure_buttoncursor  r   z'SpinboxTest.test_configure_buttoncursorc                 C   r   )Nr#  r   ZcheckReliefParamrw   r   r   r   test_configure_buttondownrelief  r   z+SpinboxTest.test_configure_buttondownreliefc                 C   r   )Nr$  r-  rw   r   r   r   test_configure_buttonuprelief  r   z)SpinboxTest.test_configure_buttonupreliefc                 C   s   |   }| |dd | |dd | |dd | |dd | |dd | |dd | |dd | |dd	 | |dd
 | |dd | |dd | |dd d S )Nr%  z%2fz%2.2fz%.2fz%2.fz%2e-1fz2.2z%2.-2fz%-2.02fz% 2.02fz	% -2.200fz%09.200fz%dr   rU   r"   rw   r   r   r   test_configure_format  s   z!SpinboxTest.test_configure_formatc                 C   >   |   }| |dd | |dddd | j|dddd	 d S )
Nr(  g      Y@r&  ffffff$@ffffff'@   *-to value must be greater than -from valuer   r   rU   checkFloatParamr"   rw   r   r   r   test_configure_from     

zSpinboxTest.test_configure_fromc              	   C   r   )Nr'  r1   r4  g)@r   r   r9  rw   r   r   r   test_configure_increment  r   z$SpinboxTest.test_configure_incrementc                 C   r2  )
Nr&  g      Yr(  r3  r4  r5  i8r7  r   r8  rw   r   r   r   test_configure_to  r;  zSpinboxTest.test_configure_toc                 C   s\   |   }| |d d | |dd | j|dddd | j|dddd | |dd d S )Nr   r*   zmon tue wed thur)ZmonZtueZwedZthurr{   )*   gQ	@r*   r   z42 3.14 {} {any string})r   r   rU   rw   r   r   r   test_configure_values  s   

z!SpinboxTest.test_configure_valuesc                 C   r   )Nr)  r   ZcheckBooleanParamrw   r   r   r   test_configure_wrap  r   zSpinboxTest.test_configure_wrapc                 C   s`   |   }| |d | tj|jd | tj|jd  | t|j | t|jdd d S )Nr   noindexr1   )r   assertIsBoundingBoxbboxr   rM   r   	TypeErrorrw   r   r   r   	test_bbox  s   zSpinboxTest.test_bboxc                 C   s  |   }|dd | |  |dd | | d | |  |d |	d | | d |dd | | d	 |
  | |  |dd |d | | d
 |d | | d |d | | d |d | | d d S r  r  rw   r   r   r   r    s,   





z"SpinboxTest.test_selection_methodsc                 C   sP   |   }| | d |d | | d |d | | d d S )Nr  ZbuttonupZ
buttondown)r   r   Zselection_elementrw   r   r   r   test_selection_element  s   

z"SpinboxTest.test_selection_element)r    r9   r:   r`   r   r  r*  r,  r.  r/  r1  r:  r>  r?  rA  rC  rH  r  rI  r   r   r   r   r     s"    r   c                   @   s   e Zd ZdZedk rdZdd Zdd Zedd	d
d Z	edd	dd Z
dd Zdd Zedd	dd Zedddd Zdd Zdd Zdd Zdd Zedd	dd  Zd!d" Zd#d$ Zedd	d%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/S )0TextTest))autoseparatorsr=   blockcursorr>   r?   endliner   rg   rh   r@   rA   rB   rC   inactiveselectbackgroundr   r   r   r   insertunfocussedr   maxundorE   rF   rG   r   r   r   setgridspacing1spacing2spacing3	startliner   tabstabstylerI   undorK   r)  r   yscrollcommand   r  Tc                 K   rL   r   )rM   ZTextrN   rO   r   r   r   r   ,  rQ   zTextTest.createc                 C   r   )NrK  rB  rw   r   r   r   test_configure_autoseparators/  r   z&TextTest.test_configure_autoseparatorsr[  r  c                 C   r   )NrL  rB  rw   r   r   r   test_configure_blockcursor3     z#TextTest.test_configure_blockcursorc                 C      |   }ddd tdD }|d| | j|dddd	 | j|dd
dd	 | j|dddd | |dd | |dd | j|dddd d S )N
c                 s       | ]}d V  qdS zLine %dNr   .0ir   r   r   	<genexpr>;      z2TextTest.test_configure_endline.<locals>.<genexpr>r   r  rM  r6  r*   r{   r3  r   expected integer but got "spam"r   r   rU     
   1-startline must be less than or equal to -endliner   joinranger  rU   r"   r$   r%   rk   r   r   r   test_configure_endline8     


zTextTest.test_configure_endlinec                 C   sD   |   }| |ddddd | j|dddd | j|dd	dd d S )
Nr@   r   LY@fffffY@Z3cr   r1   r{   r   r   rw   r   r   r   r   F  s   zTextTest.test_configure_heightc                 C   r   )NrP  r   r  r<  r   r   rw   r   r   r   test_configure_maxundoL  r   zTextTest.test_configure_maxundoc                 C   r   )NrN  r   rw   r   r   r   'test_configure_inactiveselectbackgroundP  r^  z0TextTest.test_configure_inactiveselectbackgroundr   c                 C   r   )NrO  Zhollowr  Zsolidr   rw   r   r   r   test_configure_insertunfocussedU  s   z(TextTest.test_configure_insertunfocussedc              
   C   s*   |   }| j|dddddttdkd d S )Nr   r   r   r   r   rZ  )r   	keep_orig)r   r   r
   r   rw   r   r   r    test_configure_selectborderwidth[  s
   

z)TextTest.test_configure_selectborderwidthc                 C   r   )	NrR     ffffff5@皙6@0.5cr   r{   r   rw   r   r   r   test_configure_spacing1a  r   z TextTest.test_configure_spacing1c                 C   r   )	NrS  r  皙@ffffff@z0.1cr<  r   r{   r   rw   r   r   r   test_configure_spacing2f  r   z TextTest.test_configure_spacing2c                 C   r   )	NrT  rz  r{  r|  r}  r3  r   r{   r   rw   r   r   r   test_configure_spacing3k  r   z TextTest.test_configure_spacing3c                 C   r_  )Nr`  c                 s   ra  rb  r   rc  r   r   r   rf  s  rg  z4TextTest.test_configure_startline.<locals>.<genexpr>r   r  rU  r6  r*   r{   r3  r   rh  r   rj  rM  r   F   rk  rl  ro  r   r   r   test_configure_startlinep  rq  z!TextTest.test_configure_startlinec                 C   s8   |   }tdk r| |ddd d S | |ddd d S )NrZ  r   r   r   r   r   r   rv   rw   r   r   r   r  ~  s   zTextTest.test_configure_statec                 C   st   |   }t dk r| j|dddd n| |dd | j|dddd | j|dddd | j|dd	d
tdkd d S )Nr[  r     rV  )r4  g333334@1i2i)z10.2z20.7r  r  r{   z10.2 20.7 1i 2iz2c left 4c 6c center)Z2cr   Z4cZ6cru   r   zbad screen distance "spam"rZ  )r   rx  )r   r   rU   r"   r   rw   r   r   r   test_configure_tabs  s    





zTextTest.test_configure_tabsc                 C      |   }| |ddd d S )NrW  ZtabularZwordprocessorr   rw   r   r   r   test_configure_tabstyle  s   z TextTest.test_configure_tabstylec                 C   r   )NrX  rB  rw   r   r   r   test_configure_undo  r   zTextTest.test_configure_undoc                 C   s>   |   }| |dd | j|dddd | j|dddd d S )NrK   r   r   r1   r{   r   )r   r   rU   rw   r   r   r   r     s   zTextTest.test_configure_widthc                 C   s<   |   }tdk r| |dddd d S | |dddd d S )NrZ  r)  charr  Zwordr  rw   r   r   r   rC    s   zTextTest.test_configure_wrapc                 C   sp   |   }| |d | |d | tj|jd | tj|jd  | t|j | t|jdd d S )Nz1.1r  rD  )r   rE  rF  assertIsNoner   rM   r   rG  rw   r   r   r   rH    s   zTextTest.test_bboxN)r    r9   r:   r`   r   
_stringifyr   r\  r   r]  rp  r   ru  rv  rw  ry  r  r  r  r  r  r  r  r  r   rC  rH  r   r   r   r   rJ    s<    





rJ  c                   @   sj   e Zd ZdZe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edddd ZdS )
CanvasTest)r=   r>   closeenoughconfiner?   r@   rA   rB   rC   r   r   r   r   r   offsetrG   scrollregionr   r   r   r   rI   r   xscrollincrementrY  yscrollincrementrK   Tc                 K   rL   r   )rM   ZCanvasrN   rO   r   r   r   r     rQ   zCanvasTest.createc              	   C   $   |   }| j|dddddtd d S )Nr     333333@r  r   )r   r9  r   rw   r   r   r   test_configure_closeenough     
z%CanvasTest.test_configure_closeenoughc                 C   r   )Nr  rB  rw   r   r   r   test_configure_confine  r   z!CanvasTest.test_configure_confinec                 C   sd   |   }| |d d | |dddddddd	d
d | |dd | |dd | |dd d S )Nr  z0,0rm   rn   rl   rq   rp   rr   rs   ro   ru   z10,20z#5,6r   )r   r   r   rU   r"   rw   r   r   r   test_configure_offset  s   z CanvasTest.test_configure_offsetc                 C   sv   |   }| |dd | j|dddd | |dd | j|dddd | |dd	 | |dd
 | |dd d S )Nr  z0 0 200 150)r   r   r6     r{   r*   r   zbad scrollRegion "spam"r   )r   r   r6  r   )r   r   r6  )r   r   r6  r  r   r0  rw   r   r   r   test_configure_scrollregion  s   

z&CanvasTest.test_configure_scrollregionc                 C       |   }| j|ddddd d S )Nr   r   r   z0bad state value "{}": must be normal or disabledr   r   rw   r   r   r   r       
zCanvasTest.test_configure_statec              
   C   r   )Nr  (   r   gD@gE@iz0.5ir   rw   r   r   r   test_configure_xscrollincrement  r   z*CanvasTest.test_configure_xscrollincrementc              
   C   r   )Nr  rj  r   ffffff&@g333333+@r3  z0.1ir   rw   r   r   r   test_configure_yscrollincrement  r   z*CanvasTest.test_configure_yscrollincrementr[  r   c                 C   sH  |   }|jdddddd}|jdddddd}||\}}}}||\}}}}|ddd	 ||\}	}
}}||\}}}}| |	d | |
d	 | || ||	  | || ||
  ||| |jddd
 ||\}}}}||\}}}}| |d | || | ||	 ||  | ||
 ||  d S )Nr1   rz  group)tags   r   r  r6  r   )y)r   Zcreate_rectanglerF  Zmovetor   Z	tag_lower)r$   r%   Zi1Zi2Zx1Zy1_Zx2Zy2Zx1_2Zy1_2Zx2_2Zy2_2Zx1_3Zy1_3Zx2_3Zy2_3r   r   r   test_moveto  s(   zCanvasTest.test_movetoN)r    r9   r:   r`   r   r   r  r   r  r  r  r  r  r  r  r   r  r   r   r   r   r    s    	r  c                   @   s   e Zd ZdZdd Zdd Zedddej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%S )&ListboxTest)activestyler=   r>   r?   r   r   rg   rh   r@   rA   rB   rC   r   listvariablerG   r   r   r   
selectmoderQ  r   rI   rK   r   rY  c                 K   rL   r   )rM   ZListboxrN   rO   r   r   r   r     rQ   zListboxTest.createc                 C   r   )Nr  Zdotboxr  r   r   rw   r   r   r   test_configure_activestyle  r  z&ListboxTest.test_configure_activestyler[  r   r  c                 C   s&   |   }t| j}| |d| d S )Nr  )r   rM   Z	DoubleVarrN   ZcheckVariableParam)r$   r%   varr   r   r   test_configure_listvariable%  s   z'ListboxTest.test_configure_listvariablec                 C   sD   |   }| |dd | |dd | |dd | |dd d S )Nr  ZsingleZbrowseZmultipleZextendedr  rw   r   r   r   test_configure_selectmode*  s
   z%ListboxTest.test_configure_selectmodec                 C   r  )Nr   r   r   r   rw   r   r   r   r  1     z ListboxTest.test_configure_statec                 C   s  |   }| td |d W d    n1 sw   Y  d }|jdg|R   t|D ]\}}|j||d q0| t |  W d    n1 sPw   Y  | td |d W d    n1 skw   Y  | 	|ddd	 | 	|ddd
 | 	|ddd	 |d}| 
|t | D ](\}}| t|d t|dkr| 	||d| | 	|d |d| qd S )Nzitem number "0" out of ranger   z)red orange yellow green blue white violetr  )r=   zbad listbox index "red"redr=   )r=   r=   
Backgroundr*   r  )r=   r=   r  r*   Zvioletz@0,0)r  r  r  r  )r   r   r   itemconfiguresplitr  	enumerater   rG  r   assertIsInstancedictitemsZassertInlenitemcget)r$   r%   Zcolorsre  Zcolordkvr   r   r   test_itemconfigure5  s@   

zListboxTest.test_itemconfigurec                 C   s   |   }|ddddd |jd
i ||i | |d|d | | |d|| | td |jd
i |d	i W d    d S 1 sIw   Y  d S )Nr  r   r   r   r  r   r  zunknown color name "spam"r   )r   )r   r  r  r   r  r   r   )r$   rz   r   r%   r   r   r   check_itemconfigureP  s   "zListboxTest.check_itemconfigurec                 C      |  dd d S )Nr=   #ff0000r  r   r   r   r   test_itemconfigure_backgroundY     z)ListboxTest.test_itemconfigure_backgroundc                 C   r  )NZbgr  r  r   r   r   r   test_itemconfigure_bg\  r  z!ListboxTest.test_itemconfigure_bgc                 C   r  )NZfg#110022r  r   r   r   r   test_itemconfigure_fg_  r  z!ListboxTest.test_itemconfigure_fgc                 C   r  )Nrh   r  r  r   r   r   r   test_itemconfigure_foregroundb  r  z)ListboxTest.test_itemconfigure_foregroundc                 C   r  )Nr   r  r  r   r   r   r   #test_itemconfigure_selectbackgrounde  r  z/ListboxTest.test_itemconfigure_selectbackgroundc                 C   r  )Nr   z#654321r  r   r   r   r   #test_itemconfigure_selectforegroundh  r  z/ListboxTest.test_itemconfigure_selectforegroundc                 C   s   |   }|jdgdd tdD R   |  | |d | |d | |d | t|jd | t|jd  | t	|j | t	|jdd d S )	Nr   c                 s       | ]}d | V  qdS zel%dNr   rc  r   r   r   rf  m      z'ListboxTest.test_box.<locals>.<genexpr>r[  r<  rj  rD  r1   )
r   r  rn  packrE  rF  r  r   r   rG  r$   Zlbr   r   r   test_boxk  s    zListboxTest.test_boxc                 C   sp   |   }|jdgdd tdD R   |dtj |dd |d | | d | 	t
|jd d S )	Nr   c                 s   r  r  r   rc  r   r   r   rf  y  r  z0ListboxTest.test_curselection.<locals>.<genexpr>r[  r  r  r   )r  r   r  r   )r   r  rn  r  rM   ZENDZselection_setr   Zcurselectionr   rG  r  r   r   r   test_curselectionw  s    
zListboxTest.test_curselectionc                 C   s:  |   }|jdgdd tdD R   | |dd | |dd | |dd	 | |dd
 | |dd
 | |ddd | |ddd | |ddd | |ddd | t|jd | t|jd  | t|j | t|jdd | t|jddd | t|jd d S )Nr   c                 s   r  r  r   rc  r   r   r   rf    r  z'ListboxTest.test_get.<locals>.<genexpr>r[  el0r   el3r  el7r*   r<  r  )r  Zel4el5)r  Zel6r  r   )r  rD  r1   r  r  )r   r  rn  r   getr   r   rG  r  r   r   r   test_get  s"    zListboxTest.test_getN)r    r9   r:   r`   r   r  r   r   Ztest_configure_justifyZtest_justifyr  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r    s&    		r  c                   @   st   e Zd 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S )	ScaleTest)r   r=   bigincrementr>   r   r?   digitsrg   rh   r&  rA   rB   rC   r   lengthorientrG   r   r   
resolution	showvaluesliderlengthsliderreliefr   rI   tickintervalr(  troughcolorr   rK   verticalc                 K   rL   r   )rM   ZScalerN   rO   r   r   r   r     rQ   zScaleTest.createc                 C   r   )Nr  g(@g7@r~  r=  rw   r   r   r   test_configure_bigincrement  r   z%ScaleTest.test_configure_bigincrementc                 C   r  )Nr  r  r   rt  rw   r   r   r   test_configure_digits  r  zScaleTest.test_configure_digitsc                 C   s4   |   }t dkrdnt}| j|dddd|d d S )N)r[  r   rj  Fr&  r   -@333333.@r   )r   r   r   r9  )r$   r%   r   r   r   r   r:    s   zScaleTest.test_configure_fromc                 C   s(   |   }| |dd | |dd d S )Nr   r   r*   r  rw   r   r   r   test_configure_label  s   zScaleTest.test_configure_labelc                 C   r   )Nr     gffffff`@g33333`@5ir   rw   r   r   r   test_configure_length  r   zScaleTest.test_configure_lengthc                 C   r   )Nr  g@r   g@r   r=  rw   r   r   r   test_configure_resolution  r   z#ScaleTest.test_configure_resolutionc                 C   r   )Nr  rB  rw   r   r   r   test_configure_showvalue  r   z"ScaleTest.test_configure_showvaluec              	   C   r   )Nr  rj  r  333333/@r  Z3mr   rw   r   r   r   test_configure_sliderlength  r   z%ScaleTest.test_configure_sliderlengthc                 C   r   )Nr  r-  rw   r   r   r   test_configure_sliderrelief  r   z%ScaleTest.test_configure_sliderreliefc              	   C   s8   |   }| j|dddddtd | j|dddtd	 d S )
Nr  r1   333333@r  r   r   r   r  )r|   r   )r   r9  r   rU   rw   r   r   r   test_configure_tickinterval  s   
z%ScaleTest.test_configure_tickintervalc              	   C   r  )Nr(  i,  r  r  r3  r   )r   r9  r   rw   r   r   r   r?    r  zScaleTest.test_configure_toN)r    r9   r:   r`   default_orientr   r  r  r:  r  r  r  r  r  r  r  r?  r   r   r   r   r    s    	r  c                   @   sL   e Zd ZdZ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S )ScrollbarTest)r   activereliefr=   r>   r   r?   elementborderwidthrA   rB   rC   Zjumpr  rG   r   r   rI   r  rK   Tr  c                 K   rL   r   )rM   Z	ScrollbarrN   rO   r   r   r   r     rQ   zScrollbarTest.createc                 C   r   )Nr  r-  rw   r   r   r   test_configure_activerelief  r   z)ScrollbarTest.test_configure_activereliefc                 C   r   )Nr  r  r   r   1mr   rw   r   r   r   !test_configure_elementborderwidth  r   z/ScrollbarTest.test_configure_elementborderwidthc                 C   r  )Nr  r  
horizontalz4bad orientation "{}": must be vertical or horizontalr   r   rw   r   r   r   test_configure_orient  r  z#ScrollbarTest.test_configure_orientc                 C   sZ   |   }dD ]}|| | | | q|d | |  | t|jdd d S )N)arrow1Zsliderarrow2r*   r  r  )r   Zactivater   r  r   rG  )r$   sbrl   r   r   r   test_activate  s   

zScrollbarTest.test_activatec                 C   s   |   }|dd | | d | t|jdd | t|jdd | t|jdd  | t|jd | t|jddd d S )	N皙?皙?)r  r  abcdefg333333?gffffff?g?)r   setr   r  r   r   rG  )r$   r  r   r   r   test_set   s   zScrollbarTest.test_setN)r    r9   r:   r`   r   r   r  r  r   r  r   r  r  r  r   r   r   r   r    s    		r  c                   @   s.  e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	e
ddddd Ze
ddddd Ze
ddd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'd(Zd)d* Zd+d, Zd-d. Zd/d0 Ze
ddd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Ze
ddd;d< Z d=d> Z!d?S )APanedWindowTest)r=   r>   r?   	handlepad
handlesizer@   opaqueresizer  proxybackgroundproxyborderwidthproxyreliefrG   
sashcursorsashpad
sashrelief	sashwidth
showhandlerK   r  c                 K   rL   r   )rM   ZPanedWindowrN   rO   r   r   r   r     rQ   zPanedWindowTest.createc              	   C   r   )Nr  r  r  r  r  r  r   rw   r   r   r   test_configure_handlepad  r   z(PanedWindowTest.test_configure_handlepadc              
   C   &   |   }| j|ddddddtd d S )Nr  r[  g"@g333333%@r  2mr   r   r   r
   rw   r   r   r   test_configure_handlesize     
z)PanedWindowTest.test_configure_handlesizec                 C   (   |   }| j|dddddddtd	 d S )	Nr@   r   rr  rs  r   r   r  r   r  rw   r   r   r   r   $     
z%PanedWindowTest.test_configure_heightc                 C   r   )Nr  rB  rw   r   r   r   test_configure_opaqueresize)  r   z+PanedWindowTest.test_configure_opaqueresizer[  r   r  c                 C   r   )Nr  r   rw   r   r   r   test_configure_proxybackground-  r^  z.PanedWindowTest.test_configure_proxybackgroundc                 C   r  )	Nr  r   r   g333333@r   r   r   r   r  rw   r   r   r   test_configure_proxyborderwidth2  s
   
z/PanedWindowTest.test_configure_proxyborderwidthc                 C   r   )Nr  r-  rw   r   r   r   test_configure_proxyrelief9  r^  z*PanedWindowTest.test_configure_proxyreliefc                 C   r   )Nr  r+  rw   r   r   r   test_configure_sashcursor>  r   z)PanedWindowTest.test_configure_sashcursorc              	   C   r   )Nr  r[  r   r   r   r  r   rw   r   r   r   test_configure_sashpadB  r   z&PanedWindowTest.test_configure_sashpadc                 C   r   )Nr  r-  rw   r   r   r   test_configure_sashreliefF  r   z)PanedWindowTest.test_configure_sashreliefc              
   C   r  )Nr  rj  g333333&@r  r  r  r   r  rw   r   r   r   test_configure_sashwidthJ  r  z(PanedWindowTest.test_configure_sashwidthc                 C   r   )Nr  rB  rw   r   r   r   test_configure_showhandleO  r   z)PanedWindowTest.test_configure_showhandlec                 C   r  )	NrK   r   gfffff6y@gIy@r   r   r  r   r  rw   r   r   r   r   S  r   z$PanedWindowTest.test_configure_widthc                 C   s:   |   }t|}t|}|| || |||fS r   )r   rM   r   addr$   pr   r   r   r   r   create2X  s   




zPanedWindowTest.create2c                 C   s   |   \}}}| t|j ||}| |t | D ]"\}}| t|d | |||| | |d |	|| qd S )Nr  r  )
r-  r   rG  paneconfigurer  r  r  r   r  panecget)r$   r,  r   r   r  r  r  r   r   r   test_paneconfigure`  s   
z"PanedWindowTest.test_paneconfigureFc                 C   sv   dd }| j r	|rt|}| j r|rt}|j|fi ||i | ||||d | | ||||| d S )Nc                 S   s   | S r   r   r   r   r   r   <lambda>k  s    z5PanedWindowTest.check_paneconfigure.<locals>.<lambda>r  )r4   r   r.  r   r/  )r$   r,  r   rz   r   r|   	stringifyr   r   r   r   check_paneconfigurej  s   

z#PanedWindowTest.check_paneconfigurec                 C   sH   |  t| |j|fi |di W d    d S 1 sw   Y  d S )NZbadValue)r   r   r.  )r$   r,  r   rz   msgr   r   r   check_paneconfigure_badt  s   "z'PanedWindowTest.check_paneconfigure_badc                 C   8   |   \}}}| ||d|t| | ||dd d S )NZafterbad window path name "badValue"r-  r3  r   r5  r+  r   r   r   test_paneconfigure_afterx  
   
z(PanedWindowTest.test_paneconfigure_afterc                 C   r6  )Nbeforer7  r8  r+  r   r   r   test_paneconfigure_before~  r:  z)PanedWindowTest.test_paneconfigure_beforec                 C   >   |   \}}}| j||dddt dk d | ||dd d S )Nr@   rj  r  r2  bad screen distance "badValue"r-  r3  r   r5  r+  r   r   r   test_paneconfigure_height     
z)PanedWindowTest.test_paneconfigure_heightc                 C   4   |   \}}}| ||ddd | ||dd d S )NhideFr   z)expected boolean value but got "badValue"r-  r3  r5  r+  r   r   r   test_paneconfigure_hide  
   
z'PanedWindowTest.test_paneconfigure_hidec                 C   s4   |   \}}}| ||ddd | ||dd d S )NZminsizerj  r?  rE  r+  r   r   r   test_paneconfigure_minsize  
   
z*PanedWindowTest.test_paneconfigure_minsizec                 C   rC  )NrE   r   r1   r?  rE  r+  r   r   r   test_paneconfigure_padx  rI  z'PanedWindowTest.test_paneconfigure_padxc                 C   rC  )NrF   r   r1   r?  rE  r+  r   r   r   test_paneconfigure_pady  rI  z'PanedWindowTest.test_paneconfigure_padyc                 C   rC  )NZstickyZnsewZneswz[bad stickyness value "badValue": must be a string containing zero or more of n, e, s, and wrE  r+  r   r   r   test_paneconfigure_sticky  rI  z)PanedWindowTest.test_paneconfigure_stickyc                 C   rC  )NZstretchZalwalwayszEbad stretch "badValue": must be always, first, last, middle, or neverrE  r+  r   r   r   test_paneconfigure_stretch  rG  z*PanedWindowTest.test_paneconfigure_stretchc                 C   r=  )NrK   rj  r  r>  r?  r@  r+  r   r   r   test_paneconfigure_width  rB  z(PanedWindowTest.test_paneconfigure_widthN)F)"r    r9   r:   r`   r  r   r  r  r   r!  r   r"  r#  r$  r%  r&  r'  r(  r)  r   r-  r0  r3  r5  r9  r<  rA  rF  rH  rJ  rK  rL  rN  rO  r   r   r   r   r    sH    	










r  c                   @   s\   e Zd ZdZe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S )MenuTest)r   Zactiveborderwidthr   r=   r>   r?   r   rg   rh   postcommandrG   r   rI   tearofftearoffcommandr!   typec                 K   rL   r   )rM   rT   rN   rO   r   r   r   r     rQ   zMenuTest.createc                 C   r   )NrQ  r  rw   r   r   r   test_configure_postcommand  r   z#MenuTest.test_configure_postcommandc                 C   r   )NrR  rB  rw   r   r   r   test_configure_tearoff  r   zMenuTest.test_configure_tearoffc                 C   r   )NrS  r  rw   r   r   r   test_configure_tearoffcommand  r   z&MenuTest.test_configure_tearoffcommandc                 C   s   |   }| |dd d S )Nr!   r   r  rw   r   r   r   test_configure_title  s   zMenuTest.test_configure_titlec                 C   r   )NrT  r   rR  Zmenubarr   rw   r   r   r   test_configure_type  r  zMenuTest.test_configure_typec                 C   s   |   }|jdd | t|j | td |d W d    n1 s'w   Y  |d}| |t |	 D ],\}}| |t
 | |t | t|d | |d | | |d||d  q;|  d S )	Ntestr   zbad menu entry index "foo"ry   r1   r  r   r  )r   add_commandr   rG  entryconfigurer   r   r  r  r  r   tupler   r  	entrycgetr~   )r$   m1r  r  r  r   r   r   test_entryconfigure  s   
zMenuTest.test_entryconfigurec                 C   sN   |   }|jdd | |ddd |jddd | |ddd d S )NrZ  r[  r1   r   changed)r   r\  r   r_  r]  )r$   r`  r   r   r   test_entryconfigure_label  s
   z"MenuTest.test_entryconfigure_labelc                 C   s|   |   }t| j}t| j}|j|dddd | t|ddt| |jd|d | t|ddt| d S )NTFZNonsense)r   r   r   r   r1   r   )r   )	r   rM   Z
BooleanVarrN   Zadd_checkbuttonr   r   r_  r]  )r$   r`  Zv1Zv2r   r   r   test_entryconfigure_variable  s   
 z%MenuTest.test_entryconfigure_variableN)r    r9   r:   r`   r
   r   r   rU  rV  rW  rX  rY  ra  rc  rd  r   r   r   r   rP    s    rP  c                   @   s$   e Zd ZdZeZdd Zdd ZdS )MessageTest)r   aspectr=   r>   r?   rg   rh   rA   rB   rC   r   rE   rF   rG   rI   rk   r   rK   c                 K   rL   r   )rM   ZMessagerN   rO   r   r   r   r     rQ   zMessageTest.createc                 C   r   )Nrf     r   irt  rw   r   r   r   test_configure_aspect  r   z!MessageTest.test_configure_aspectN)r    r9   r:   r`   r
   r;   r   rh  r   r   r   r   re    s
    re  c                   @   s   e Zd Zdd Zdd ZdS )DefaultRootTestc                 C      |  tj d S r   )_test_widgetrM   rc   r   r   r   r   
test_frame  r  zDefaultRootTest.test_framec                 C   rj  r   )rk  rM   r}   r   r   r   r   
test_label  r  zDefaultRootTest.test_labelN)r    r9   r:   rl  rm  r   r   r   r   ri    s    ri  __main__)0ZunittestrM   r   rX   Ztest.supportr   Ztkinter.test.supportr   r   r   r   r   Ztkinter.test.widget_testsr	   r
   r   r   r   r   r   r   r   r   ZTestCaser<   rb   rf   r   r   r   r   r   r   r   r   r   rJ  r  r  r  r  r  rP  re  ri  Z	tests_guir    mainr   r   r   r   <module>   s|    (%(	@
^  Y C2 1D

