o
    ²ó®g½	 ã                   @   s4  d dl Z d dlZd dlmZm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 edƒ G dd	„ d	eƒZ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G dd„ d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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$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j)d(kd)¡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 d0d1„ d1ee jƒƒZ-eeƒG d2d3„ d3ee jƒƒZ.eeƒG d4d5„ d5ee jƒƒZ/G d6d7„ d7ee jƒZ0ee e"e!eeee%e+e#e'e$e&e*e.e/e,e-ee0fZ1e2d8kr˜e  3¡  dS dS )9é    N)ÚttkÚTclError)Úrequires)Ú
MockTclObj)ÚAbstractTkTestÚtcl_versionÚget_tk_patchlevelÚsimulate_mouse_clickÚAbstractDefaultRootTest)Úadd_standard_optionsÚnoconvÚAbstractWidgetTestÚStandardOptionsTestsÚIntegerSizeTestsÚPixelSizeTestsÚsetUpModuleZguic                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚStandardTtkOptionsTestsc                 C   s\   |   ¡ }|  |d d¡ d}tƒ dk rd}| j|dd|d | j dd}|  |d d¡ d S )	NÚclassÚ ú"attempt to change read-only option©é   é   r   Úbetaé   ú"Attempt to change read-only optionÚFoo©Úerrmsg©Zclass_)ÚcreateÚassertEqualr   ÚcheckInvalidParam©ÚselfÚwidgetr   Zwidget2© r&   úX/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/tkinter/test/test_ttk/test_widgets.pyÚtest_configure_class   s   
z,StandardTtkOptionsTests.test_configure_classc                 C   s†   |   ¡ }| j|dddd | j|dddd | j|dddd | j|dd	d
d | j|dddd |  |dd¡ | j|dddd d S )NÚpaddingr   )Ú0©Zexpectedé   )Ú5)r,   r   )r-   Ú6)r,   r   é   )r-   r.   Ú7)r,   r   r/   r   )r-   r.   r0   Ú8)Z5pZ6pZ7pZ8pr&   r   ©r    Ú
checkParam©r$   r%   r&   r&   r'   Útest_configure_padding   s   
ÿ
ÿz.StandardTtkOptionsTests.test_configure_paddingc                 C   sj   |   ¡ }|  |d d¡ d}t| dƒrdt| dƒ ¡  }| j|dd|d | j dd}|  |d	 d¡ d S )
NÚstyler   zLayout Foo not foundÚdefault_orientzLayout %s.Foo not foundr   r   r   r   )r    r!   ÚhasattrÚgetattrÚtitler"   r#   r&   r&   r'   Útest_configure_style)   s   
ÿ
ÿz,StandardTtkOptionsTests.test_configure_styleN)Ú__name__Ú
__module__Ú__qualname__r(   r5   r;   r&   r&   r&   r'   r      s    
r   c                       s0   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Z‡  ZS )Ú
WidgetTestz,Tests methods available in every ttk widget.c                    s,   t ƒ  ¡  tj| jddd| _| j ¡  d S )Nr   ZText)ÚwidthÚtext)ÚsuperÚsetUpr   ÚButtonÚrootr%   Úpack©r$   ©Ú	__class__r&   r'   rC   ;   s   
zWidgetTest.setUpc                 C   s˜   | j  ¡  |  | j  t| j  ¡ d ƒt| j  ¡ d ƒ¡d¡ |  | j  dd¡d¡ |  tj	| j jd d¡ |  tj	| j jdd ¡ |  tj	| j jdd¡ d S )Né   Úlabeléÿÿÿÿr   r,   )
r%   Úupdater!   ÚidentifyÚintÚwinfo_widthÚwinfo_heightÚassertRaisesÚtkinterr   rG   r&   r&   r'   Útest_identifyA   s   

þýzWidgetTest.test_identifyc                 C   sB  |   | j ¡ d¡ |   | j dg¡d¡ |   | j dg¡d¡ |   | j dg¡d¡ |   | j ddg¡d¡ |   | j ddg¡d¡ |   | j ddg¡d¡ dd	„ }|   | jjdg|d
fi ddi¤Žd
ddif¡ | j ¡ }|  tj| jjdg¡ |  tj| jjddg¡ |   || j ¡ ¡ | j ddg¡ |   | j ¡ d¡ d S )Nr&   ú	!disabledTÚdisabled)rU   Úactive)z!activerV   c                 [   s   | |fS ©Nr&   )Zarg1Úkwr&   r&   r'   Útest_cb^   s   z-WidgetTest.test_widget_state.<locals>.test_cbÚhiÚmsgZthereZbadstate)rW   )r!   r%   ÚstateZinstaterR   rS   r   )r$   rZ   Z	currstater&   r&   r'   Útest_widget_stateN   s6   ÿÿÿ
þ
ÿÿzWidgetTest.test_widget_state)r<   r=   r>   Ú__doc__rC   rT   r^   Ú__classcell__r&   r&   rH   r'   r?   8   s
    r?   c                   @   s   e Zd ZeZdS )ÚAbstractToplevelTestN)r<   r=   r>   r   Ú_conv_pixelsr&   r&   r&   r'   ra   r   s    ra   c                   @   ó   e Zd ZdZdd„ ZdS )Ú	FrameTest)	Úborderwidthr   ÚcursorÚheightr)   Úreliefr6   Ú	takefocusr@   c                 K   ó   t j| jfi |¤ŽS rX   )r   ÚFramerE   ©r$   Úkwargsr&   r&   r'   r    ~   ó   zFrameTest.createN©r<   r=   r>   ÚOPTIONSr    r&   r&   r&   r'   rd   v   s    rd   c                   @   ó(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚLabelFrameTest)re   r   rf   rg   ÚlabelanchorÚlabelwidgetr)   rh   r6   ri   rA   Ú	underliner@   c                 K   rj   rX   )r   Z
LabelFramerE   rl   r&   r&   r'   r    ‹   rn   zLabelFrameTest.createc                 C   sB   |   ¡ }| j|ddddddddd	d
ddddd |  |dd¡ d S )Nrs   ÚeZenZesÚnÚneZnwÚsZseÚswÚwZwnÚwsz!Bad label anchor specification {}r   Úcenter)r    ÚcheckEnumParamr"   r4   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MuppZfoo)rA   Únamert   z.foor+   )r    r   ÚLabelrE   r3   Údestroy)r$   r%   rK   r&   r&   r'   Útest_configure_labelwidget•   s   z)LabelFrameTest.test_configure_labelwidgetN)r<   r=   r>   rp   r    r   rƒ   r&   r&   r&   r'   rr   ‚   s
    rr   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚAbstractLabelTestc                 C   s˜   t j| jdd}t j| jdd}| j|||dd | j||ddd | j|||fdd | j|||d|fdd | j||ddd | j||d	d
d d S )NÚimage1)Úmasterr€   Úimage2)r…   r+   rW   )r…   rW   r‡   zimage1 active image2Úspamzimage "spam" doesn't existr   )rS   Z
PhotoImagerE   r3   r"   )r$   r%   r€   Úimager‡   r&   r&   r'   ÚcheckImageParamž   s   ÿ
ÿ

ÿz!AbstractLabelTest.checkImageParamc                 C   s(   |   ¡ }|  |ddddddddd	¡
 d S )
NÚcompoundÚnonerA   r‰   r}   ÚtopZbottomÚleftÚright©r    r~   r4   r&   r&   r'   Útest_configure_compound«   s
   þz)AbstractLabelTest.test_configure_compoundc                 C   ó   |   ¡ }|  |dddd¡ d S )Nr]   rW   rV   Únormal©r    ZcheckParamsr4   r&   r&   r'   Útest_configure_state±   ó   z&AbstractLabelTest.test_configure_statec                 C   r’   )Nr@   i’  inþÿÿr   r”   r4   r&   r&   r'   Útest_configure_widthµ   r–   z&AbstractLabelTest.test_configure_widthN)r<   r=   r>   rŠ   r‘   r•   r—   r&   r&   r&   r'   r„   œ   s
    r„   c                   @   s$   e Zd ZdZeZdd„ Zdd„ ZdS )Ú	LabelTest)ÚanchorÚ
