HEX
Server: Apache
System: Linux p3plzcpnl506847.prod.phx3.secureserver.net 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
User: slfopp7cb1df (5698090)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/python38/lib/python3.8/tkinter/test/test_ttk/__pycache__/test_widgets.cpython-38.pyc
U

�i�_�@sddlZddlZddlmZmZddlmZddlZddlmZddl	m
Z
mZmZm
Z
ddlmZmZmZmZmZmZmZed�Gdd	�d	e�ZGd
d�de
ej�ZGdd
�d
ee�Zee�Gdd�deej��Zee�Gdd�deej��ZGdd�de�Zee�Gdd�deej��Zee�Gdd�deej��Zee�Gdd�deej��Zeee�Gdd�deej��Z eee�Gdd�de ej��Z!eee�Gdd�deej��Z"ee�Gd d!�d!eej��Z#Gd"d#�d#eej�Z$ee�Gd$d%�d%eej��Z%ee�Gd&d'�d'eej��Z&e�'ej(d(kd)�ee�Gd*d+�d+eej���Z)eee�Gd,d-�d-eej��Z*eee�Gd.d/�d/e ej��Z+ee�Gd0d1�d1eej��Z,ee�Gd2d3�d3eej��Z-ee�Gd4d5�d5eej��Z.eee!e eeee$e*e"e&e#e%e)e-e.e+e,efZ/e0d6k�re�1�dS)7�N)�ttk�TclError)�requires)�
MockTclObj)�AbstractTkTest�tcl_version�get_tk_patchlevel�simulate_mouse_click)�add_standard_options�noconv�AbstractWidgetTest�StandardOptionsTests�IntegerSizeTests�PixelSizeTests�setUpModuleZguic@s$eZdZdd�Zdd�Zdd�ZdS)�StandardTtkOptionsTestscCs\|��}|�|dd�d}t�dkr*d}|j|dd|d�|jdd�}|�|dd�dS)	N�class��"attempt to change read-only option���r�beta��"Attempt to change read-only option�Foo��errmsg��class_)�create�assertEqualr�checkInvalidParam��self�widgetrZwidget2�r&�A/opt/python38/lib/python3.8/tkinter/test/test_ttk/test_widgets.py�
test_classs
z"StandardTtkOptionsTests.test_classcCs�|��}|j|dddd�|j|dddd�|j|dddd�|j|dd	d
d�|j|dddd�|�|dd
�|j|dddd�dS)N�paddingr)�0�Zexpected�)�5)r,r)r-�6)r,r�)r-r.�7)r,rr/r)r-r.r0�8)Z5pZ6pZ7pZ8pr&r�r �
checkParam�r$r%r&r&r'�test_paddings
�
�z$StandardTtkOptionsTests.test_paddingcCsj|��}|�|dd�d}t|d�r8dt|d���}|j|dd|d�|jdd�}|�|d	d�dS)
N�stylerzLayout Foo not found�default_orientzLayout %s.Foo not foundrrrr)r r!�hasattr�getattr�titler"r#r&r&r'�
test_style)s
�
�z"StandardTtkOptionsTests.test_styleN)�__name__�
__module__�__qualname__r(r5r;r&r&r&r'rs
rcs0eZdZdZ�fdd�Zdd�Zdd�Z�ZS)�
WidgetTestz,Tests methods available in every ttk widget.cs6t���tj|jddd�|_|j��|j��dS)NrZText)�width�text)�super�setUpr�Button�rootr%�pack�wait_visibility�r$��	__class__r&r'rC;s

zWidgetTest.setUpcCs�|j��|�|j�t|j��d�t|j��d��d�|�|j�dd�d�|�tj	|jjdd�|�tj	|jjdd�|�tj	|jjdd�dS)N��label���rr,)
r%�update_idletasksr!�identify�int�winfo_width�winfo_height�assertRaises�tkinterrrHr&r&r'�
test_identifyBs

