o
    JAfÆ,  ã                   @   sð   	 d dl mZ d dlmZ d dlZd dlmZ d dlmZmZ d dl	m
Z
 d dlmZ G dd	„ d	ejƒZG d
d„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZedkrvejdd dS dS )é    )Ú
config_key)ÚrequiresN)Úmock)ÚTkÚTclError)ÚFunc)Ú	Mbox_funcc                   @   sˆ   e Zd Z	 G dd„ dejƒZedd„ ƒZe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 )ÚValidationTestc                       s(   e Zd Z‡ fdd„Zeƒ Zeƒ Z‡  ZS )zValidationTest.Validatorc                    ó*   t ƒ j|i |¤Ž G dd„ dƒ}|| _d S )Nc                   @   s   e Zd Zeƒ ZdS )z:ValidationTest.Validator.__init__.<locals>.list_keys_finalN)Ú__name__Ú
__module__Ú__qualname__r   Úget© r   r   ú8/usr/lib/python3.10/idlelib/idle_test/test_config_key.pyÚlist_keys_final   s    
r   ©ÚsuperÚ__init__r   ©ÚselfÚargsÚkwargsr   ©Ú	__class__r   r   r      s   
z!ValidationTest.Validator.__init__)	r   r   r   r   r   Úget_modifiersr   Ú	showerrorÚ__classcell__r   r   r   r   Ú	Validator   s    r   c                 C   s>   t dƒ tƒ | _| j ¡  dgddgg}|  | jd|¡| _d S )NÚguiú	<Key-F12>ú<Control-Key-x>ú<Control-Key-X>ú<<Test>>)r   r   ÚrootÚwithdrawr   Údialog)ÚclsZkeylistr   r   r   Ú
setUpClass   s
   
zValidationTest.setUpClassc                 C   ó    | ` | j ¡  | j ¡  | `d S ©N©r&   r$   Úupdate_idletasksÚdestroy©r'   r   r   r   ÚtearDownClass%   ó   

zValidationTest.tearDownClassc                 C   s   d| j j_d S )NÚ )r&   r   Úmessage©r   r   r   r   ÚsetUp,   ó   zValidationTest.setUpc                 C   s>   | j j d¡ | j  ¡  |  | j jd¡ |  | j jjd¡ d S )Nú r1   zNo key specified.)r&   Ú
key_stringÚsetÚokÚassertEqualÚresultr   r2   r3   r   r   r   Útest_ok_empty1   s   
zValidationTest.test_ok_emptyc                 C   sJ   | j j d¡ d| j jj_| j  ¡  |  | j jd¡ |  | j jj	d¡ d S )Nú	<Key-F11>ÚF11r1   )
r&   r7   r8   r   r   r;   r9   r:   r   r2   r3   r   r   r   Útest_ok_good7   s
   
zValidationTest.test_ok_goodc                 C   ó(   |   | j d¡¡ |  d| jjj¡ d S )Nz<Control-ShiftzMissing the final)ÚassertFalser&   Úkeys_okÚassertInr   r2   r3   r   r   r   Útest_keys_no_ending>   ó   z"ValidationTest.test_keys_no_endingc                 C   s4   d| j jj_|  | j  d¡¡ |  d| j jj¡ d S )NÚAz<Key-A>zNo modifier)	r&   r   r   r;   rA   rB   rC   r   r2   r3   r   r   r   Útest_keys_no_modifier_badB   ó   z(ValidationTest.test_keys_no_modifier_badc                 C   s4   d| j jj_|  | j  d¡¡ |  | j jjd¡ d S )Nr>   r=   r1   )	r&   r   r   r;   Ú
assertTruerB   r:   r   r2   r3   r   r   r   Útest_keys_no_modifier_okG   rH   z'ValidationTest.test_keys_no_modifier_okc                 C   sJ   d| j jj_dg| j j_|  | j  d¡¡ |  d| j jj	¡ g | j j_d S )NÚaÚShiftz<a>zshift modifier)
r&   r   r   r;   r   rA   rB   rC   r   r2   r3   r   r   r   Útest_keys_shift_badL   s
   z"ValidationTest.test_keys_shift_badc              	   C   s¤   g ddfdgddfdgddffD ]:\}}}| j |||d% || jjj_|| jj_|  | j |¡¡ |  d	| jj	j
¡ W d   ƒ n1 sEw   Y  qg | jj_d S )
NZF12r    ÚControlÚxr!   ÚXr"   )ÚmÚfÚszalready in use)ZsubTestr&   r   r   r;   r   rA   rB   rC   r   r2   )r   ZmodsÚfinalÚseqr   r   r   Útest_keys_dupS   s   