backgroundre   r   r‹   rf   ÚfontÚ
foregroundr‰   Újustifyr)   rh   r]   r6   ri   rA   Útextvariableru   r@   Z
wraplengthc                 K   rj   rX   )r   r   rE   rl   r&   r&   r'   r    Å   rn   zLabelTest.createc                 C   s   |   ¡ }|  |dd¡ d S )Nr›   z3-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*r2   r4   r&   r&   r'   Útest_configure_fontÈ   s   ÿzLabelTest.test_configure_fontN)r<   r=   r>   rp   r   rb   r    rŸ   r&   r&   r&   r'   r˜   º   s
    r˜   c                   @   rq   )	Ú
ButtonTest)r   Úcommandr‹   rf   Údefaultr‰   r)   r]   r6   ri   rA   rž   ru   r@   c                 K   rj   rX   )r   rD   rE   rl   r&   r&   r'   r    ×   rn   zButtonTest.createc                 C   r’   )Nr¢   r“   rW   rV   r   r4   r&   r&   r'   Útest_configure_defaultÚ   r–   z!ButtonTest.test_configure_defaultc                    s2   g ‰ t j| j‡ fdd„d}| ¡  |  ˆ ¡ d S )Nc                      ó
   ˆ   d¡S ©Né   ©Úappendr&   ©Úsuccessr&   r'   Ú<lambda>à   ó   
 z(ButtonTest.test_invoke.<locals>.<lambda>©r¡   )r   rD   rE   ÚinvokeÚ
assertTrue)r$   Zbtnr&   r©   r'   Útest_invokeÞ   s   zButtonTest.test_invokeN)r<   r=   r>   rp   r    r£   r°   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 )ÚCheckbuttonTest)r   r¡   r‹   rf   r‰   ÚoffvalueÚonvaluer)   r]   r6   ri   rA   rž   ru   Úvariabler@   c                 K   rj   rX   )r   ÚCheckbuttonrE   rl   r&   r&   r'   r    ð   rn   zCheckbuttonTest.createc                 C   ó    |   ¡ }|  |ddddd¡ d S )Nr²   r¦   çffffff@r   ú
any stringr”   r4   r&   r&   r'   Útest_configure_offvalueó   ó   z'CheckbuttonTest.test_configure_offvaluec                 C   r¶   )Nr³   r¦   r·   r   r¸   r”   r4   r&   r&   r'   Útest_configure_onvalue÷   rº   z&CheckbuttonTest.test_configure_onvaluec                    sÐ   g ‰ ‡ fdd„}t j| j|d}|  | ¡ d¡ |  tj|jj	|d ¡ | 
¡ }|  |d¡ |  |d |j 	|d ¡¡ |  ˆ ¡ d|d	< | 
¡ }|  t|ƒ¡ |  tˆ ƒd
¡ |  |d |j 	|d ¡¡ d S )Nc                      ó   ˆ   d¡ dS ©Nr¦   úcb test calledr§   r&   r©   r&   r'   Úcb_testý   ó   
z,CheckbuttonTest.test_invoke.<locals>.cb_testr­   )Z	alternater´   r¾   r³   r   r¡   r¦   r²   )r   rµ   rE   r!   r]   rR   rS   r   ÚtkÚglobalgetvarr®   r¯   ÚassertFalseÚstrÚassertLessEqualÚlen)r$   r¿   ÚcbtnÚresr&   r©   r'   r°   û   s(   ÿ
ÿ

ÿzCheckbuttonTest.test_invokeN)r<   r=   r>   rp   r    r¹   r»   r°   r&   r&   r&   r'   r±   å   s    	r±   c                       sx   e Zd ZdZ‡ f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‡  ZS )Ú	EntryTest)rš   r   rf   Úexportselectionr›   rœ   Úinvalidcommandr   Úshowr]   r6   ri   rž   ÚvalidateÚvalidatecommandr@   Úxscrollcommandc                    ó   t ƒ  ¡  |  ¡ | _d S rX   )rB   rC   r    ÚentryrG   rH   r&   r'   rC      ó   
zEntryTest.setUpc                 K   rj   rX   )r   ZEntryrE   rl   r&   r&   r'   r    $  rn   zEntryTest.createc                 C   ó   |   ¡ }|  |d¡ d S )NrË   ©r    ZcheckCommandParamr4   r&   r&   r'   Útest_configure_invalidcommand'  ó   z'EntryTest.test_configure_invalidcommandc                 C   s6   |   ¡ }|  |dd¡ |  |dd¡ |  |dd¡ d S )NrÌ   Ú*r   ú r2   r4   r&   r&   r'   Útest_configure_show+  s   zEntryTest.test_configure_showc                 C   r’   )Nr]   rV   r“   Úreadonlyr”   r4   r&   r&   r'   r•   1  ó   ÿzEntryTest.test_configure_statec              
   C   ó$   |   ¡ }|  |ddddddd¡ d S )NrÍ   ÚallÚkeyÚfocusZfocusinZfocusoutrŒ   r   r4   r&   r&   r'   Útest_configure_validate6  s   ÿz!EntryTest.test_configure_validatec                 C   rÓ   )NrÎ   rÔ   r4   r&   r&   r'   Útest_configure_validatecommand;  rÖ   z(EntryTest.test_configure_validatecommandc                 C   s>   |   | j d¡¡ |  tj| jjd¡ |  tj| jjd ¡ d S )Nr   Znoindex)ÚassertIsBoundingBoxrÑ   ÚbboxrR   rS   r   rG   r&   r&   r'   Ú	test_bbox@  s   zEntryTest.test_bboxc                 C   s¨   | j  ¡  | j  ¡  tjdkr|  | j  dd¡d¡ n|  | j  dd¡d¡ |  | j  dd¡d¡ |  t	j
| j jd d¡ |  t	j
| j jdd ¡ |  t	j
| j jdd¡ d S )NÚdarwinr,   )ÚtextareazCombobox.buttonræ   rL   r   )rÑ   rF   rM   ÚsysÚplatformZassertInrN   r!   rR   rS   r   rG   r&   r&   r'   rT   F  s   


ÿzEntryTest.test_identifyc                    sà   g ‰ ‡ fdd„}d| j d< dd„ | j d< || j d< | j  ¡  |  ˆ ¡ d| j d< | j  ¡  |  tˆ ƒd	¡ || j d< d
d„ | j d< | j  ¡  |  tˆ ƒd	¡ d| j d< | j  ¡  |  tˆ ƒd	¡ d| j d< |  tj| j j¡ d S )Nc                      r¤   ©NTr§   r&   r©   r&   r'   r«   Y  r¬   z3EntryTest.test_validation_options.<locals>.<lambda>rŒ   rÍ   c                   S   ó   dS )NFr&   r&   r&   r&   r'   r«   \  ó    rÎ   rË   r   r¦   c                   S   rê   ré   r&   r&   r&   r&   r'   r«   g  rë   T)rÑ   rÍ   r¯   r!   rÆ   rR   rS   r   )r$   Ztest_invalidr&   r©   r'   Útest_validation_optionsW  s&   










z!EntryTest.test_validation_optionsc                    sr   g ‰ ‡ fdd„}d| j d< | j  |¡df| j d< | j  dd¡ | j  dd	¡ |  ˆ d
dg¡ |  | j  ¡ d	¡ d S )Nc                    s6   d|   ¡   krdksn ˆ  d¡ dS ˆ  d¡ dS ©NÚaÚzFT)Úlowerr¨   )Z	to_insert©Z
validationr&   r'   rÍ   u  s
   

