a
    	3j%                     @   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 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rejdd dS )    )
config_key)requiresN)mock)TkTclError)Func)	Mbox_funcc                   @   s   e Zd ZG dd de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dd Ze Ze ZdS )zValidationTest.Validatorc                 O   s2   t jj| g|R 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   ]/www/server/python_manager/versions/3.9.10/lib/python3.9/idlelib/idle_test/test_config_key.pylist_keys_final   s   r   )r   GetKeysDialog__init__r   selfargskwargsr   r   r   r   r      s    z!ValidationTest.Validator.__init__N)r
   r   r   r   r   get_modifiersr   	showerrorr   r   r   r   	Validator   s   r   c                 C   sD   t d t | _| j  dgddgg}| j| jdd|dd| _d S )	Ngui	<Key-F12><Control-Key-x><Control-Key-X>Title<<Test>>TZ_utest)r   r   rootwithdrawr   dialog)clsZkeylistr   r   r   
setUpClass   s    
zValidationTest.setUpClassc                 C   s*   | j   | j  | j  | ` | `d S Nr#   cancelr!   Zupdate_idletasksZdestroyr$   r   r   r   tearDownClass(   s    


zValidationTest.tearDownClassc                 C   s   d| j j_d S )N )r#   r   messager   r   r   r   setUp/   s    zValidationTest.setUpc                 C   s>   | j jd | j   | | j jd | | j jjd d S )N r+   zNo key specified.)r#   
key_stringsetokassertEqualresultr   r,   r-   r   r   r   test_ok_empty4   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>F11r+   )
r#   r0   r1   r   r   r4   r2   r3   r   r,   r-   r   r   r   test_ok_good:   s
    
zValidationTest.test_ok_goodc                 C   s(   |  | jd | d| jjj d S )Nz<Control-ShiftzMissing the final)assertFalser#   keys_okassertInr   r,   r-   r   r   r   test_keys_no_endingA   s    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   r4   r9   r:   r;   r   r,   r-   r   r   r   test_keys_no_modifier_badE   s    z(ValidationTest.test_keys_no_modifier_badc                 C   s4   d| j jj_| | j d | | j jjd d S )Nr7   r6   r+   )	r#   r   r   r4   
assertTruer:   r3   r   r,   r-   r   r   r   test_keys_no_modifier_okJ   s    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   r4   r   r9   r:   r;   r   r,   r-   r   r   r   test_keys_shift_badO   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 ]t\}}}| j |||dJ || jjj_|| jj_| | j| | d	| jj	j
 W d    q 1 s0    Y  q g | jj_d S )
NZF12r   Controlxr   Xr   )mfszalready in use)ZsubTestr#   r   r   r4   r   r9   r:   r;   r   r,   )r   Zmodsfinalseqr   r   r   test_keys_dupV   s    


2zValidationTest.test_keys_dupc                 C   s(   |  | jd | | jjjd d S )Nz<Control-Shift-Key-a>r+   )r?   r#   bind_okr3   r   r,   r-   r   r   r   test_bind_oka   s    zValidationTest.test_bind_okc                 C   s(   |  | jd | d| jjj d S )Nz<Control-Shift>znot accepted)r9   r#   rM   r;   r   r,   r-   r   r   r   test_bind_not_oke   s    zValidationTest.test_bind_not_okN)r
   r   r   gkdr   classmethodr%   r*   r.   r5   r8   r<   r>   r@   rC   rL   rN   rO   r   r   r   r   r	      s   	

r	   c                   @   s,   e Zd Zedd Zedd Zdd ZdS )ToggleLevelTestc                 C   s4   t d t | _| j  t| jddg dd| _d S Nr   r   r   Tr    r   r   r!   r"   rP   r#   r)   r   r   r   r%   m   s    
zToggleLevelTest.setUpClassc                 C   s*   | j   | j  | j  | ` | `d S r&   r'   r)   r   r   r   r*   t   s    


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  j D ]$\} }|jdkr$| }|jdkr| }q||fS )NZkeyseq_basicZkeyseq_advanced)	enumerateframeZwinfo_children_name)indexchildbasicadvancedr#   r   r   
stackorder~   s    