��zWidgetTest.test_identifycCs>|�|j��d�|�|j�dg�d�|�|j�dg�d�|�|j�dg�d�|�|j�ddg�d�|�|j�ddg�d�|�|j�ddg�d�dd	�}|�|jjdg|d
fddi�d
ddif�|j��}|�tj|jjd
g�|�tj|jjdd
g�|�||j���|j�ddg�|�|j��d�dS)Nr&�	!disabledT�disabled)rV�active)z!activerWc[s||fS�Nr&)Zarg1�kwr&r&r'�test_cb_sz-WidgetTest.test_widget_state.<locals>.test_cb�hi�msgZthereZbadstate)rX)r!r%�stateZinstaterSrTr)r$r[Z	currstater&r&r'�test_widget_stateOs8���
�
��zWidgetTest.test_widget_state)r<r=r>�__doc__rCrUr_�
__classcell__r&r&rIr'r?8s
r?c@seZdZeZdS)�AbstractToplevelTestN)r<r=r>r�_conv_pixelsr&r&r&r'rbssrbc@seZdZdZdd�ZdS)�	FrameTest)	�borderwidthr�cursor�heightr)�reliefr6�	takefocusr@cKstj|jf|�SrY)rZFramerE�r$�kwargsr&r&r'r szFrameTest.createN�r<r=r>�OPTIONSr r&r&r&r'rdwsrdc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�LabelFrameTest)
rerrfrg�labelanchor�labelwidgetr)rhr6rirA�	underliner@cKstj|jf|�SrY)rZ
LabelFramerErjr&r&r'r �szLabelFrameTest.createcCsB|��}|j|ddddddddd	d
ddd
dd�|�|dd�dS)Nro�e�en�es�n�neZnw�sZse�sw�wZwnZwsz!Bad label anchor specification {}r�center)r �checkEnumParamr"r4r&r&r'�test_labelanchor�s"�zLabelFrameTest.test_labelanchorcCs8|��}tj|jddd�}|j|d|dd�|��dS)NZMuppZfoo)rA�namerpz.foor+)r r�LabelrEr3�destroy)r$r%rLr&r&r'�test_labelwidget�szLabelFrameTest.test_labelwidgetN)r<r=r>rmr r|r�r&r&r&r'rn�srnc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�AbstractLabelTestcCs�tj|jdd�}tj|jdd�}|j|||dd�|j||ddd�|j|||fdd�|j|||d|fdd�|j||ddd�|j||d	d
d�dS)N�image1)�masterr}�image2)r�r+rX)r�rXr�zimage1 active image2�spamzimage "spam" doesn't existr)rTZ
PhotoImagerEr3r")r$r%r}�imager�r&r&r'�checkImageParam�s�
�
�z!AbstractLabelTest.checkImageParamcCs(|��}|�|ddddddddd	�
dS)
N�compound�nonerAr�rz�topZbottom�left�right�r r{r4r&r&r'�
test_compound�s�zAbstractLabelTest.test_compoundcCs|��}|�|dddd�dS)Nr^rXrW�normal�r ZcheckParamsr4r&r&r'�
test_state�szAbstractLabelTest.test_statecCs|��}|�|dddd�dS)Nr@i�in���rr�r4r&r&r'�
test_width�szAbstractLabelTest.test_widthN)r<r=r>r�r�r�r�r&r&r&r'r��s
r�c@s$eZdZdZeZdd�Zdd�ZdS)�	LabelTest)�anchor�
backgroundrerr�rf�font�
foregroundr��justifyr)rhr^r6rirA�textvariablerqr@Z
wraplengthcKstj|jf|�SrY)rr~rErjr&r&r'r �szLabelTest.createcCs|��}|�|dd�dS)Nr�z3-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*r2r4r&r&r'�	test_font�s�zLabelTest.test_fontN)r<r=r>rmrrcr r�r&r&r&r'r��sr�c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�
ButtonTest)r�commandr�rf�defaultr�r)r^r6rirAr�rqr@cKstj|jf|�SrY)rrDrErjr&r&r'r �szButtonTest.createcCs|��}|�|dddd�dS)Nr�r�rXrWr�r4r&r&r'�test_default�szButtonTest.test_defaultcs2g�tj|j�fdd�d�}|��|���dS)Ncs
��d�S�N���appendr&��successr&r'�<lambda>��z(ButtonTest.test_invoke.<locals>.<lambda>�r�)rrDrE�invoke�
assertTrue)r$Zbtnr&r�r'�test_invoke�szButtonTest.test_invokeN)r<r=r>rmr r�r�r&r&r&r'r��sr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�CheckbuttonTest)rr�r�rfr��offvalue�onvaluer)r^r6rirAr�rq�variabler@cKstj|jf|�SrY)r�CheckbuttonrErjr&r&r'r �szCheckbuttonTest.createcCs |��}|�|ddddd�dS)Nr�r��ffffff@r�
any stringr�r4r&r&r'�
test_offvalue�szCheckbuttonTest.test_offvaluecCs |��}|�|ddddd�dS)Nr�r�r�rr�r�r4r&r&r'�test_onvalue�szCheckbuttonTest.test_onvaluecs�g��fdd�}tj|j|d�}|�|��d�|�tj|jj	|d�|�
�}|�|d�|�|d|j�	|d��|���d|d	<|�
�}|�t
|��|�t��d
�|�|d|j�	|d��dS)Ncs��d�dS�Nr��cb test calledr�r&r�r&r'�cb_test�s
z,CheckbuttonTest.test_invoke.<locals>.cb_testr�)Z	alternater�r�r�rr�r�r�)rr�rEr!r^rSrTr�tk�globalgetvarr�r��assertFalse�str�assertLessEqual�len)r$r��cbtn�resr&r�r'r��s(�
�

�zCheckbuttonTest.test_invokeN)r<r=r>rmr r�r�r�r&r&r&r'r��s
	r�csxeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Z�ZS)�	EntryTest)r�rrf�exportselectionr�r��invalidcommandr��showr^r6rir��validate�validatecommandr@�xscrollcommandcst���|��|_dSrY)rBrCr �entryrHrIr&r'rC!s
zEntryTest.setUpcKstj|jf|�SrY)rZEntryrErjr&r&r'r %szEntryTest.createcCs|��}|�|d�dS)Nr��r ZcheckCommandParamr4r&r&r'�test_invalidcommand(szEntryTest.test_invalidcommandcCs6|��}|�|dd�|�|dd�|�|dd�dS)Nr��*r� r2r4r&r&r'�	test_show,szEntryTest.test_showcCs|��}|�|dddd�dS)Nr^rWr��readonlyr�r4r&r&r'r�2s�zEntryTest.test_statec
Cs$|��}|�|ddddddd�dS)Nr��all�key�focusZfocusinZfocusoutr�r�r4r&r&r'�
test_validate7s�zEntryTest.test_validatecCs|��}|�|d�dS)Nr�r�r4r&r&r'�test_validatecommand<szEntryTest.test_validatecommandcCs>|�|j�d��|�tj|jjd�|�tj|jjd�dS)NrZnoindex)�assertIsBoundingBoxr��bboxrSrTrrHr&r&r'�	test_bboxAszEntryTest.test_bboxcCs�|j��|j��|j��tjdkr@|�|j�dd�d�n|�|j�dd�d�|�|j�dd�d�|�	t
j|jjdd�|�	t
j|jjdd�|�	t
j|jjdd�dS)N�darwinr,)�textareazCombobox.buttonr�rMr)r�rFrGrN�sys�platformZassertInrOr!rSrTrrHr&r&r'rUGs



�zEntryTest.test_identifycs�g��fdd�}d|jd<dd�|jd<||jd<|j��|���d|jd<|j��|�t��d	�||jd<d
d�|jd<|j��|�t��d	�d|jd<|j��|�t��d	�d|jd<|�tj|jj�dS)Ncs
��d�S�NTr�r&r�r&r'r�[r�z3EntryTest.test_validation_options.<locals>.<lambda>r�r�cSsdS)NFr&r&r&r&r'r�^r�r�r�rr�cSsdSr�r&r&r&r&r'r�ir�T)r�r�r�r!r�rSrTr)r$Ztest_invalidr&r�r'�test_validation_optionsYs&