z+EntryTest.test_validation.<locals>.validaterÞ   rÍ   z%SrÎ   Úendr¦   rî   FT)rÑ   ÚregisterÚinsertr!   Úget©r$   rÍ   r&   rñ   r'   Útest_validations  s   
zEntryTest.test_validationc                 C   sÖ   dd„ }| j  |¡df| j d< | j  dd¡ |  | j  ¡ d¡ |  | j  ¡ d¡ | j  d	d¡ |  | j  ¡ d
¡ | j  dd¡ |  | j  ¡ d¡ |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ |  | j  ¡ d¡ d S )Nc                 S   s2   | D ]}d|  ¡   krdks dS   dS qdS rí   )rð   )ZcontentZletterr&   r&   r'   rÍ   †  s   ÿÿz-EntryTest.test_revalidation.<locals>.validatez%PrÎ   rò   ZavocadoTr&   r   r   Za1bF)Úinvalidr¦   )rÑ   ró   rô   r!   rÍ   r]   Údeleterõ   rö   r&   r&   r'   Útest_revalidation…  s   zEntryTest.test_revalidation)r<   r=   r>   rp   rC   r    rÕ   rÙ   r•   rà   rá   rä   rT   rì   r÷   rú   r`   r&   r&   rH   r'   rÉ     s    rÉ   c                       sP   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
‡  ZS )ÚComboboxTest)rš   r   rf   rÊ   r›   rœ   rg   rË   r   ÚpostcommandrÌ   r]   r6   ri   rž   rÍ   rÎ   Úvaluesr@   rÏ   c                    rÐ   rX   )rB   rC   r    ÚcomborG   rH   r&   r'   rC   ©  rÒ   zComboboxTest.setUpc                 K   rj   rX   )r   ÚComboboxrE   rl   r&   r&   r'   r    ­  rn   zComboboxTest.createc              
   C   rÜ   )Nrg   éd   çÍÌÌÌÌLY@çfffff¦Y@éœÿÿÿr   Z1ir”   r4   r&   r&   r'   Útest_configure_height°  ó   z"ComboboxTest.test_configure_heightc                 C   s`   | j  ¡ }|d d}}|  | j  ||¡d¡ | j jd||d | j jd||d | j  ¡  d S )Nr,   ú.*downarrow\Zú<ButtonPress-1>©ÚxÚyú<ButtonRelease-1>)rþ   rP   ÚassertRegexrN   Úevent_generateÚupdate_idletasks)r$   r@   r	  r
  r&   r&   r'   Ú_show_drop_down_listbox´  s   
z$ComboboxTest._show_drop_down_listboxc                    sz   g ‰ dg| j d< | j  d‡ fdd„¡ | j  ¡  | j  ¡  | j  ¡ }|  ¡  | j  ¡  | j  d¡ | j  ¡  |  ˆ ¡ d S )Nr¦   rý   z<<ComboboxSelected>>c                    r¤   ré   r§   ©Úevtr©   r&   r'   r«   Á  r¬   z1ComboboxTest.test_virtual_event.<locals>.<lambda>z<Return>)rþ   ÚbindrF   rM   rQ   r  r  r¯   )r$   rg   r&   r©   r'   Útest_virtual_event¼  s   
ÿ




zComboboxTest.test_virtual_eventc                    sb   g ‰ ‡ fdd„| j d< | j  ¡  | j  ¡  |  ¡  |  ˆ ¡ d| j d< |  ¡  |  tˆ ƒd¡ d S )Nc                      r¤   ré   r§   r&   r©   r&   r'   r«   Ñ  r¬   z9ComboboxTest.test_configure_postcommand.<locals>.<lambda>rü   r   r¦   )rþ   rF   rM   r  r¯   r!   rÆ   rG   r&   r©   r'   Útest_configure_postcommandÎ  s   



z'ComboboxTest.test_configure_postcommandc                    sÖ  ‡ fdd„}ˆ   ˆ jd tdk rdnd¡ |ddƒ ˆ jˆ jddd	d
 ˆ  ˆ jdd	¡ ˆ  ˆ jdd¡ ˆ  ˆ jdd¡ g d¢ˆ jd< ˆ j d¡ |ddƒ ˆ j d¡ |ddƒ ˆ j d¡ |ddƒ ˆ j d¡ dˆ jd< |ddƒ ˆ jjg d¢d ˆ   ˆ jd ˆ jrˆdnd¡ g d¢ˆ jd< ˆ   ˆ jd ˆ jrdnd¡ g d¢ˆ jd< ˆ   ˆ jd ˆ jr²dnd¡ ˆ  t	j
ˆ jjtˆ jd ƒ¡ ˆ  t	j
ˆ jjd¡ tjˆ jg d¢d}ˆ   |d ˆ jrâdnd¡ | ¡  d S )Nc                    s(   ˆ   ˆ j ¡ | ¡ ˆ   ˆ j ¡ |¡ d S rX   )r!   rþ   rõ   Úcurrent)ZgetvalZcurrvalrG   r&   r'   Úcheck_get_currentß  s   z=ComboboxTest.test_configure_values.<locals>.check_get_currentrý   ©r   r,   r&   r   rL   úmon tue wed thur©ZmonZtueZwedZthurr+   ©é*   g…ëQ¸	@r   r¸   ©rî   r¦   Úcr  rJ   r   rî   Úd)r¦   rJ   r   r   ©r¦   r   rJ   ©rý   ©Ú1r   Ú2ú1 {} 2©za bza	bza
bú{a b} {a	b} {a
b}©za\tbz"a"z} {úa\\tb {"a"} \}\ \{©r¦   rJ   r   ©r"  r#  r   ú1 2 {})r!   rþ   r   r3   Úsetr  Ú	configureÚwantobjectsrR   rS   r   rÆ   r   rÿ   rE   r‚   )r$   r  Zcombo2r&   rG   r'   Útest_configure_valuesÞ  sZ   ÿ
ÿ





þ
þ
þÿ
ÿz"ComboboxTest.test_configure_values)r<   r=   r>   rp   rC   r    r  r  r  r  r/  r`   r&   r&   rH   r'   rû   ž  s    	rû   c                       sX   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Z‡  ZS )ÚPanedWindowTest)r   rf   rg   Úorientr6   ri   r@   c                    rÐ   rX   )rB   rC   r    ÚpanedrG   rH   r&   r'   rC   #  rÒ   zPanedWindowTest.setUpc                 K   rj   rX   )r   ZPanedWindowrE   rl   r&   r&   r'   r    '  rn   zPanedWindowTest.createc                 C   sd   |   ¡ }|  t|d ƒd¡ d}tƒ dk rd}| j|dd|d | j dd}|  t|d ƒd¡ d S )	Nr1  Úverticalr   r   r   Ú
horizontalr   )r1  )r    r!   rÄ   r   r"   r#   r&   r&   r'   Útest_configure_orient*  s   

ÿz%PanedWindowTest.test_configure_orientc                 C   s  t  | j¡}t  |¡}|  tj| jj|¡ | ¡  | ¡  t  | j¡}t  |¡}|  tj| jj|¡ | ¡  | ¡  t  | j¡}| j |¡ |  tj| jj|¡ t  | j¡}| j |¡ |  	| j 
d¡| j 
d¡¡ |  tj| jj
d¡ | ¡  | ¡  |  tj| jj
d¡ d S )Nr   r¦   rJ   )r   r   r2  rR   rS   r   Úaddr‚   rE   r!   Úpane)r$   rK   ÚchildZ
good_childZother_childr&   r&   r'   Útest_add5  s(   

