a
    zeB                     @   s   d dl mZ ed d dlZd dlmZ G dd dZG dd deZG d	d
 d
eZ	G dd dej
ZG dd dej
Zedkre  dS )    )supportZ_tkinterN)ttkc                   @   s   e Zd Zdd Zdd ZdS )	MockTkAppc                 C   s   t |tr|S |dS )N:)
isinstancetuplesplit)selfarg r   ,/usr/lib/python3.9/test/test_ttk_textonly.py	splitlist   s    
zMockTkApp.splitlistc                 C   s   dS )NTr   r	   r   r   r   wantobjects   s    zMockTkApp.wantobjectsN)__name__
__module____qualname__r   r   r   r   r   r   r   
   s   r   c                   @   s    e Zd ZdZdd Zdd ZdS )
MockTclObjtestc                 C   s
   || _ d S Nval)r	   r   r   r   r   __init__   s    zMockTclObj.__init__c                 C   s
   t | jS r   )strr   r   r   r   r   __str__   s    zMockTclObj.__str__Nr   r   r   typenamer   r   r   r   r   r   r      s   r   c                   @   s    e Zd ZdZdd Zdd ZdS )MockStateSpecZ	StateSpecc                 G   s
   || _ d S r   r   )r	   argsr   r   r   r   "   s    zMockStateSpec.__init__c                 C   s   d | jS N )joinr   r   r   r   r   r   %   s    zMockStateSpec.__str__Nr   r   r   r   r   r      s   r   c                   @   s\   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
dd Zdd ZdS )InternalFunctionsTestc              
      s   fdd}  ti  |tdg ddddd |tdd	id
di |tdddiid
ddii |tjg dddddddddddddddddd ddd }| }|t|ddd!  || |td"d#id$d%i |td"d&id$d'i |td"d(id$d)i |td"d*id$d+i |td"d,id$d-i |td"d.id$d/i ttj|d0d1d2 } |t|d3  ttj|d4d1d2 } |t|d3    tj|t| d1 d S )5Nc                    sJ   t dt| dD ]"} || | | |d   q|rF d|  d S )Nr         zresult still got elements: %s)rangelenassertEqualpopZfail)Zfmt_optsresultir   r   r   check_against,   s     z@InternalFunctionsTest.test_format_optdict.<locals>.check_againstZbluer$   r#         )ZfgZpaddingz1 2 3 4)z-fgz-paddingr   )r$   r#    r   -testz1 2 {} 0leftzas is)r$   r/   2mr   r-   r/   zabc defz"abc"z{}z	} -spam {)r   Ztest2Ztest3Ztest4Ztest5Ztest6Ztest7TZscriptz{1 -1 {} 2m 0}3z	{abc def}z{"abc"}z\{\}z\}\ -spam\ \{)r0   z-test2z-test3z-test4z-test5z-test6z-test7Fu   αβγ   á)u   -αβγu   -áoption)zone twothree-optionz{one two} three)zone	twor9   z{one	two} three)r/   Zonez{} one)z	one} {twor9   zone\}\ \{two three)z"one"twoz{"one"} two)z{one}r;   z\{one\} twor7   )ignorer#   r$   )r7   b)assertFalser   Z_format_optdictcopyr'   r&   listkeys)r	   r+   optsZ	orig_optsZamount_optsr   r   r   test_format_optdict+   s    

z)InternalFunctionsTest.test_format_optdictc                 C   sr  dg di}t |}| t|tt| d  | |d | t j|ddd | t dg id d	d
gi}t |}| |d | t ddgid ddgi}| t |d ddgi}| tt j| ddgddfgi}| tt j| dddggi}| t |d d dddt fD ]&}d|dfgi}| t |d q.dd i}| tt j| d S )Na))r=   cr   )dZotherval)r/   Zsingler#   )-az{b c} val d otherval {} singleTr4   )rG   z {{b c} val d otherval {} single})z-2r/      üñíćódèr7   u   vãl)u   -üñíćódèu   á vãlopt)value)-optz{} value)r/   r/   hi)rL   z{ } hi)r$   r#   	valid valr$   2rN   rK   )rL   z1 valuer   Fr/   )	r   Z_format_mapdictr'   r&   r@   rA   assertRaises	TypeErrorset)r	   rB   r)   ZvalidinvalidZstatevalr   r   r   test_format_mapdict   s:    
 