z!EntryTest.test_validation_optionscsrg��fdd�}d|jd<|j�|�df|jd<|j�dd�|j�dd	�|��d
dg�|�|j��d	�dS)Ncs6d|��krdks(n��d�dS��d�dS�N�a�zFT)�lowerr�)Z	to_insert�Z
validationr&r'r�ws


z+EntryTest.test_validation.<locals>.validater�r�z%Sr��endr�r�FT)r��register�insertr!�get�r$r�r&r�r'�test_validationus
zEntryTest.test_validationcCs�dd�}|j�|�df|jd<|j�dd�|�|j��d�|�|j��d�|j�d	d�|�|j��d
�|j�dd�|�|j��d�|�|j��d
�|j�d�|�|j��d�|�|j��d�dS)NcSs.|D]$}d|��kr dksndSqdSr�)r�)ZcontentZletterr&r&r'r��sz-EntryTest.test_revalidation.<locals>.validatez%Pr�r�ZavocadoTr&rrZa1bF)�invalidr�)r�r�r�r!r�r^�deleter�r�r&r&r'�test_revalidation�szEntryTest.test_revalidation)r<r=r>rmrCr r�r�r�r�r�r�rUr�r�r�rar&r&rIr'r�sr�csPeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
�ZS)�ComboboxTest)r�rrfr�r�r�rgr�r��postcommandr�r^r6rir�r�r��valuesr@r�cst���|��|_dSrY)rBrCr �comborHrIr&r'rC�s
zComboboxTest.setUpcKstj|jf|�SrY)r�ComboboxrErjr&r&r'r �szComboboxTest.createc
Cs$|��}|�|ddddddd�dS)Nrg�d������LY@�fffff�Y@���rZ1ir�r4r&r&r'�test_height�szComboboxTest.test_heightcCsD|j��}|jjd|ddd�|jjd|ddd�|j��dS)N�<ButtonPress-1>r,��x�y�<ButtonRelease-1>)r�rQ�event_generaterN)r$r@r&r&r'�_show_drop_down_listbox�s
z$ComboboxTest._show_drop_down_listboxcszg�dg|jd<|j�d�fdd��|j��|j��|j��}|��|j��|j�d�|j��|���dS)Nr�r�z<<ComboboxSelected>>cs
��d�Sr�r���evtr�r&r'r��r�z1ComboboxTest.test_virtual_event.<locals>.<lambda>z<Return>)	r��bindrFrGrRr��updater�r�)r$rgr&r�r'�test_virtual_event�s
�




zComboboxTest.test_virtual_eventcsbg��fdd�|jd<|j��|j��|��|���d|jd<|��|�t��d�dS)Ncs
��d�Sr�r�r&r�r&r'r��r�z/ComboboxTest.test_postcommand.<locals>.<lambda>r�rr�)r�rFrGr�r�r!r�rHr&r�r'�test_postcommand�s



zComboboxTest.test_postcommandcs��fdd�}���jdtdkr$dnd�|dd��j�jddd	d
����jdd	����jdd����jdd�dd
dg�jd<�j�d�|dd��j�d�|dd��j�d�|dd��j�d�d�jd<|dd��jjd
ddgd����jd�j�rdnd�dddg�jd<���jd�j�rDdnd�dddg�jd<���jd�j�rrdnd���t	j
�jjt�jd����t	j
�jjd�tj
�jd
ddgd�}��|d�j�r�d nd!�|��dS)"Ncs(���j��|����j��|�dSrY)r!r�r��current)ZgetvalZcurrvalrHr&r'�check_get_current�sz3ComboboxTest.test_values.<locals>.check_get_currentr��rr,r&rrM�mon tue wed thur�ZmonZtueZwedZthurr+��*g��Q�	@rr�r�r��crKr�d)r�rKrr�r���1r�2�1 {} 2�a b�a	b�a
b�rrr�{a b} {a	b} {a
b}�a\tb�"a"�} {�rrr�a\\tb {"a"} \}\ \{�rrr�1 2 {})r!r�rr3�setr�	configure�wantobjectsrSrTrr�rr�rEr)r$rZcombo2r&rHr'�test_values�sZ�
�




����
�zComboboxTest.test_values)r<r=r>rmrCr r�r�r�r�rrar&r&rIr'r��s	r�csXeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Z�ZS)�PanedWindowTest)rrfrg�orientr6rir@cst���|��|_dSrY)rBrCr �panedrHrIr&r'rC$s
zPanedWindowTest.setUpcKstj|jf|�SrY)rZPanedWindowrErjr&r&r'r (szPanedWindowTest.createcCsd|��}|�t|d�d�d}t�dkr.d}|j|dd|d�|jdd�}|�t|d�d�dS)	Nr�verticalrrr�
horizontalr)r)r r!r�rr"r#r&r&r'�test_orient+s

�zPanedWindowTest.test_orientcCst�|j�}t�|�}|�tj|jj|�|��|��t�|j�}t�|�}|�tj|jj|�|��|��t�|j�}|j�|�|�tj|jj|�t�|j�}|j�|�|�	|j�
d�|j�
d��|�tj|jj
d�|��|��|�tj|jj
d�dS)Nrr�rK)rr~r rSrTr�addrrEr!�pane)r$rL�childZ
good_childZother_childr&r&r'�test_add6s(