þ
ü€zValidationTest.test_keys_dupc                 C   s(   |   | j d¡¡ |  | jjjd¡ d S )Nz<Control-Shift-Key-a>r1   )rI   r&   Úbind_okr:   r   r2   r3   r   r   r   Útest_bind_ok^   rE   zValidationTest.test_bind_okc                 C   r@   )Nz<Control-Shift>znot accepted)rA   r&   rW   rC   r   r2   r3   r   r   r   Útest_bind_not_okb   rE   zValidationTest.test_bind_not_okN)r   r   r   r   ÚGetKeysFramer   Úclassmethodr(   r/   r4   r<   r?   rD   rG   rJ   rM   rV   rX   rY   r   r   r   r   r	      s"    	

r	   c                   @   ó.   e Zd Z	 edd„ ƒZedd„ ƒZdd„ ZdS )ÚToggleLevelTestc                 C   s0   t dƒ tƒ | _| j ¡  t | jdg ¡| _d S ©Nr   r#   )r   r   r$   r%   r   rZ   r&   r.   r   r   r   r(   j   ó   
zToggleLevelTest.setUpClassc                 C   r)   r*   r+   r.   r   r   r   r/   q   r0   zToggleLevelTest.tearDownClassc                    sÄ   | j ‰ ‡ fdd„}|  ˆ j¡ |  dˆ jd ¡ |ƒ \}}|  ||¡ ˆ  ¡  |  ˆ j¡ |  dˆ jd ¡ |ƒ \}}|  ||¡ ˆ j ¡  |  ˆ j¡ |  dˆ jd ¡ |ƒ \}}|  ||¡ d S )Nc                     s<   	 t ˆ  ¡ ƒD ]\} }|jdkr| }|jdkr| }q||fS )NZkeyseq_basicZkeyseq_advanced)Ú	enumerateZwinfo_childrenÚ_name)ÚindexÚchildÚbasicÚadvanced©r&   r   r   Ú
stackorder{   s   

€z5ToggleLevelTest.test_toggle_level.<locals>.stackorderZAdvancedÚtextÚBasic)	r&   rA   re   rC   Zbutton_levelZassertGreaterZtoggle_levelrI   Úinvoke)r   rg   rd   re   r   rf   r   Útest_toggle_levelx   s    



z!ToggleLevelTest.test_toggle_levelN)r   r   r   r[   r(   r/   rk   r   r   r   r   r]   g   s    

r]   c                   @   sx   e Zd Z	 G dd„ dejƒZedd„ ƒZedd„ ƒZdd„ Z	d	d
„ Z
ej ejd¡dd„ ƒZej ejd¡dd„ ƒZdS )ÚKeySelectionTestc                       s*   e Zd Z‡ fdd„Zdd„ Zeƒ Z‡  ZS )zKeySelectionTest.Basicc                    r
   )Nc                   @   s   e Zd Zeƒ Zeƒ Zeƒ ZdS )z8KeySelectionTest.Basic.__init__.<locals>.list_keys_finalN)r   r   r   r   r   Zselect_clearZyviewr   r   r   r   r   ¤   s    