zPanedWindowTest.test_addc                 C   s`   |   tj| jjd ¡ |   tj| jjd¡ | j t | j¡¡ | j d¡ |   tj| jjd¡ d S )Nr   )	rR   rS   r   r2  Úforgetr6  r   r   rE   rG   r&   r&   r'   Útest_forgetQ  s
   zPanedWindowTest.test_forgetc                 C   st  |   tj| jjd d¡ |   tj| jjdd ¡ |   tj| jjdd¡ t | j¡}t | j¡}t | j¡}|   tj| jjd|¡ | 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¡ d S )Nr   rò   )rR   rS   r   r2  rô   r   r   rE   r!   ÚpanesrÄ   )r$   r8  Úchild2Úchild3r<  r&   r&   r'   Útest_insertZ  s.   ÿ
ÿzPanedWindowTest.test_insertc                 C   s¾   |   tj| jjd¡ t | j¡}| j |¡ |  	| j d¡t
¡ |  | jjdd d| jr.dnd¡ |  | j dd¡| jr>dnd¡ |  | j d¡| j t|ƒ¡¡ | j tj| jjddd d S )Nr   ©Úweightr*   rA  Z	somevalue)Z	badoption)rR   rS   r   r2  r7  r   r   rE   r6  ÚassertIsInstanceÚdictr!   r.  rÄ   )r$   r8  r&   r&   r'   Ú	test_pane}  s   ÿÿ 
ÿzPanedWindowTest.test_panec                 C   sö   |   tj| jjd ¡ |   tj| jjd¡ |   tj| jjd¡ tj| jdd}| jj|dd |   tj| jjd¡ tj| jdd}| j |¡ |   tj| jjd¡ | jjdd	d
 | j d¡}| j dd¡ |  	|| j d¡¡ |  
| j d¡t¡ d S )Nr   r   rî   ©rA   r¦   r@  ÚbTZboth)ÚexpandZfilliè  )rR   rS   r   r2  Zsashposr   r   r6  rF   ÚassertNotEqualrB  rO   )r$   r8  r=  Zcurr_posr&   r&   r'   Útest_sashposŽ  s   zPanedWindowTest.test_sashpos)r<   r=   r>   rp   rC   r    r5  r9  r;  r?  rD  rI  r`   r&   r&   rH   r'   r0    s    	#r0  c                   @   rq   )	ÚRadiobuttonTest)r   r¡   r‹   rf   r‰   r)   r]   r6   ri   rA   rž   ru   Úvaluer´   r@   c                 K   rj   rX   )r   ÚRadiobuttonrE   rl   r&   r&   r'   r    ¬  rn   zRadiobuttonTest.createc                 C   r¶   )NrK  r¦   r·   r   r¸   r”   r4   r&   r&   r'   Útest_configure_value¯  rº   z$RadiobuttonTest.test_configure_valuec                    s6  g ‰ ‡ fdd„}t  | j¡}tj| j||dd}tj| j||dd}| jr*dd„ }nt}| ¡ }|  |d¡ |  ||d	 ƒ| 	¡ ¡ |  | 	¡ ||j
 |d
 ¡ƒ¡ |  ˆ ¡ d|d< | ¡ }|  t|ƒd¡ |  tˆ ƒd¡ |  ||d	 ƒ| 	¡ ¡ |  | 	¡ ||j
 |d
 ¡ƒ¡ |  t|d
 ƒt|d
 ƒ¡ d S )Nc                      r¼   r½   r§   r&   r©   r&   r'   r¿   µ  rÀ   z6RadiobuttonTest.test_configure_invoke.<locals>.cb_testr   )r¡   r´   rK  r¦   c                 S   ó   | S rX   r&   ©r	  r&   r&   r'   r«   À  rë   z7RadiobuttonTest.test_configure_invoke.<locals>.<lambda>r¾   rK  r´   r   r¡   )rS   ZIntVarrE   r   rL  r.  rO   r®   r!   rõ   rÁ   rÂ   r¯   rÄ   rÅ   rÆ   )r$   r¿   ZmyvarrÇ   Zcbtn2ÚconvrÈ   r&   r©   r'   Útest_configure_invoke³  s8   
ÿ
ÿ

ÿ

ÿ z%RadiobuttonTest.test_configure_invokeN)r<   r=   r>   rp   r    rM  rQ  r&   r&   r&   r'   rJ  ¢  s
    rJ  c                   @   rq   )	ÚMenubuttonTest)r   r‹   rf   Ú	directionr‰   Úmenur)   r]   r6   ri   rA   rž   ru   r@   c                 K   rj   rX   )r   Z
MenubuttonrE   rl   r&   r&   r'   r    Þ  rn   zMenubuttonTest.createc              	   C   s"   |   ¡ }|  |dddddd¡ d S )NrS  ZaboveZbelowrŽ   r   Úflushr   r4   r&   r&   r'   Útest_directioná  s   
ÿzMenubuttonTest.test_directionc                 C   s4   |   ¡ }tj|dd}| j|d|td | ¡  d S )NrT  )r€   ©rP  )r    rS   ZMenur3   rÄ   r‚   )r$   r%   rT  r&   r&   r'   Útest_configure_menuæ  s   z"MenubuttonTest.test_configure_menuN)r<   r=   r>   rp   r    rV  rX  r&   r&   r&   r'   rR  Ö  s
    rR  c                       sh   e Zd ZdZeZdZ‡ f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‡  ZS )Ú	ScaleTest)r   r¡   rf   ÚfromÚlengthr1  r6   ri   ÚtorK  r´   r4  c                    s,   t ƒ  ¡  |  ¡ | _| j ¡  | j ¡  d S rX   )rB   rC   r    ÚscalerF   rM   rG   rH   r&   r'   rC   ö  s   