zPanedWindowTest.test_addcCs`|�tj|jjd�|�tj|jjd�|j�t�|j��|j�d�|�tj|jjd�dS)Nr)	rSrTrr �forgetr$rr~rErHr&r&r'�test_forgetRs
zPanedWindowTest.test_forgetcCst|�tj|jjdd�|�tj|jjdd�|�tj|jjdd�t�|j�}t�|j�}t�|j�}|�tj|jjd|�|j�d|�|j�d|�|�|j�	�t
|�t
|�f�|j�d|�|�|j�	�t
|�t
|�f�|j�d|�|�|j�	�t
|�t
|�t
|�f�|j�	�}|j�d|�|�||j�	��|j�||�|�|j�	�t
|�t
|�t
|�f�dS)Nrr�)rSrTrr r�rr~rEr!�panesr�)r$r&�child2�child3r*r&r&r'�test_insert[s.�
�zPanedWindowTest.test_insertcCs�|�tj|jjd�t�|j�}|j�|�|�	|j�d�t
�|�|jjddd�|jr\dnd�|�|j�dd�|jr|dnd�|�|j�d�|j�t
|���|jtj|jjddd�dS)Nr��weightr*r/Z	somevalue)Z	badoption)rSrTrr r%rr~rEr$�assertIsInstance�dictr!rr�)r$r&r&r&r'�	test_pane~s�� �zPanedWindowTest.test_panecCs|�tj|jjd�|�tj|jjd�|�tj|jjd�tj|jdd�}|jj|dd�|�tj|jjd�tj|jdd�}|j�|�|�tj|jjd�|jjdd	d
�|j�	�|j�d�}|j�dd�|�
||j�d��|�|j�d�t�dS)Nrrr��rAr�r.�bTZboth)�expand�filli�)
rSrTrr Zsashposrr~r$rFrG�assertNotEqualr0rP)r$r&r+Zcurr_posr&r&r'�test_sashpos�s
zPanedWindowTest.test_sashpos)
r<r=r>rmrCr r#r'r)r-r2r8rar&r&rIr'rs	#rc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�RadiobuttonTest)rr�r�rfr�r)r^r6rirAr�rq�valuer�r@cKstj|jf|�SrY)r�RadiobuttonrErjr&r&r'r �szRadiobuttonTest.createcCs |��}|�|ddddd�dS)Nr:r�r�rr�r�r4r&r&r'�
test_value�szRadiobuttonTest.test_valuecs6g��fdd�}t�|j�}tj|j||dd�}tj|j||dd�}|jrTdd�}nt}|��}|�|d�|�||d	�|�	��|�|�	�||j
�|d
���|���d|d<|��}|�t
|�d�|�t��d�|�||d	�|�	��|�|�	�||j
�|d
���|�t
|d
�t
|d
��dS)
Ncs��d�dSr�r�r&r�r&r'r��s
z,RadiobuttonTest.test_invoke.<locals>.cb_testr)r�r�r:r�cSs|SrYr&�r�r&r&r'r��r�z-RadiobuttonTest.test_invoke.<locals>.<lambda>r�r:r�rr�)rTZIntVarrErr;rrPr�r!r�r�r�r�r�r�r�)r$r�Zmyvarr�Zcbtn2�convr�r&r�r'r��s<
�
�

�

�zRadiobuttonTest.test_invokeN)r<r=r>rmr r<r�r&r&r&r'r9�sr9c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�MenubuttonTest)rr�rf�	directionr��menur)r^r6rirAr�rqr@cKstj|jf|�SrY)rZ
MenubuttonrErjr&r&r'r �szMenubuttonTest.createc	Cs"|��}|�|dddddd�dS)Nr@ZaboveZbelowr�r��flushr�r4r&r&r'�test_direction�s�zMenubuttonTest.test_directioncCs4|��}tj|dd�}|j|d|td�|��dS)NrA)r}�r>)r rTZMenur3r�r)r$r%rAr&r&r'�	test_menu�szMenubuttonTest.test_menuN)r<r=r>rmr rCrEr&r&r&r'r?�sr?csheZdZdZeZdZ�fdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Z�ZS)�	ScaleTest)rr�rf�from�lengthrr6ri�tor:r�r"cs,t���|��|_|j��|j��dSrY)rBrCr �scalerFr�rHrIr&r'rC�s


zScaleTest.setUpcKstj|jf|�SrY)rZScalerErjr&r&r'r �szScaleTest.createcCs"|��}|j|dddddd�dS)NrGr��������-@�333333.@FrD�r ZcheckFloatParamr4r&r&r'�	test_fromszScaleTest.test_fromcCs |��}|�|ddddd�dS)NrH�gffffff`@g33333�`@Z5i�r �checkPixelsParamr4r&r&r'�test_lengthszScaleTest.test_lengthc	Cs$|��}|j|ddddddd�dS)NrI�,rKrL���FrDrMr4r&r&r'�test_to	szScaleTest.test_toc	Cs$|��}|j|ddddddd�dS)Nr:rSrKrLrTFrDrMr4r&r&r'r<
szScaleTest.test_valuecs�dddg�|j�d�fdd��}d|jd<d|jd<d|jd	<|���dddg�|jjd
dd�|jjd
dd�|jjdd�|���dS)Nr�z<<RangeChanged>>cs���SrY)�popr��Zfailurer&r'r�r�z-ScaleTest.test_custom_event.<locals>.<lambda>�
rG�from_rrIrKr,)rYrIr���)rI)rJr�r�r)r$Zfuncidr&rWr'�test_custom_events





zScaleTest.test_custom_eventcCs�|jrdd�}nt}|j��}|�|j�|d�|jd�|�||j�dd��||jd��|�|j��|jd�d|jd<|�|j��|jd�|�tj|jjdd�|�tj|jjdd�dS)	NcSs|SrYr&r=r&r&r'r�&r�z$ScaleTest.test_get.<locals>.<lambda>rrIrGr:�r)	r�floatrJrQr!r�rSrTr)r$r>Zscale_widthr&r&r'�test_get$s

$
zScaleTest.test_getcCst|jrdd�}nt}||jd�}|d}|j�|�|�||j���|�||jd�}|j�|d�|�||j���|�t�|j�}||jd<|�|d�|�||j���|���|�||j���|d�~|d|jd	<|�||j���|d�|�||j���||jd	��|�||j�d
d
��|�|�||j�|j�	�d
��|�|�
tj|jjd�dS)NcSs|SrYr&r=r&r&r'r�8r�z$ScaleTest.test_set.<locals>.<lambda>rIrXrGr�r�r,r:r)rr]rJrr!r�rTZ	DoubleVarrErQrSr)r$r>�maxZnew_max�min�varr&r&r'�test_set6s,

  zScaleTest.test_set)r<r=r>rmrrcr7rCr rNrRrUr<r[r^rbrar&r&rIr'rF�srFc@sHeZdZdZeZdZdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�ZdS)�ProgressbarTest)rrfrrH�mode�maximumZphaser6rir:r�r"cKstj|jf|�SrY)rZProgressbarrErjr&r&r'r dszProgressbarTest.createcCs|��}|�|dddd�dS)NrHgfffffY@g�����YL@Z2irPr4r&r&r'rRgszProgressbarTest.test_lengthc	Cs$|��}|j|ddddddd�dS)Nre�fffff�b@������lS@rrTFrDrMr4r&r&r'�test_maximumkszProgressbarTest.test_maximumcCs|��}|�|ddd�dS)NrdZdeterminateZ
indeterminater�r4r&r&r'�	test_modeoszProgressbarTest.test_modecCsdSrYr&rHr&r&r'�
test_phasesszProgressbarTest.test_phasec	Cs$|��}|j|ddddddd�dS)Nr:rfrgrrTFrDrMr4r&r&r'r<ws�zProgressbarTest.test_valueN)
r<r=r>rmrrcr7r rRrhrirjr<r&r&r&r'rcZsrcr�z"ttk.Scrollbar is special on MacOSXc@seZdZdZdZdd�ZdS)�
ScrollbarTest)rr�rfrr6rir!cKstj|jf|�SrY)rZ	ScrollbarrErjr&r&r'r �szScrollbarTest.createN�r<r=r>rmr7r r&r&r&r'rk}srkcspeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Z�ZS)�NotebookTest)rrfrgr)r6rir@cs\t���|jdd�|_t�|j�|_t�|j�|_|jj	|jdd�|jj	|jdd�dS)Nr�r)r�r3r4)
rBrCr �nbrr~rE�child1r+r$rHrIr&r'rC�s
zNotebookTest.setUpcKstj|jf|�SrY)rZNotebookrErjr&r&r'r �szNotebookTest.createc	Cs<|j�d�|j�|j�|�tj|jj|j�|�	|j�
d�d�|j�|j�|�	|j�
d�d�|j�|j�|�
|j�d��|jj|jdd�|j��|j��tjdkr�d}nd	}|�	|j�|�|j�d��td
dd
�D]D}z&|jjd|dd�dk�rW�q8Wq�tjk
�r*Yq�Xq�|�d
�dS)Nrr�r�rr�r3r�z@20,5z@5,5r,r�z@%d, 5zTab with text 'a' not found)ror(�hider+rSrTr�tabrpr!�indexr$�selectr�rFrGr�r��range�fail)r$Ztb_idx�ir&r&r'�test_tab_identifiers�s,


z!NotebookTest.test_tab_identifierscCsd|�tj|jjd�|�tj|jjd�|�tj|jjd�|�tj|jjd�|jtj|jjt�|j�dd�|j�	�}|j�|j
�|j�|j
�|�|j�	�|�t�|j�}|jj|dd�|j�	�}|j�d�}|j�|j
�}|j�|j
�|j�|j
�|�|j�	�|�|�|j�|j
�|�|�t|j
�|j�	�|�|�|j�d�|d�dS)	NrMr\�option)�unknownrr3rr�)rSrTrrorqr$rr~rE�tabsrpr!rsr+r�)r$r{r&ZcurrZchild2_indexr&r&r'�test_add_and_hidden�s,�

z NotebookTest.test_add_and_hiddencCs�|�tj|jjd�|�tj|jjd�|�tj|jjd�|j��}|j�|j�}|j�|j�|�t	|j�|j���|�
t|�dt|j����|j�|j�|�
|j�|j�d�|�
||j�|j��dS)NrMr\r�)rSrTrror(r{rsrpZassertNotInr�r!r�r$r7)r$r{Zchild1_indexr&r&r'r)�s
zNotebookTest.test_forgetcCs�|�tj|jjd�|�tj|jjd�|�|j�d�t�|�|j�|j�d�|�|j�|j	�d�|�|j�d�d�dS)NrMr�rr�rK)
rSrTrrorsr0rPr!rpr+rHr&r&r'�
test_index�szNotebookTest.test_indexcCs�|j��}|j�d|d�|�|j��|d|df�|j�|j|j�|�|j��|�|j�d|j�|�|j��|d|df�|j�dd�|�|j��|�|�tj|jjd|d�|�tj|jjd|d�t	�
|j�}|j�d|�|�|j��|dt|�|df�|j�
|�|�|j��|�|j�|j|�|�|j��t|�f|�|j�
|�|�tj|jjd|�|�tj|jjd|�|�tj|jjdd�|�tj|jjdd�|�tj|jjdd�dS)Nr�rr�rKrM)ror{r�r!rpr+rSrTrrr~rEr�r()r$r{r,r&r&r'r-�s0
$zNotebookTest.test_insertcs�|j��|j��g�g�|j�d�fdd��|j�d�fdd��|�|j��t|j��|j�|j�|�	��|�|j��t|j��|j�
�|�	��dS)Nz<Unmap>cs
��d�Sr�r�r�r�r&r'r�r�z*NotebookTest.test_select.<locals>.<lambda>z<<NotebookTabChanged>>cs
��d�Sr�r�r�)�tab_changedr&r'r�r�)rorFrGrpr�r!rtr�r+r�r�rHr&)r�r~r'�test_selects


�

zNotebookTest.test_selectcCs�|�tj|jjd�|�tj|jjd�|�tj|jjd�|�|j�|j�t�|�|jj|jdd�d�|�|j�|jd�d�|jj|jdd�|�|jj|jdd�d�|�|j�|jd�d�dS)NrMZnotabr3r�rA�abc)	rSrTrrorrr0rpr1r!rHr&r&r'�test_tab&szNotebookTest.test_tabcCsH|�t|j���d�|j�|j�|j�|j�|�|j��d�dS)NrKr&)r!r�ror{r(rpr+rHr&r&r'�	test_tabs4szNotebookTest.test_tabscCs0|j��|j��|j�d�t|jdd�|j��|j�d�|�|j��t|j	��|j��|j�d�|�|j��t|j
��|j��|j�d�|�|j��t|j	��|jj|j
ddd�|j��|j��t|jdd�t
jdk�r|j�d�n|j�d	�|�|j��t|j
��dS)
Nrr,z
<Control-Tab>z<Shift-Control-Tab>r�)rArqr�z
<Option-a>z<Alt-a>)rorFrGrtr	Zfocus_forcer�r!r�r+rprrZenable_traversalr�r�rHr&r&r'�test_traversal=s*






zNotebookTest.test_traversal)r<r=r>rmrCr rxr|r)r}r-rr�r�r�rar&r&rIr'rm�s
!	rmcspeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Z�ZS)�SpinboxTest)r�rr�rfr�r�r��formatrG�	incrementr�r�r�r^r6rir�rIr�r�r�r@�wrapr�cs"t���|��|_|j��dSrY)rBrCr �spinrFrHrIr&r'rCbs

zSpinboxTest.setUpcKstj|jf|�SrY)r�SpinboxrErjr&r&r'r gszSpinboxTest.createcCsZ|j��}|j��}|d}|dd}|jjd||d�|jjd||d�|j��dS)Nr,rKr�r�r��r�rQrRr�rN�r$r@rgr�r�r&r&r'�_click_increment_arrowjs

z"SpinboxTest._click_increment_arrowcCsZ|j��}|j��}|d}|dd}|jjd||d�|jjd||d�|j��dS)Nr,rK�r�r�r�r�r�r&r&r'�_click_decrement_arrowss

z"SpinboxTest._click_decrement_arrowcs�g��fdd�|jd<|j��|��|j��|���|��|�t��d�d|jd<|j��|��|��|j��|�t��d�dS)Ncs
��d�Sr�r�r&r�r&r'r�r�z*SpinboxTest.test_command.<locals>.<lambda>r�rKr)r�r�r�r�r�r!r�rNrHr&r�r'�test_command|s





zSpinboxTest.test_commandcCsbd|jd<d|jd<|j�d�|j��|��|�|j��d�|��|�|j��d�dS)NrrGr,rIr�r-)r�rr�r�r!r�rHr&r&r'rU�s


zSpinboxTest.test_tocCsbd|jd<d|jd<|j�d�|j��|��|�|j��d�|��|�|j��d�dS)Nr�rGrXrIrKr)r�rr�r�r!r�rHr&r&r'rN�s


zSpinboxTest.test_fromcCs�d|jd<d|jd<d|jd<|j�d�|j��|��|�|j��d�d	|jd<|j��|��|�|j��d
�dS)NrrGrXrIr�r�r�r-rK�3)r�rr�r�r!r�r�rHr&r&r'�test_increment�s





zSpinboxTest.test_incrementcCs�|j�d�d|jd<|j��|��|j��}|�t|�d�|�|�d�d�d|jd<|j��|��|j��}|�d|k�|�t|�d�dS)Nr�z%10.3fr�rX�.rr)	r�rr�r�r�r!r�rsr�)r$r:r&r&r'�test_format�s





zSpinboxTest.test_formatcCs�d|jd<d|jd<|j�d�d|jd<|j��|��|�|j��d�|��|�|j��d�d	|jd<|j��|��|�|j��d�dS)
NrXrIr�rGTr��10rF)r�rr�r�r!r�r�rHr&r&r'�	test_wrap�s





zSpinboxTest.test_wrapcCs�|�|jdtdkrdnd�|j|jdddd�|�|jdd�|�|jdd�|�|jdd�d	d
dg|jd<|j�d	�|j��|��|�|j��d�|��|�|j��d	�|jj	d
dd
gd�|�|jd|j
r�dnd�dddg|jd<|�|jd|j
�rdnd�dddg|jd<|�|jd|j
�rBdnd�tj|j
d
d
dgd�}|�|d|j
�rtdnd�|��dS)Nr�rr&rrrr+rr�r�rrrKr	r
r
rrrrrrrrrrrr)r!r�rr3rr�r�r�r�rrrr�rEr)r$Zspin2r&r&r'r�sH��

���
�zSpinboxTest.test_values)r<r=r>rmrCr r�r�r�rUrNr�r�r�rrar&r&rIr'r�Xs		
r�cs�eZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Z�ZS)0�TreeviewTest)r�columnsrf�displaycolumnsrgr)�
selectmoder�r6rir�Zyscrollcommandcst���|jdd�|_dS)Nrrn)rBrCr �tvrHrIr&r'rC
s
zTreeviewTest.setUpcKstj|jf|�SrY)rZTreeviewrErjr&r&r'r szTreeviewTest.createcCs:|��}|j|dddd�|�|dd�|�|dd�dS)Nr��a b c�r�r4rr+rr2r4r&r&r'�test_columnss
�zTreeviewTest.test_columnscCs�|��}d|d<|j|dddd�|�|dd�|j|dddd�|�|dd	�|j|dd
dd�|j|dd
dd�|j|dddd�dS)Nr�r�r�zb a c)r4r�rr+�#all)r�)rKr�r)r�r4rzInvalid column index dr)r�rKrzColumn index 3 out of bounds)r�rZzColumn index -2 out of bounds)r r3r"r4r&r&r'�test_displaycolumnss&
�
�
�
�
�z TreeviewTest.test_displaycolumnsc	Cs8|��}|j|ddddddd�|j|ddd	td�dS)
Nrgr�r�rZ3cFrDr�r�)r rQrr4r&r&r'r�+szTreeviewTest.test_heightcCs|��}|�|dddd�dS)Nr�r�ZbrowseZextendedr�r4r&r&r'�test_selectmode0s�zTreeviewTest.test_selectmodecCs^|��}|j|dddd�|�|dd�|�|dd�|j|dddd�|j|ddd	d�dS)
Nr�z
tree headings)�tree�headingsr+)r�r�r�)r�r�)r�r2r4r&r&r'r�5s
�zTreeviewTest.test_showcCs�|j��|�|j�d�d�|j��|j��|j�dd�}|j��}|�|�|j�|d�}|�	|�dg|jd<|jj
ddd�|j�|dd�}|jj
ddd�}|js�t|�}|�|d|d|�|j�|d�}|�|j�|�d�dS)	Nrr�r�testr��2�r@�#0)
r�rFr!r�rGr�r��get_childrenr�r��columnrrP)r$�item_idZchildrenr�Zbbox_column0Z
root_widthrpr&r&r'r�>s$





zTreeviewTest.test_bboxcCs�|�|j��d�|j�dd�}|�|j��t�|�|j��d|�|j�dd�}|j�dd�}|j�|||�|�|j�|�||f�|�tj	|jj||�|j�|�|�|j�|�d�|j�d�|�|j��d�dS)Nr&rr�r)
r!r�r�r�r0�tupleZset_childrenrSrTr)r$r�r+r,r&r&r'�
test_childrenYs"�zTreeviewTest.test_childrencCs�|�|j�d�t�|jr2|�|jjddd�t�|jjddd�|�|j�dd�|jr\dnd�|�|jjddd�|jr~dnd�|jtj	|jjddd�|�tj	|jjd�d	d
iddid
diddiddig}|D]}|jtj	|jjdf|�q�dS)Nr�r�rXr@r��X��idr�Zunknown_optionz
some valueZstretchZwrongr�Zminwidth)
r0r�r�r1rrPr!rSrTr)r$Zinvalid_kwsrZr&r&r'�test_columnus,����zTreeviewTest.test_columncCs�|�tj|jjd�|j�dd�}|j�|d�}|�|j��|f�|�|j�|�|f�|j�|�|�|j���|�tj|jj	|dd�|j�dd�}|j�dd�}|�|j��||f�|j�||�|�|j���dS)Nr�rr�)
rSrTrr�r�r�r!r�r��reattach)r$r��item2�item1r&r&r'�test_delete�s$�zTreeviewTest.test_deletecCs�|j�dd�}|j�|d�}|j��}|j��|�||j���|�|j��|f�|�|j�|�|f�|j�|�|�|j���|j�|dd�|�|j��|f�|�|j�|�|f�|j�|dd�|�|j��||f�|�|j�|�d�|�t	j
|jjddd�|�t	j
|jjd�|�t	j
|jj|dd�|�t	j
|jj|dd�|j�||�|�|j��d�|�|j�|�d�dS)Nrr�r&ZnonexistentZotherparentr�)r�r�r��detachr!r�r��moverSrTr)r$r�r��prevr&r&r'�test_detach_reattach�sP

����z!TreeviewTest.test_detach_reattachcCsT|�|j�d�d�|�|j�d�d�|�|j�i�d�|�tj|jjd�dS)NZ	somethingFrT)r!r��existsrSrTrrHr&r&r'�test_exists�szTreeviewTest.test_existscCst|�|j��d�|j�dd�}|j�|�|�|j��|�|j�|�|�|j��d�|�tj|jjd�dS)Nrr�r\)r!r�r�r�r�rSrTr)r$r�r&r&r'�
test_focus�szTreeviewTest.test_focuscCs�|�|j�d�t�|jjddd�|�|j�dd�d�|�|jjddd�d�|jtj|jjddd�|jtj|jjddd�dS)Nr�r\r3rA)r�r�)r�)r0r��headingr1r!rSrTrrHr&r&r'�test_heading�s��zTreeviewTest.test_headingcs��fdd�}g��j���j���jjd�fdd�d��jjddd��j��|d	d	��sn��d
�g��jjj}�jjdt	�jjddd��d���
|�jjj�|d	d	��sƈ�d
�dS)Ncst�j||��j��dSrY)r	r�r�r�rHr&r'�simulate_heading_click�szBTreeviewTest.test_heading_callback.<locals>.simulate_heading_clickr�cs
��d�Sr�r�r&r�r&r'r�r�z4TreeviewTest.test_heading_callback.<locals>.<lambda>r�r�r�r,z>The command associated to the treeview heading wasn't invoked.)r�rFrGr�r�r�rvr�Z_tclCommandsr�r!)r$r��commandsr&)r$r�r'�test_heading_callback�s"





 
z"TreeviewTest.test_heading_callbackcCsL|�tj|jjd�|�|j�d�d�|j�dd�}|j�dd�}|j�|d�}|j�|d�}|�|j�|�d�|�|j�|�d�|�|j�|�d�|�|j�|�d�|j�|dd�|�|j�|�d�|�|j�|�d�|j�|�|�|j�|�d�|j�|�|�|j�|�d�|j�	|�|�tj|jj|�dS)NZwhatrrr�r�)
rSrTrr�rsr!r�r�r�r�)r$r�r��c1�c2r&r&r'r}s&zTreeviewTest.test_indexc	Cs�|�tj|jjdd�|jtj|jjdddd�|jtj|jjdddd�|�|j�|jjdddd���|�|j�|jjdddd���|�tj|jjdd�|j�ddd	�}|�|d	�|�tj|jjddd	�|�tj|jjddtd	��d
}|jjdd|fd�}|�|j�	|d�|j
�r&|fn|�|�|jj	|dd�|j
�rL|fn|�|jj	||j�|jj	|dd��d�|�|jj	|dd�|j
�r�|fn|�|�
|j�	|�t�|jj	|dd�|�|jj	|dd��|jjddd
d|gd�}|�|jj	|dd�|j
�rdd|fnd|�|jj	|gd�|�|jj	|dd��|jj	|dd�|�|jj	|dd�|j
�rpdnd�|jjdddd||ffd�}|�|jj	|dd�|j
�r�dd||ffn
d||f�|�|jj	|jjdddd�dd�d�|�|jj	|jjdd|d�dd�|�|j�ddd�}|�|d�|j�ddd�}|�|d�|�tj|jjddd�|�tj|jjddd�dS)Nr�r�r)�openZpleaseTFZmiddlez
first-itemuábar	r�r�rK��tagsrrz1 2 %s�r�rK)rrz1 2r�z%s %sz{a b c} {%s %s}z
Label herer3rr*gz0.0)rSrTrr�r�r�r�r!r�itemrrEZ	splitlistr0r1)r$Zitemidr:r�r&r&r'�test_insert_item<s���  ����$���
�
�
��
��zTreeviewTest.test_insert_itemcCs�|�t|jjd�|�tj|jjd�|�tj|jjd�|�tj|jjd�|�tj|jj	d�|j�
dd�}|j�
dd�}|j�
|d�}|j�
|d�}|j�
|d�}|�|j��d�|j�||�|�|j��||f�|j�|�|�|j��|f�|j�||�|�|j��|||f�|j�|�|�|j��||||f�|j��|�|j��||||f�|j�||�|�|j��|||f�|j�|�|�|j��||f�|j��|�|j��||f�|j�	||�|�|j��||f�|j�	|�|�|j��|f�|j�	�|�|j��|f�|jj
dddd�|j�d�|�|j��d�|jj
ddd	d�|j�d	�|�|j��d
�|jj
dddd�|j�d�|�|j��d�|jj
ddd
d�|j�d
�|�|j��d�|j��|�|j��d�|j�||f�|�|j��||f�|j�||f�|�|j��|||f�|j�||f�|�|j��||f�|j�	||f�|�|j��||f�dS)Nr�r�rr�r&�with spacesr�)r��{brace)r��
unicode€)r�sbytes€)ubytes€)rS�	TypeErrorr�Z	selectionrTrZ
selection_setZ
selection_addZselection_removeZselection_toggler�r!)r$r�r�r�r�Zc3r&r&r'�test_selection�sn



zTreeviewTest.test_selectioncCs�ddg|jd<|jjddddgd�}|�|j�|�ddd	��|j�|dd�|�|jj|dd�|jrjd
nd�dg|jd<|�|j�|�ddi�|j�|dd�|�|jj|dd�d�|�|jj|dd�|jr�d
nd�|j�|dd�|�|j�|d�|j�r
dnd�|�|jj|dd�|j�r.dnd�|�|j�|�|j�rRddinddi�|�tj|jj|d�|�tj|jj|dd�|�tj|jjd�dS)N�A�Br�rr�r�r4r	)r�r�)r�r�za a)r�)r4r�zb a�{Z123)r�r�z123 aZnotme)	r�r�r!rr�rrSrTr)r$r�r&r&r'rb�s6�����zTreeviewTest.test_setc	sBg�|jjdddgd�}|jjdddgd�}|j�dd�fdd��|j�dd�fd	d��|j��|j��|j��t�}t�}td
dd�D]@}t|�d
kr�q�|j�	|�}|r�||kr�|�
|�|�
|�q�|�t|�d
�|D]}t|jd
|�q�|�t��d�t
�ddd
��ddd
��D]}|�|d��q*dS)Nrr��callr�r�cs
��d�Sr�r�r���eventsr&r'r��r�z,TreeviewTest.test_tag_bind.<locals>.<lambda>r�cs
��d�S)NrKr�r�r�r&r'r��r�rr�rXrKr�r�r�)r�r�Ztag_bindrFrGr�rrur�Zidentify_rowr$r!r	�zip)	r$r�r�Zpos_y�foundrwr�r�r�r&r�r'�
test_tag_bind�s6

�

�



"zTreeviewTest.test_tag_bindcCs�|�t|jj�|jtj|jjddd�|jjddd�|�t|j�dd��d�|�t|jjddd��d�|�|j�d�t	�dS)Nr�Zblue)Zsky)r�r�)
rSr�r�Z
tag_configurerTrr!r�r0r1rHr&r&r'�test_tag_configures���zTreeviewTest.test_tag_configurecCs|jjddddgd�}|jjddddgd�}|�t|jj�|�t|jjdd�|�|j�d|��|�|j�d|��|�|j�d|��|�|j�d|��|�|j�d	|��|�|j�d	|��|�|j�d�|f�|�|j�d�|f�|�|j�d	�d
�dS)Nrr�zItem 1Ztag1)rAr�zItem 2Ztag2znon-existingZtag3r&)	r�r�rSr�Ztag_hasrr�r�r!)r$r�r�r&r&r'�test_tag_hasszTreeviewTest.test_tag_has)r<r=r>rmrCr r�r�r�r�r�r�r�r�r�r�r�r�r�r�r}r�r�rbr�r�r�rar&r&rIr'r�s0	*"MG!"r�c@seZdZdZdZdd�ZdS)�
SeparatorTest)rrfrr6rir"cKstj|jf|�SrY)rZ	SeparatorrErjr&r&r'r 7szSeparatorTest.createNrlr&r&r&r'r�/sr�c@seZdZdZdd�ZdS)�SizegripTest)rrfr6ricKstj|jf|�SrY)rZSizegriprErjr&r&r'r BszSizegripTest.createNrlr&r&r&r'r�;sr��__main__)2ZunittestrTrrZtest.supportrr�Z$tkinter.test.test_ttk.test_functionsrZtkinter.test.supportrrrr	Ztkinter.test.widget_testsr
rrr
rrrrZTestCaser?rbrdrnr�r�r�r�r�r�rr9r?rFrcZskipIfr�rkrmr�r�r�r�Z	tests_guir<�mainr&r&r&r'�<module>s�$';0	|3j"�
N--