r   r   r   r   r   r   r   ¢   s   
zKeySelectionTest.Basic.__init__c                 C   s   g d¢| _ ddi| _d S )N)ÚfooÚbarÚBAZro   ZZZZ)Ú	modifiersZmodifier_labelr3   r   r   r   Úset_modifiers_for_platform©   s   
z1KeySelectionTest.Basic.set_modifiers_for_platform)r   r   r   r   rq   r   r   r   r   r   r   r   ri   ¡   s    ri   c                 C   s0   t dƒ tƒ | _| j ¡  |  | jdg ¡| _d S r^   )r   r   r$   r%   ri   r&   r.   r   r   r   r(   ®   r_   zKeySelectionTest.setUpClassc                 C   r)   r*   r+   r.   r   r   r   r/   µ   r0   zKeySelectionTest.tearDownClassc                 C   s   | j  ¡  d S r*   )r&   Zclear_key_seqr3   r   r   r   r4   ¼   r5   zKeySelectionTest.setUpc                 C   sl   | j }|j}| j}|jd  ¡  ||ƒ dgƒ |jd  ¡  ||ƒ ddgƒ |jd  ¡  ||ƒ dgƒ d S )Nrm   ro   )r&   r   r:   Zmodifier_checkbuttonsrj   )r   r&   ZgmÚeqr   r   r   Útest_get_modifiers¿   s   z#KeySelectionTest.test_get_modifiersr   c                 C   s‚   | j }|j}|jj}| j}d|j_g |_| ¡  ||ƒ dƒ dg|_| ¡  ||ƒ dƒ d|j_ddg|_| ¡  ||ƒ dƒ d S )NrK   z<Key-a>Zmymodz<mymod-Key-a>r1   Útestz<mymod-test>)r&   r   r7   r   r:   r;   Úreturn_valueZbuild_key_string©r   Zmock_modifiersr&   ÚkeyÚstringrr   r   r   r   Útest_build_key_stringÎ   s   
z&KeySelectionTest.test_build_key_stringc                 C   sB   | j }|j}|jj}| j}dg|_d|j_| ¡  ||ƒ dƒ d S )NrL   ú{z<Shift-Key-braceleft>)r&   r   r7   r   r:   ru   r;   Zfinal_key_selectedrv   r   r   r   Útest_final_key_selectedã   s   z(KeySelectionTest.test_final_key_selectedN)r   r   r   r   rZ   ri   r[   r(   r/   r4   rs   r   ÚpatchÚobjectry   r{   r   r   r   r   rl   ž   s    


rl   c                   @   ó>   e Zd Z	 edd„ ƒZedd„ ƒZej e	j
d¡dd„ ƒZdS )	ÚCancelWindowTestc                 C   ó6   t dƒ tƒ | _| j ¡  tj| jddg dd| _d S ©Nr   ZTitler#   T)Z_utest©r   r   r$   r%   r   ZGetKeysWindowr&   r.   r   r   r   r(   ó   ó   
ÿzCancelWindowTest.setUpClassc                 C   ó*   | j  ¡  | ` | j ¡  | j ¡  | `d S r*   ©r&   Úcancelr$   r,   r-   r.   r   r   r   r/   û   ó
   


zCancelWindowTest.tearDownClassr9   c                 C   sn   |   | j ¡ d¡ | jj ¡  |  t¡ | j ¡  W d   ƒ n1 s$w   Y  |   | jjd¡ | ¡  d S )NÚToplevelr1   )	r:   r&   Úwinfo_classZbutton_cancelrj   ÚassertRaisesr   r;   Zassert_not_called©r   Zmock_frame_okr   r   r   Útest_cancel  s   ÿzCancelWindowTest.test_cancelN)r   r   r   r[   r(   r/   r   r|   r}   r   rZ   rŒ   r   r   r   r   r   ð   ó    

r   c                   @   r~   )	ÚOKWindowTestc                 C   r€   r   r‚   r.   r   r   r   r(     rƒ   zOKWindowTest.setUpClassc                 C   r„   r*   r…   r.   r   r   r   r/     r‡   zOKWindowTest.tearDownClassr9   c                 C   s^   |   | j ¡ d¡ | jj ¡  |  t¡ | j ¡  W d   ƒ n1 s$w   Y  | ¡  d S )Nrˆ   )r:   r&   r‰   Z	button_okrj   rŠ   r   Zassert_calledr‹   r   r   r   Útest_ok   s   ÿzOKWindowTest.test_okN)r   r   r   r[   r(   r/   r   r|   r}   r   rZ   r   r   r   r   r   rŽ     r   rŽ   c                   @   r\   )ÚWindowResultTestc                 C   r€   r   r‚   r.   r   r   r   r(   ,  rƒ   zWindowResultTest.setUpClassc                 C   r„   r*   r…   r.   r   r   r   r/   4  r‡   zWindowResultTest.tearDownClassc                 C   sr   | j }| j}d|_||jdƒ ||jjdƒ d|_||jdƒ ||jjdƒ d|j_||jdƒ ||jjdƒ d S )Nr1   rn   rm   )r&   r:   r;   Úframe)r   r&   rr   r   r   r   Útest_result<  s   zWindowResultTest.test_resultN)r   r   r   r[   r(   r/   r’   r   r   r   r   r   )  s    

r   c                   @   s   e Zd Z	 dd„ ZdS )Ú
HelperTestc                 C   s   t j}| j}||dg ƒdƒ ||dddgƒdƒ ||ddgƒdƒ ||dddgƒdƒ ||dg d¢ƒdƒ ||dg ƒd	ƒ ||d
dgƒdƒ d S )NÚqzKey-qrN   ÚAltrL   zKey-Q)rN   r•   rL   zPage Upz	Key-PriorÚ*zKey-asterisk)r   Ztranslate_keyr:   )r   Útrrr   r   r   r   Útest_translate_keyP  s   zHelperTest.test_translate_keyN)r   r   r   r˜   r   r   r   r   r“   M  s    r“   Ú__main__é   )Ú	verbosity)Zidlelibr   Ztest.supportr   Zunittestr   Útkinterr   r   Zidlelib.idle_test.mock_idler   Zidlelib.idle_test.mock_tkr   ZTestCaser	   r]   rl   r   rŽ   r   r“   r   Úmainr   r   r   r   Ú<module>   s$    V7R$ÿ