zScaleTest.setUpc                 K   rj   rX   )r   ZScalerE   rl   r&   r&   r'   r    ü  rn   zScaleTest.createc                 C   s"   |   ¡ }| j|dddddd d S )NrZ  r   çÍÌÌÌÌÌ-@ç333333.@FrW  ©r    ZcheckFloatParamr4   r&   r&   r'   Útest_configure_fromÿ  s   zScaleTest.test_configure_fromc                 C   r¶   )Nr[  é‚   gffffff`@g33333ó`@Z5i©r    ÚcheckPixelsParamr4   r&   r&   r'   Útest_configure_length  rº   zScaleTest.test_configure_lengthc              	   C   ó$   |   ¡ }| j|ddddddd d S )Nr\  é,  r^  r_  éöÿÿÿFrW  r`  r4   r&   r&   r'   Útest_configure_to  r  zScaleTest.test_configure_toc              	   C   rf  )NrK  rg  r^  r_  rh  FrW  r`  r4   r&   r&   r'   rM    r  zScaleTest.test_configure_valuec                    sŠ   g d¢‰ | j  d‡ fdd„¡}d| j d< d| j d< d| j d	< |  ˆ ¡ g d¢‰ | j jd
dd | j jddd | j jdd |  ˆ ¡ d S )N)r¦   r¦   r¦   z<<RangeChanged>>c                    s   ˆ   ¡ S rX   )Úpopr  ©Zfailurer&   r'   r«     s    z-ScaleTest.test_custom_event.<locals>.<lambda>é
   rZ  Úfrom_r   r\  rJ   r,   )rm  r\  r   éþÿÿÿ)r\  )r]  r  rÃ   r-  )r$   Zfuncidr&   rk  r'   Útest_custom_event  s   



zScaleTest.test_custom_eventc                 C   sÈ   | j rdd„ }nt}| j ¡ }|  | j |d¡| jd ¡ |  || j dd¡ƒ|| jd ƒ¡ |  | j ¡ | jd ¡ d| jd< |  | j ¡ | jd ¡ |  tj| jjdd¡ |  tj| jjdd¡ d S )	Nc                 S   rN  rX   r&   rO  r&   r&   r'   r«   $  rë   z$ScaleTest.test_get.<locals>.<lambda>r   r\  rZ  rK  é   r   )	r.  Úfloatr]  rP   r!   rõ   rR   rS   r   )r$   rP  Zscale_widthr&   r&   r'   Útest_get"  s   

$
zScaleTest.test_getc                 C   st  | j rdd„ }nt}|| jd ƒ}|d }| j |¡ |  || j ¡ ƒ|¡ || jd ƒ}| j |d ¡ |  || j ¡ ƒ|¡ t | j¡}|| jd< | |d ¡ |  || j ¡ ƒ| ¡ ¡ |  || j ¡ ƒ|d ¡ ~|d | jd	< |  || j ¡ ƒ|d ¡ |  || j ¡ ƒ|| jd	 ƒ¡ |  || j d
d
¡ƒ|¡ |  || j | j 	¡ d
¡ƒ|¡ |  
tj| jjd ¡ d S )Nc                 S   rN  rX   r&   rO  r&   r&   r'   r«   6  rë   z$ScaleTest.test_set.<locals>.<lambda>r\  rl  rZ  r¦   r´   r,   rK  r   )r.  rq  r]  r,  r!   rõ   rS   Z	DoubleVarrE   rP   rR   r   )r$   rP  ÚmaxZnew_maxÚminÚvarr&   r&   r'   Útest_set4  s,   

  zScaleTest.test_set)r<   r=   r>   rp   r   rb   r7   rC   r    ra  re  ri  rM  ro  rr  rv  r`   r&   r&   rH   r'   rY  í  s    rY  c                   @   sH   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S )ÚProgressbarTest)r   rf   r1  r[  ÚmodeÚmaximumZphaser6   ri   rK  r´   r4  c                 K   rj   rX   )r   ZProgressbarrE   rl   r&   r&   r'   r    b  rn   zProgressbarTest.createc                 C   r’   )Nr[  gfffffY@gš™™™™YL@Z2irc  r4   r&   r&   r'   re  e  r–   z%ProgressbarTest.test_configure_lengthc              	   C   rf  )Nry  çfffffÆb@çÍÌÌÌÌlS@r   rh  FrW  r`  r4   r&   r&   r'   Útest_configure_maximumi  r  z&ProgressbarTest.test_configure_maximumc                 C   s   |   ¡ }|  |ddd¡ d S )Nrx  ZdeterminateZindeterminater   r4   r&   r&   r'   Útest_configure_modem  s   z#ProgressbarTest.test_configure_modec                 C   s   d S rX   r&   rG   r&   r&   r'   Útest_configure_phaseq  s   z$ProgressbarTest.test_configure_phasec              	   C   rf  )NrK  rz  r{  r   rh  FrW  r`  r4   r&   r&   r'   rM  u  s   
ÿz$ProgressbarTest.test_configure_valueN)r<   r=   r>   rp   r   rb   r7   r    re  r|  r}  r~  rM  r&   r&   r&   r'   rw  X  s    rw  rå   z"ttk.Scrollbar is special on MacOSXc                   @   ó   e Zd ZdZdZdd„ ZdS )ÚScrollbarTest)r   r¡   rf   r1  r6   ri   r3  c                 K   rj   rX   )r   Z	ScrollbarrE   rl   r&   r&   r'   r    „  rn   zScrollbarTest.createN©r<   r=   r>   rp   r7   r    r&   r&   r&   r'   r€  {  s    r€  c                       óp   e Zd ZdZ‡ f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‡  ZS )ÚNotebookTest)r   rf   rg   r)   r6   ri   r@   c                    s\   t ƒ  ¡  | jdd| _t | j¡| _t | j¡| _| jj	| jdd | jj	| jdd d S )Nr   ©r)   rî   rE  rF  )
rB   rC   r    Únbr   r   rE   Úchild1r=  r6  rG   rH   r&   r'   rC   Ž  s   
zNotebookTest.setUpc                 K   rj   rX   )r   ZNotebookrE   rl   r&   r&   r'   r    –  rn   zNotebookTest.createc              	   C   s4  | j  d¡ | j  | j¡ |  tj| j j| j¡ |  	| j  
d¡d¡ | j  | j¡ |  	| j  
d¡d¡ | j  | j¡ |  | j  d¡¡ | j j| jdd | j  ¡  | j  ¡  tjdkr^d}nd	}|  	| j  |¡| j  d¡¡ td
dd
ƒD ]}z| j jd| d ddkr‡W  d S W qt tjy’   Y qtw |  d¡ d S )Nr   rò   r¦   r  rî   rE  rå   z@20,5z@5,5r,   r   z@%d, 5zTab with text 'a' not found)r…  r:  Úhider=  rR   rS   r   Útabr†  r!   Úindexr6  Úselectr¯   rF   rM   rç   rè   ÚrangeÚfail)r$   Ztb_idxÚir&   r&   r'   Útest_tab_identifiers™  s0   


ÿÿz!NotebookTest.test_tab_identifiersc                 C   sd  |   tj| jjd¡ |   tj| jjd¡ |   tj| jjd ¡ |   tj| jjd ¡ | j tj| jjt | j¡dd | j 	¡ }| j | j
¡ | j | j
¡ |  | j 	¡ |¡ t | j¡}| jj|dd | j 	¡ }| j d¡}| j | j¡}| j | j¡ | j | j¡ |  | j 	¡ |¡ |  | j | j¡|¡ |  t| jƒ| j 	¡ | ¡ |  | j d¡|d ¡ d S )	NrL   r[   Zoption)Úunknownr  rE  r  r¦   )rR   rS   r   r…  r‡  r6  r   r   rE   Útabsr†  r!   r‰  r=  rÄ   )r$   r  r8  ZcurrZchild2_indexr&   r&   r'   Útest_add_and_hidden¸  s,   ÿ

z NotebookTest.test_add_and_hiddenc                 C   sÖ   |   tj| jjd¡ |   tj| jjd¡ |   tj| jjd ¡ | j ¡ }| j | j¡}| j | j¡ |  t	| jƒ| j ¡ ¡ |  
t|ƒd t| j ¡ ƒ¡ | j | j¡ |  
| j | j¡d¡ |  || j | j¡¡ d S )NrL   r[   r¦   )rR   rS   r   r…  r:  r  r‰  r†  ZassertNotInrÄ   r!   rÆ   r6  rH  )r$   r  Zchild1_indexr&   r&   r'   r;  Õ  s   
zNotebookTest.test_forgetc                 C   s€   |   tj| jjd¡ |   tj| jjd ¡ |  | j d¡t¡ |  | j | j¡d¡ |  | j | j	¡d¡ |  | j d¡d¡ d S )NrL   rò   r   r¦   rJ   )
rR   rS   r   r…  r‰  rB  rO   r!   r†  r=  rG   r&   r&   r'   Ú
test_indexå  s   zNotebookTest.test_indexc                 C   sæ  | j  ¡ }| j  d|d ¡ |  | j  ¡ |d |d f¡ | j  | j| j¡ |  | j  ¡ |¡ | j  d| j¡ |  | j  ¡ |d |d f¡ | j  dd¡ |  | j  ¡ |¡ |  tj| j jd|d ¡ |  tj| j jd|d ¡ t	 
| j¡}| j  d|¡ |  | j  ¡ |d t|ƒ|d f¡ | j  |¡ |  | j  ¡ |¡ | j  | j|¡ |  | j  ¡ t|ƒf| ¡ | j  |¡ |  tj| j jd|¡ |  tj| j jd|¡ |  tj| j jdd ¡ |  tj| j jd d¡ |  tj| j jd d ¡ d S )Nr¦   r   rò   rJ   rL   )r…  r  rô   r!   r†  r=  rR   rS   r   r   r   rE   rÄ   r:  )r$   r  r>  r&   r&   r'   r?  ï  s0   
$zNotebookTest.test_insertc                    s¨   | j  ¡  | j  ¡  g ‰ g ‰| j d‡ fdd„¡ | j  d‡fdd„¡ |  | j  ¡ t| jƒ¡ | j  | j¡ |  	ˆ ¡ |  | j  ¡ t| jƒ¡ | j  ¡  |  	ˆ¡ d S )Nz<Unmap>c                    r¤   ré   r§   r  r©   r&   r'   r«     r¬   z*NotebookTest.test_select.<locals>.<lambda>z<<NotebookTabChanged>>c                    r¤   ré   r§   r  )Útab_changedr&   r'   r«     r¬   )
r…  rF   rM   r†  r  r!   rŠ  rÄ   r=  r¯   rG   r&   )rª   r“  r'   Útest_select  s   


ÿ

zNotebookTest.test_selectc                 C   sÌ   |   tj| jjd¡ |   tj| jjd¡ |   tj| jjd ¡ |  | j | j¡t¡ |  | jj| jd dd¡ |  | j | jd¡d¡ | jj| jdd |  | jj| jd dd¡ |  | j | jd¡d¡ d S )NrL   ZnotabrE  rî   rA   Úabc)	rR   rS   r   r…  rˆ  rB  r†  rC  r!   rG   r&   r&   r'   Útest_tab$  s   zNotebookTest.test_tabc                 C   sH   |   t| j ¡ ƒd¡ | j | j¡ | j | j¡ |   | j ¡ d¡ d S )NrJ   r&   )r!   rÆ   r…  r  r:  r†  r=  rG   r&   r&   r'   Útest_configure_tabs2  s   z NotebookTest.test_configure_tabsc                 C   sZ  | j  ¡  | j  ¡  | j  d¡ |  | j  dd¡d¡ t| j ddƒ | j  ¡  | j  d¡ |  | j  ¡ t	| j
ƒ¡ | j  ¡  | j  d¡ |  | j  ¡ t	| jƒ¡ | j  ¡  | j  d¡ |  | j  ¡ t	| j
ƒ¡ | j j| jddd | j  ¡  | j  ¡  |  | j  dd¡d¡ t| j ddƒ tjdkr™| j  d	¡ n| j  d
¡ |  | j  ¡ t	| jƒ¡ d S )Nr   r,   rß   z<Control-Tab>z<Shift-Control-Tab>rî   )rA   ru   rå   z
<Option-a>z<Alt-a>)r…  rF   rM   rŠ  r!   rN   r	   Zfocus_forcer  rÄ   r=  r†  rˆ  Zenable_traversalrç   rè   rG   r&   r&   r'   Útest_traversal;  s.   







zNotebookTest.test_traversal)r<   r=   r>   rp   rC   r    rŽ  r‘  r;  r’  r?  r”  r–  r—  r˜  r`   r&   r&   rH   r'   rƒ  ˆ  s    
!	rƒ  c                       r‚  )ÚSpinboxTest)rš   r   r¡   rf   rÊ   r›   rœ   ÚformatrZ  Ú	incrementrË   r   rÌ   r]   r6   ri   rž   r\  rÍ   rÎ   rý   r@   ÚwraprÏ   c                    s"   t ƒ  ¡  |  ¡ | _| j ¡  d S rX   )rB   rC   r    ÚspinrF   rG   rH   r&   r'   rC   b  s   