z)InternalFunctionsTest.test_format_mapdictc                 C   s  |  td d | ttjd | tdddd | tddddd | tddddd	 | tjdddd
ddd | tjddddddgdd | ttjd | tddddd | tdddddd | tjddddd
ddd | tjddddddddgfddd | ttjd | tdddd | tddddd | tddddd  d S )!N)Nr   imageFr   )ztest r   )r/   rD   )z	test {} ar   rD   r=   rE   )ztest {a b} cr   rD   r=   x)rD   )ztest a b)rG   rX   T)rD   r=   rE   rF   r#   r-   )rX   )z{test {a b c} d}z-x {2 3}ZvsapirD   r=   )za b r   )za b {a b} cr   )rJ   )za b a b)rL   rX   r$   )z{a b {a b} {1 2}}z-opt xfrom)rD   r   )rD   )r=   )z{a}r=   )
assertTruer   Z_format_elemcreaterP   
IndexErrorr'   
ValueErrorr   r   r   r   test_format_elemcreate   sl    z,InternalFunctionsTest.test_format_elemcreatec                 C   s  ddd}ddd}|  tg d d | ttjdg tjd	gdd
}|  |tjdgdd
 |  |d d |  | |  tdD ]0}|  |||| |  |||||| q| ttjddg | ttjdg | ttjdddd iifg d S )Nr   r#   c              	   S   sD   t jdg dddddddifgd	d
fgifgdfg| |dd S )NrD   )r$   r#   r-   r=   childrenrE   rF   nicerJ   )r$   r#   )r^   	something)otherr^   indentindent_sizer   )r   _format_layoutlistrb   r   r   r   sample   s    z<InternalFunctionsTest.test_format_layoutlist.<locals>.samplec                    sH   d fdd	}d| |||d| |d| |d| ||| f S )Nr   c                    s   d|    S r   r   )amountrc   r   r   <lambda>       zWInternalFunctionsTest.test_format_layoutlist.<locals>.sample_expected.<locals>.<lambda>zi%sa -other {1 2 3} -children {
%sb -children {
%sc -something {1 2} -children {
%sd -nice opt
%s}
%s}
%s}r#   r-   )r   r   )rc   rd   spacesr   rh   r   sample_expected   s    
zEInternalFunctionsTest.test_format_layoutlist.<locals>.sample_expectedr/   rW   )rD   Nrh   )rD   r/   rD   r.   badformat)namerm   ro   r^   )r   r#   )r   r#   )r'   r   re   rP   AttributeErrorr%   r\   )r	   rf   rl   Zsmallestr*   r   r   r   test_format_layoutlist   s0    





z,InternalFunctionsTest.test_format_layoutlistc              	   C   s0  |  tdd d d di | tddd iid ddd}| tdd|ii d	d
gi}| tdd|ii | ttjdddgii | tddddgii ddg dii}| t|d |d d ddi | t|d tdtdg|d d d d< | t|d d S )Nro   )	configuremapelement createZlayoutzttk::style layout name {
null
}TFr6   rr   rH   rI   rs   rt   rU   thing)rU   ro   )Zstate1Zstate2r   zAttk::style element create thing image {name {state1 state2} val} rJ      zHttk::style element create thing image {name {state1 state2} val} -opt 30r-   r3   r2   zLttk::style element create thing image {name {state1 state2} val} -opt {3 2m})	r>   r   Z_script_from_settingsr'   rZ   rP   r[   appendr   )r	   Z
configdictZmapdictrU   r   r   r   test_script_from_settings  sJ    