z5ToggleLevelTest.test_toggle_level.<locals>.stackorderZAdvancedtextBasic)	r#   r9   r[   r;   Zbutton_levelZassertGreaterZtoggle_levelr?   invoke)r   r]   rZ   r[   r   r\   r   test_toggle_level{   s     



z!ToggleLevelTest.test_toggle_levelN)r
   r   r   rQ   r%   r*   ra   r   r   r   r   rR   j   s
   

rR   c                   @   sp   e Zd ZG dd deZedd Zedd Zdd Zd	d
 Z	e
jeddd Ze
je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                    s*   t  j|i | G dd d}|| _d S )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   )superr   r   r   	__class__r   r   r      s    zKeySelectionTest.Basic.__init__c                 C   s   g d| _ ddi| _d S )N)fooZbarBAZrg   ZZZZ)	modifiersZmodifier_labelr-   r   r   r   set_modifiers_for_platform   s    
z1KeySelectionTest.Basic.set_modifiers_for_platform)r
   r   r   r   ri   r   r   __classcell__r   r   rd   r   r_      s   r_   c                 C   s6   t d t | _| j  | j| jddg dd| _d S rS   )r   r   r!   r"   r_   r#   r)   r   r   r   r%      s    
zKeySelectionTest.setUpClassc                 C   s*   | j   | j  | j  | ` | `d S r&   r'   r)   r   r   r   r*      s    


zKeySelectionTest.tearDownClassc                 C   s   | j   d S r&   )r#   Zclear_key_seqr-   r   r   r   r.      s    zKeySelectionTest.setUpc                 C   sl   | j }|j}| j}|jd   || dg |jd   || ddg |jd   || dg d S )Nrf   rg   )r#   r   r3   Zmodifier_checkbuttonsr`   )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 )NrA   z<Key-a>Zmymodz<mymod-Key-a>r+   testz<mymod-test>)r#   r   r0   r   r3   r4   return_valueZbuild_key_stringr   Zmock_modifiersr#   keystringrk   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 )NrB   {z<Shift-Key-braceleft>)r#   r   r0   r   r3   rn   r4   Zfinal_key_selectedro   r   r   r   test_final_key_selected   s    z(KeySelectionTest.test_final_key_selectedN)r
   r   r   rP   r_   rQ   r%   r*   r.   rl   r   Zpatchobjectrr   rt   r   r   r   r   rb      s   


rb   c                   @   s,   e Zd Zedd Zedd Zdd ZdS )
CancelTestc                 C   s4   t d t | _| j  t| jddg dd| _d S rS   rT   r)   r   r   r   r%      s    
zCancelTest.setUpClassc                 C   s*   | j   | j  | j  | ` | `d S r&   r'   r)   r   r   r   r*      s    


zCancelTest.tearDownClassc                 C   sf   |  | j d | jj  | t | j  W d    n1 sH0    Y  |  | jjd d S )NZToplevelr+   )r3   r#   Zwinfo_classZbutton_cancelr`   ZassertRaisesr   r4   r-   r   r   r   test_cancel  s
    (zCancelTest.test_cancelN)r
   r   r   rQ   r%   r*   rw   r   r   r   r   rv      s
   

rv   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-qrD   AltrB   zKey-Q)rD   rz   rB   zPage Upz	Key-Prior*zKey-asterisk)r   Ztranslate_keyr3   )r   trrk   r   r   r   test_translate_key  s    zHelperTest.test_translate_keyN)r
   r   r   r}   r   r   r   r   rx     s   rx   __main__   )	verbosity)Zidlelibr   Ztest.supportr   Zunittestr   tkinterr   r   Zidlelib.idle_test.mock_idler   Zidlelib.idle_test.mock_tkr   r   rP   ZTestCaser	   rR   rb   rv   rx   r
   mainr   r   r   r   <module>   s   W7R