zSpinboxTest.setUpc                 K   rj   rX   )r   ÚSpinboxrE   rl   r&   r&   r'   r    g  rn   zSpinboxTest.createc                 C   sp   | j  ¡ }| j  ¡ }|d }|d d }|  | j  ||¡d¡ | j jd||d | j jd||d | j  ¡  d S )Nr,   rJ   z.*uparrow\Zr  r  r  ©r  rP   rQ   r  rN   r  r  ©r$   r@   rg   r	  r
  r&   r&   r'   Ú_click_increment_arrowj  ó   

z"SpinboxTest._click_increment_arrowc                 C   sp   | j  ¡ }| j  ¡ }|d }|d d }|  | j  ||¡d¡ | j jd||d | j jd||d | j  ¡  d S )Nr,   rJ   é   r  r  r  r  rŸ  r   r&   r&   r'   Ú_click_decrement_arrowt  r¢  z"SpinboxTest._click_decrement_arrowc                    s–   g ‰ ‡ fdd„| j d< | j  ¡  |  ¡  | j  ¡  |  ˆ ¡ |  ¡  |  tˆ ƒd¡ d| j d< | j  ¡  |  ¡  |  ¡  | j  ¡  |  tˆ ƒd¡ d S )Nc                      r¤   ré   r§   r&   r©   r&   r'   r«     r¬   z4SpinboxTest.test_configure_command.<locals>.<lambda>r¡   rJ   r   )r  rM   r¡  r¯   r¤  r!   rÆ   r  rG   r&   r©   r'   Útest_configure_command~  s   





z"SpinboxTest.test_configure_commandc                 C   ób   d| j d< d| j d< | j  d¡ | j  ¡  |  ¡  |  | j  ¡ d¡ |  ¡  |  | j  ¡ d¡ d S )Nr   rZ  r,   r\  r£  r-   )r  r,  rM   r¡  r!   rõ   rG   r&   r&   r'   ri  ’  s   


zSpinboxTest.test_configure_toc                 C   r¦  )Nr¦   rZ  rl  r\  rJ   r"  )r  r,  rM   r¤  r!   rõ   rG   r&   r&   r'   ra  ž  s   


zSpinboxTest.test_configure_fromc                 C   s€   d| j d< d| j d< d| j d< | j  d¡ | j  ¡  |  ¡  |  | j  ¡ d¡ d	| j d< | j  ¡  |  ¡  |  | j  ¡ d
¡ d S )Nr   rZ  rl  r\  r£  r›  r¦   r-   rJ   Ú3)r  r,  rM   r¡  r!   rõ   r¤  rG   r&   r&   r'   Útest_configure_increment¨  s   





z$SpinboxTest.test_configure_incrementc                 C   sœ   | j  d¡ d| j d< | j  ¡  |  ¡  | j  ¡ }|  t|ƒd¡ |  | d¡d¡ d| j d< | j  ¡  |  ¡  | j  ¡ }|  d|v¡ |  t|ƒd¡ d S )Nr¦   z%10.3frš  rl  Ú.r   r   )	r  r,  rM   r¡  rõ   r!   rÆ   r‰  r¯   )r$   rK  r&   r&   r'   Útest_configure_format¶  s   





z!SpinboxTest.test_configure_formatc                 C   sš   d| j d< d| j d< | j  d¡ d| j d< | j  ¡  |  ¡  |  | j  ¡ d¡ |  ¡  |  | j  ¡ d¡ d	| j d< | j  ¡  |  ¡  |  | j  ¡ d¡ d S )
Nrl  r\  r¦   rZ  Trœ  Ú10r"  F)r  r,  rM   r¤  r!   rõ   r¡  rG   r&   r&   r'   Útest_configure_wrapÇ  s   





zSpinboxTest.test_configure_wrapc                 C   sv  |   | jd tdk rdnd¡ | j| jdddd |  | jdd¡ |  | jdd¡ |  | jdd¡ g d	¢| jd< | j d
¡ | j ¡  |  ¡  |   | j ¡ d¡ |  ¡  |   | j ¡ d
¡ | jj	g d¢d |   | jd | j
rqdnd¡ g d¢| jd< |   | jd | j
r†dnd¡ g d¢| jd< |   | jd | j
r›dnd¡ tj| jg d¢d}|   |d | j
r²dnd¡ | ¡  d S )Nrý   r  r&   r   r  r  r+   r  r  rî   r"  r  r   r!  r$  r%  r&  r'  r(  r)  r*  r+  )r!   r  r   r3   r,  rM   r¡  rõ   r¤  r-  r.  r   rž  rE   r‚   )r$   Zspin2r&   r&   r'   r/  Ú  sH   ÿÿ