z/InternalFunctionsTest.test_script_from_settingsc                 C   sF   |  ttdddfdg |  ttddtdgg d d S )	NrD   r=   r   )rD   r=   r   1r#   3m)r$   r#   rz   )r'   r   Z_tclobj_to_pyr   r   r   r   r   r   test_tclobj_to_pyJ  s    z'InternalFunctionsTest.test_tclobj_to_pyc                    s    fdd}t dd tdD }t| }||dd| ||tdd| t dd tdD }t| }||dd| |d	tddd	 d S )
Nc                    s"     t| |f||f g d S r   )r'   r   Z_list_from_statespec)ZsspecrK   Z	res_valueZstatesr   r   r   test_itT  s
    
z?InternalFunctionsTest.test_list_from_statespec.<locals>.test_itc                 s   s   | ]}d | V  qdS zstate%dNr   .0r*   r   r   r   	<genexpr>X  rj   zAInternalFunctionsTest.test_list_from_statespec.<locals>.<genexpr>   r   c                 s   s   | ]}d | V  qdS r}   r   r~   r   r   r   r   ]  rj      rV   )r   r%   r   r   )r	   r|   Zstates_evenZ	statespecZ
states_oddr   r   r   test_list_from_statespecS  s    z.InternalFunctionsTest.test_list_from_statespecc              	   C   s   t  }| t|d | t|ddi fg d}| t||dddifg | t|ddd	g ifg d
}| t||dddddi fgdfgdfg | ttj|d | ttj|d | ttj|d d S )Nr   )ro   ro   )ro   r:   rK   r8   rK   )r`   	-childrenr   r`   r^   )ro   r:   niceoner   )otheroner   )childz	-otheropt
othervaluer   r   r   r   )Zotheroptr^   )r8   r^   )ro   no_minus)ro   r   rK   )r`   r   )r   r>   r   Z_list_from_layouttupler'   rP   r\   )r	   tkZsample_ltupleZltupler   r   r   test_list_from_layouttupled  s>    
	z0InternalFunctionsTest.test_list_from_layouttuplec                 C   s   d
dd}t  }||_| t|i dddi | t|i dddi | t|dd idd	 | t|ddidddi d S )Nc                 S   s    |d u r| S |d u rdS ||fS )Ntest valr   )resrJ   r   r   r   r   func  s
    z4InternalFunctionsTest.test_val_or_dict.<locals>.funcz-test:3r   r5   )r0   r-   r-   zx:yr   )NN)r   callr'   r   Z_val_or_dict)r	   r   r   r   r   r   test_val_or_dict  s    
z&InternalFunctionsTest.test_val_or_dictc                 C   s8   ddddg dfdf}|D ]\}}|  t|| qd S )N)r   r   )Z09	   )rD   rD   )   áÚr   z[])NNone)r'   r   Z_convert_stringval)r	   ZtestsZorigZexpectedr   r   r   test_convert_stringval  s
    z,InternalFunctionsTest.test_convert_stringvalN)r   r   r   rC   rT   r]   rq   rx   r{   r   r   r   r   r   r   r   r   r"   )   s   X(;9+	.r"   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TclObjsToPyTestc                 C   sH   ddi}|  t|ddi t|d |d< |  t|ddi d S )NrJ   u   välúè)r'   r   tclobjs_to_pyr   r	   Zadictr   r   r   test_unicode  s    zTclObjsToPyTest.test_unicodec                 C   s   dg di}|  t|dg di g d|d< |  t|dg di tdddf|d< |  t|ddgi |  tdd	gidd	gi d S )
NrJ   r,   )r$   Zxmr-   rD   r=      válũè)rD   r=   r   rX   zy z)r'   r   r   r   r   r   r   r   test_multivalues  s    z TclObjsToPyTest.test_multivaluesc                 C   s   |  tddiddi d S )Ntextz	some text)r'   r   r   r   r   r   r   test_nosplit  s    zTclObjsToPyTest.test_nosplitN)r   r   r   r   r   r   r   r   r   r   r     s   r   __main__)r   r   import_moduleZunittesttkinterr   r   objectr   r   ZTestCaser"   r   r   mainr   r   r   r   <module>   s   


   