þ
þ
þ
ÿz!SpinboxTest.test_configure_values)r<   r=   r>   rp   rC   r    r¡  r¤  r¥  ri  ra  r¨  rª  r¬  r/  r`   r&   r&   rH   r'   r™  X  s    


r™  c                       sÐ   e Zd ZdZ‡ f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‡  ZS )0ÚTreeviewTest)r   Úcolumnsrf   Údisplaycolumnsrg   r)   Ú
selectmoderÌ   r6   ri   rÏ   Zyscrollcommandc                    s   t ƒ  ¡  | jdd| _d S )Nr   r„  )rB   rC   r    ÚtvrG   rH   r&   r'   rC     s   
zTreeviewTest.setUpc                 K   rj   rX   )r   ZTreeviewrE   rl   r&   r&   r'   r      rn   zTreeviewTest.createc                 C   s:   |   ¡ }| j|dddd |  |dd¡ |  |dd¡ d S )Nr®  úa b c©rî   rF  r  r+   r   r2   r4   r&   r&   r'   Útest_configure_columns  s   
ÿz#TreeviewTest.test_configure_columnsc                 C   sŠ   |   ¡ }d|d< | j|dddd |  |dd¡ | j|dddd |  |dd	¡ | j|dd
dd | j|dddd | j|dddd d S )Nr³  r®  r¯  zb a c)rF  rî   r  r+   ú#all)rµ  )rJ   r¦   r   )rî   rF  r  zInvalid column index dr   )r¦   rJ   r   zColumn index 3 out of bounds)r¦   rn  zColumn index -2 out of bounds)r    r3   r"   r4   r&   r&   r'   Útest_configure_displaycolumns  s&   
ÿ
ÿ
ÿ
ÿ

ÿz*TreeviewTest.test_configure_displaycolumnsc              	   C   s8   |   ¡ }| j|ddddddd | j|ddd	td d S )
Nrg   r   r  r   Z3cFrW  r  r  )r    rd  r   r4   r&   r&   r'   r  -  s   z"TreeviewTest.test_configure_heightc                 C   r’   )Nr°  rŒ   ZbrowseZextendedr   r4   r&   r&   r'   Útest_configure_selectmode2  rÛ   z&TreeviewTest.test_configure_selectmodec                 C   s^   |   ¡ }| j|dddd |  |dd¡ |  |dd¡ | j|dddd | j|ddd	d d S )
NrÌ   ztree headings)ÚtreeÚheadingsr+   )r¹  r¸  r¸  )r¸  r¹  )r¹  r2   r4   r&   r&   r'   rÙ   7  s   
ÿz TreeviewTest.test_configure_showc                 C   sî   | j  ¡  |  | j  d¡d¡ | j  ¡  | j  dd¡}| j  ¡ }|  |¡ | j  |d ¡}|  |¡ dg| j d< | j j	ddd | j  |d d¡}| j j	dd d}| j
sXt|ƒ}|  |d |d | ¡ | j  |d¡}|  | j  |¡d¡ d S )	Nr   rò   r   Útestr®  é2   ©r@   ú#0)r±  rF   r!   rã   rM   rô   Úget_childrenr¯   râ   Úcolumnr.  rO   )r$   Úitem_idÚchildrenrã   Zbbox_column0Z
root_widthr†  r&   r&   r'   rä   @  s"   




zTreeviewTest.test_bboxc                 C   sä   |   | j ¡ d¡ | j dd¡}|  | j ¡ t¡ |   | j ¡ d |¡ | j dd¡}| j dd¡}| j |||¡ |   | j |¡||f¡ |  tj	| jj||¡ | j |¡ |   | j |¡d¡ | j d¡ |   | j ¡ d¡ d S )Nr&   r   rò   r   )
r!   r±  r¾  rô   rB  ÚtupleZset_childrenrR   rS   r   )r$   rÀ  r=  r>  r&   r&   r'   Útest_childrenZ  s   
ÿzTreeviewTest.test_childrenc                 C   sü   |   | j d¡t¡ | jr|   | jjdd dt¡ | jjddd |  | j dd¡| jr.dnd¡ |  | jjdd d| jr?dnd¡ | jtj	| jjddd |  tj	| jjd¡ d	d
iddiddiddiddig}|D ]}| jtj	| jjdfi |¤Ž qkd S )Nr½  r¼  rl  r@   r«  ÚX©Úidrø   Zunknown_optionz
some valueZstretchZwrongr™   Zminwidth)
rB  r±  r¿  rC  r.  rO   r!   rR   rS   r   )r$   Zinvalid_kwsrY   r&   r&   r'   Útest_columnv  s(   ÿÿþÿÿzTreeviewTest.test_columnc                 C   sâ   |   tj| jjd¡ | j dd¡}| j |d¡}|  | j ¡ |f¡ |  | j |¡|f¡ | j |¡ |  | j ¡ ¡ |   tj| jj	|dd¡ | j dd¡}| j dd¡}|  | j ¡ ||f¡ | j ||¡ |  | j ¡ ¡ d S )Nr½  r   rò   )
rR   rS   r   r±  rù   rô   r!   r¾  rÃ   Úreattach)r$   rÀ  Úitem2Úitem1r&   r&   r'   Útest_delete  s   ÿzTreeviewTest.test_deletec                 C   s  | j  dd¡}| j  |d¡}| j  ¡ }| j  ¡  |  || j  ¡ ¡ |  | j  ¡ |f¡ |  | j  |¡|f¡ | j  |¡ |  | j  ¡ ¡ | j  |dd¡ |  | j  ¡ |f¡ |  | j  |¡|f¡ | j  |dd¡ |  | j  ¡ ||f¡ |  | j  |¡d¡ |  t	j
| j jddd¡ |  t	j
| j jd¡ |  t	j
| j j|dd¡ |  t	j
| j j|dd¡ | j  ||¡ |  | j  ¡ d¡ |  | j  |¡d¡ d S )Nr   rò   r&   ZnonexistentZotherparentrø   )r±  rô   r¾  Údetachr!   rÃ   rÈ  ÚmoverR   rS   r   )r$   rÀ  rÉ  Úprevr&   r&   r'   Útest_detach_reattach¨  s<   

ÿÿÿÿz!TreeviewTest.test_detach_reattachc                 C   sT   |   | j d¡d¡ |   | j d¡d¡ |   | j i ¡d¡ |  tj| jjd ¡ d S )NZ	somethingFr   T)r!   r±  ÚexistsrR   rS   r   rG   r&   r&   r'   Útest_existsÒ  s   zTreeviewTest.test_existsc                 C   st   |   | j ¡ d¡ | j dd¡}| j |¡ |   | j ¡ |¡ | j |¡ |   | j ¡ d¡ |  tj| jjd¡ d S )Nr   rò   r[   )r!   r±  rß   rô   rù   rR   rS   r   )r$   rÊ  r&   r&   r'   Ú
test_focusÝ  s   zTreeviewTest.test_focusc                 C   s†   |   | j d¡t¡ | jjddd |  | j dd¡d¡ |  | jjdd dd¡ | jtj| jjdd d | jtj| jjddd d S )Nr½  r[   rE  rA   )rš   r¦   )r™   )rB  r±  ÚheadingrC  r!   rR   rS   r   rG   r&   r&   r'   Útest_headingì  s   ÿ
ÿzTreeviewTest.test_headingc                    sÄ   ‡ fdd„}g ‰ˆ j  ¡  ˆ j jd‡fdd„d ˆ j jddd ˆ j  ¡  |d	d	ƒ ˆs2ˆ  d
¡ g ‰ˆ j jj}ˆ j jdtˆ j jdd dƒd ˆ  	|ˆ j jj¡ |d	d	ƒ ˆs`ˆ  d
¡ d S d S )Nc                    sN   t dkrˆ  ˆ j | ¡d¡ ˆ  ˆ j | |¡d¡ tˆ j| |ƒ ˆ j ¡  d S )N)r   r   r½  rÓ  )r   r!   r±  Zidentify_columnZidentify_regionr	   rM   r  rG   r&   r'   Úsimulate_heading_clický  s
   zBTreeviewTest.test_heading_callback.<locals>.simulate_heading_clickr½  c                      r¤   ré   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±  rF   rÓ  r¿  rM   rŒ  r†   Z_tclCommandsrÄ   r!   )r$   rÕ  Úcommandsr&   )r$   rª   r'   Útest_heading_callbackü  s"   




 
ÿz"TreeviewTest.test_heading_callbackc                 C   sL  |   tj| jjd¡ |  | j d¡d¡ | j dd¡}| j dd¡}| j |d¡}| j |d¡}|  | j |¡d¡ |  | j |¡d¡ |  | j |¡d¡ |  | j |¡d¡ | j |dd¡ |  | j |¡d¡ |  | j |¡d¡ | j |¡ |  | j |¡d¡ | j |¡ |  | j |¡d¡ | j 	|¡ |   tj| jj|¡ d S )NZwhatr   r   rò   r¦   )
rR   rS   r   r±  r‰  r!   rô   rÍ  rÌ  rù   )r$   rÊ  rÉ  Úc1Úc2r&   r&   r'   r’     s&   zTreeviewTest.test_indexc              	   C   s~  |   tj| jjdd¡ | j tj| jjdddd | j tj| jjdddd |  | j | jjdddd¡¡ |  | j | jjdddd¡¡ |   tj| jjdd¡ | j ddd	¡}|  |d	¡ |   tj| jjddd	¡ |   tj| jjddtd	ƒ¡ d
}| jjdd|fd}|  | j 	|d¡| j
r’|fn|¡ |  | jj	|d d| j
r¤|fn|¡ | jj	|| j | jj	|d d¡d |  | jj	|d d| j
rÈ|fn|¡ |  | j 	|¡t¡ | jj	|dd |  | jj	|d d¡ | jjdddd|gd}|  | jj	|d d| j
rdd|fnd| ¡ | jj	|g d |  | jj	|d d¡ | jj	|dd |  | jj	|d d| j
r5dnd¡ | jjdddd||f fd}|  | jj	|d d| j
r\dd||f fnd||f ¡ |  | jj	| jjddddd dd¡ |  | jj	| jjdd|dd d|¡ | j ddd¡}|  |d¡ | j ddd¡}|  |d¡ |   tj| jjddd¡ |   tj| jjddd¡ d S )NrŒ   rò   r   )ÚopenZpleaseTFZmiddlez
first-itemu   Ã¡bar   rý   r¦   rJ   ©Útagsr"  r#  z1 2 %s©r¦   rJ   )r"  r#  z1 2r²  z%s %sz{a b c} {%s %s}z
Label hererE  r   r*   g        z0.0)rR   rS   r   r±  rô   rÃ   rù   r!   r   Úitemr.  rE   Z	splitlistrB  rC  )r$   ZitemidrK  rÞ  r&   r&   r'   Útest_insert_item?  s†   ÿÿ  ÿÿÿÿ$ÿþÿ
ÿ
þ
ÿþ
ÿþzTreeviewTest.test_insert_itemc                 C   s²  |   t| jjd¡ |   tj| jjd¡ |   tj| jjd¡ |   tj| jjd¡ |   tj| jj	d¡ | j 
dd¡}| j 
dd¡}| 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¡ | jj
dddd | j d¡ |  | j ¡ d¡ | jj
ddd	d | j d	¡ |  | j ¡ d
¡ | jj
dddd | j d¡ |  | j ¡ d¡ | jj
dddd | j d¡ |  | j ¡ d¡ | j ¡  |  | j ¡ d¡ | j ||f¡ |  | j ¡ ||f¡ | j ||f¡ |  | j ¡ |||f¡ | j ||f¡ |  | j ¡ ||f¡ | j 	||f¡ |  | j ¡ ||f¡ d S )Nrˆ   rŒ   r   rò   r&   úwith spacesrÅ  )rà  ú{brace)rá  õ
   unicodeâ‚¬)râ  s   bytesâ‚¬)u   bytesÃ¢Â‚Â¬)rR   Ú	TypeErrorr±  Z	selectionrS   r   Zselection_setZselection_addZselection_removeZselection_togglerô   r!   )r$   rÊ  rÉ  rØ  rÙ  Zc3r&   r&   r'   Útest_selectionŒ  sn   



zTreeviewTest.test_selectionc                 C   sœ  ddg| j d< | j jddddgd}|  | j  |¡ddd	œ¡ | j  |dd¡ |  | j j|d d| jr5d
nd¡ dg| j d< |  | j  |¡ddi¡ | j  |dd¡ |  | j j|ddd¡ |  | j j|d d| jrldnd¡ | j  |dd¡ |  | j  |d¡| jr„dnd¡ |  | j j|d d| jr•dnd¡ |  | j  |¡| jr¦ddinddi¡ |  tj| j j|d¡ |  tj| j j|dd¡ |  tj| j jd¡ d S )NÚAÚBr®  r   rò   rî   rF  r   )rå  ræ  )rî   rî   za a)r¿  )rF  rî   zb aé{   Z123)rç  rî   z123 aZnotme)	r±  rô   r!   r,  rÞ  r.  rR   rS   r   )r$   rÞ  r&   r&   r'   rv  Ó  s6   ÿÿÿÿÿzTreeviewTest.test_setc           	         s6  g ‰ | j jdddgd}| j jdddgd}| j  dd‡ fdd„¡ | j  dd‡ fd	d„¡ | j  ¡  | j  ¡  tƒ }tƒ }td
ddƒD ] }t|ƒdkrN qe| j  |¡}|rd||vrd| 	|¡ | 	|¡ qD|  
t|ƒd¡ |D ]	}t| j d
|ƒ qo|  
tˆ ƒd¡ tˆ d d d… ˆ dd d… ƒD ]}|  
|d¡ qd S )Nr   rò   ÚcallrÛ  r  c                    r¤   r¥   r§   r  ©Úeventsr&   r'   r«   ù  r¬   z,TreeviewTest.test_tag_bind.<locals>.<lambda>r  c                    r¤   )NrJ   r§   r  ré  r&   r'   r«   û  r¬   r   r   rl  rJ   r£  r¦   rÝ  )r±  rô   Ztag_bindrF   rM   r,  r‹  rÆ   Zidentify_rowr6  r!   r	   Úzip)	r$   rÊ  rÉ  Zpos_yÚfoundr  rÀ  r
  r  r&   ré  r'   Útest_tag_bindô  s8   

ÿ

ÿ



€"ÿzTreeviewTest.test_tag_bindc                 C   s†   |   t| jj¡ | j tj| jjddd | jjddd |  t| j dd¡ƒd¡ |  t| jjdd dƒd¡ |  | j d¡t	¡ d S )Nrº  Zblue)Zsky)rœ   rœ   )
rR   rã  r±  Ztag_configurerS   r   r!   rÄ   rB  rC  rG   r&   r&   r'   Útest_tag_configure  s   ÿÿÿzTreeviewTest.test_tag_configurec                 C   s  | j jddddgd}| j jddddgd}|  t| j j¡ |  t| j jdd¡ |  | j  d|¡¡ |  | j  d|¡¡ |  | j  d|¡¡ |  | j  d|¡¡ |  | j  d	|¡¡ |  | j  d	|¡¡ |  | j  d¡|f¡ |  | j  d¡|f¡ |  | j  d	¡d
¡ d S )Nr   rò   zItem 1Ztag1)rA   rÜ  zItem 2Ztag2znon-existingZtag3r&   )	r±  rô   rR   rã  Ztag_hasr   r¯   rÃ   r!   )r$   rÊ  rÉ  r&   r&   r'   Útest_tag_has!  s   zTreeviewTest.test_tag_has)r<   r=   r>   rp   rC   r    r´  r¶  r  r·  rÙ   rä   rÃ  rÇ  rË  rÏ  rÑ  rÒ  rÔ  r×  r’  rß  rä  rv  rí  rî  rï  r`   r&   r&   rH   r'   r­    s2    	*$MG!!r­  c                   @   r  )ÚSeparatorTest)r   rf   r1  r6   ri   r4  c                 K   rj   rX   )r   Z	SeparatorrE   rl   r&   r&   r'   r    9  rn   zSeparatorTest.createNr  r&   r&   r&   r'   rð  1  s    rð  c                   @   rc   )ÚSizegripTest)r   rf   r6   ri   c                 K   rj   rX   )r   ZSizegriprE   rl   r&   r&   r'   r    D  rn   zSizegripTest.createNro   r&   r&   r&   r'   rñ  =  s    rñ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚDefaultRootTestc                 C   ó   |   tj¡ d S rX   )Ú_test_widgetr   rk   rG   r&   r&   r'   Ú
test_frameJ  ó   zDefaultRootTest.test_framec                 C   ró  rX   )rô  r   r   rG   r&   r&   r'   Ú
test_labelM  rö  zDefaultRootTest.test_labelN)r<   r=   r>   rõ  r÷  r&   r&   r&   r'   rò  H  s    rò  Ú__main__)4ZunittestrS   r   r   Ztest.supportr   rç   Z$tkinter.test.test_ttk.test_functionsr   Ztkinter.test.supportr   r   r   r	   r
   Ztkinter.test.widget_testsr   r   r   r   r   r   r   r   ZTestCaser?   ra   rd   rr   r„   r˜   r    r±   rÉ   rû   r0  rJ  rR  rY  rw  ZskipIfrè   r€  rƒ  r™  r­  rð  rñ  rò  Z	tests_guir<   Úmainr&   r&   r&   r'   Ú<module>   sŠ    $':0 } 3j"ÿ
 P /    -


û
ÿ