
    ch,                        d Z 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
ej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Zedk    r ej        d           dS dS )zTest config_key, coverage 98%.

Coverage is effectively 100%.  Tkinter dialog is mocked, Mac-only line
may be skipped, and dummy function in bind test should not be called.
Not tested: exit with 'self.advanced or self.keys_ok(keys) ...' False.
    )
config_key)requiresN)mock)TkTclError)Func)	Mbox_funcc                       e Zd ZdZ G d dej                  Zed             Zed             Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd ZdS )ValidationTestz.Test validation methods: ok, keys_ok, bind_ok.c                   F     e Zd Z fdZ e            Z e            Z xZS )ValidationTest.Validatorc                 b     t                      j        |i |  G d d          }|| _        d S )Nc                   "    e Zd Z e            ZdS ):ValidationTest.Validator.__init__.<locals>.list_keys_finalN)__name__
__module____qualname__r   get     3  /home/conda/feedstock_root/build_artifacts/python-split_1761172146731/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/lib/python3.11/idlelib/idle_test/test_config_key.pylist_keys_finalr      s        dffr   r   super__init__r   selfargskwargsr   	__class__s       r   r   z!ValidationTest.Validator.__init__   sU    EGGd-f---       #2D   r   )	r   r   r   r   r   get_modifiersr	   	showerror__classcell__r    s   @r   	Validatorr      sD        	3 	3 	3 	3 	3
 IKK					r   r%   c                     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)clskeylists     r   
setUpClasszValidationTest.setUpClass   s\    44=#46G"HI]]38ZAA


r   c                 r    | ` | j                                         | j                                         | `d S Nr.   r,   update_idletasksdestroyr/   s    r   tearDownClasszValidationTest.tearDownClass%   8    J!!###HHHr   c                 (    d| j         j        _        d S )N )r.   r"   messager   s    r   setUpzValidationTest.setUp,   s    (*%%%r   c                     | 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=   s    r   test_ok_emptyzValidationTest.test_ok_empty1   sm    ""3'''+R000.68KLLLLLr   c                 ,   | j         j                            d           d| j         j        j        _        | j                                          |                     | j         j        d           |                     | j         j        j	        d           d S )N	<Key-F11>F11r;   )
r.   rA   rB   r   r   rE   rC   rD   r"   r<   r=   s    r   test_ok_goodzValidationTest.test_ok_good7   s|    "";///16#'.+[999.6;;;;;r   c                     |                      | j                            d                     |                     d| j        j        j                   d S )Nz<Control-ShiftzMissing the final)assertFalser.   keys_okassertInr"   r<   r=   s    r   test_keys_no_endingz"ValidationTest.test_keys_no_ending>   sJ    ,,-=>>???)4;+@+HIIIIIr   c                     d| j         j        j        _        |                     | j                             d                     |                     d| j         j        j                   d S )NAz<Key-A>zNo modifier)	r.   r   r   rE   rL   rM   rN   r"   r<   r=   s    r   test_keys_no_modifier_badz(ValidationTest.test_keys_no_modifier_badB   sX    14#'.,,Y77888mT[%:%BCCCCCr   c                     d| j         j        j        _        |                     | j                             d                     |                     | j         j        j        d           d S )NrI   rH   r;   )	r.   r   r   rE   
assertTruerM   rD   r"   r<   r=   s    r   test_keys_no_modifier_okz'ValidationTest.test_keys_no_modifier_okG   sX    16#'.++K88999.6;;;;;r   c                    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   rE   r!   rL   rM   rN   r"   r<   r=   s    r   test_keys_shift_badz"ValidationTest.test_keys_shift_badL   su    14#'.,39!(,,U33444&(=(EFFF+-!(((r   c                    g ddfdgddfdgddffD ]\  }}}|                      |||          5  || j        j        j        _        || j        j        _        |                     | j                            |                     |                     d	| j        j	        j
                   d d d            n# 1 swxY w Y   g | j        j        _        d S )
NF12r(   Controlxr)   Xr*   )mfszalready in use)subTestr.   r   r   rE   r!   rL   rM   rN   r"   r<   )r   modsfinalseqs       r   test_keys_dupzValidationTest.test_keys_dupS   s5   "$e[!9#,+s4E!F#,+s4E!F!H 	O 	OD% 55 O O9>+/637)0  !4!4S!9!9:::.0E0MNNN	O O O O O O O O O O O O O O O
 ,.!(((s   A:B55B9	<B9	c                     |                      | j                            d                     |                     | j        j        j        d           d S )Nz<Control-Shift-Key-a>r;   )rT   r.   bind_okrD   r"   r<   r=   s    r   test_bind_okzValidationTest.test_bind_ok^   sI    ++,CDDEEE.6;;;;;r   c                     |                      | j                            d                     |                     d| j        j        j                   d S )Nz<Control-Shift>znot accepted)rL   r.   rh   rN   r"   r<   r=   s    r   test_bind_not_okzValidationTest.test_bind_not_okb   sI    ,,->??@@@ndk&;&CDDDDDr   N)r   r   r   __doc__r   GetKeysFramer%   classmethodr1   r8   r>   rF   rJ   rO   rR   rU   rY   rf   ri   rk   r   r   r   r   r      s$       44         J+       B B [B   [+ + +
M M M< < <J J JD D D
< < <
. . .	. 	. 	.< < <E E E E Er   r   c                   D    e Zd ZdZed             Zed             Zd ZdS )ToggleLevelTestz.Test toggle between Basic and Advanced frames.c                     t          d           t                      | _        | j                                         t	          j        | j        dg           | _        d S Nr'   r+   )r   r   r,   r-   r   rm   r.   r7   s    r   r1   zToggleLevelTest.setUpClassj   sH    44,SXz2FF


r   c                 r    | ` | j                                         | j                                         | `d S r3   r4   r7   s    r   r8   zToggleLevelTest.tearDownClassq   r9   r   c                    | j         fd}|                     j                   |                     dj        d                     |            \  }}|                     ||                                            |                     j                   |                     dj        d                     |            \  }}|                     ||           j                                         |                     j                   |                     dj        d                     |            \  }}|                     ||           d S )Nc                      t                                                    D ]\  } }|j        dk    r| }|j        dk    r| } ||fS )zGet the stack order of the children of the frame.

            winfo_children() stores the children in stack order, so
            this can be used to check whether a frame is above or
            below another one.
            keyseq_basickeyseq_advanced)	enumeratewinfo_children_name)indexchildbasicadvancedr.   s       r   
stackorderz5ToggleLevelTest.test_toggle_level.<locals>.stackorder{   s\     !*&*?*?*A*A B B % %u;.00!E;"333$H(?"r   AdvancedtextBasic)	r.   rL   r~   rN   button_levelassertGreatertoggle_levelrT   invoke)r   r   r}   r~   r.   s       @r   test_toggle_levelz!ToggleLevelTest.test_toggle_levelx   sY   	# 	# 	# 	# 	# 	)))j&"5f"=>>>$*,,x5(+++ 	(((gv26:;;;$*,,x8U+++ 	""$$$)))j&"5f"=>>>$*,,x5(+++++r   N)r   r   r   rl   rn   r1   r8   r   r   r   r   rp   rp   g   s`        44G G [G   [#, #, #, #, #,r   rp   c                      e Zd ZdZ G d dej                  Zed             Zed             Z	d Z
d Zej                            ej        d          d	             Zej                            ej        d          d
             ZdS )KeySelectionTestz#Test selecting key on Basic frames.c                   8     e Zd Z fdZd Z e            Z xZS )KeySelectionTest.Basicc                 b     t                      j        |i |  G d d          }|| _        d S )Nc                   J    e Zd Z e            Z e            Z e            ZdS )8KeySelectionTest.Basic.__init__.<locals>.list_keys_finalN)r   r   r   r   r   select_clearyviewr   r   r   r   r      s/        dff#tvvr   r   r   r   s       r   r   zKeySelectionTest.Basic.__init__   sW    EGGd-f---        $3D   r   c                 *    g d| _         ddi| _        d S )N)foobarBAZr   ZZZ)	modifiersmodifier_labelr=   s    r   set_modifiers_for_platformz1KeySelectionTest.Basic.set_modifiers_for_platform   s!    222DN#(%.Dr   )r   r   r   r   r   r	   r"   r#   r$   s   @r   r   r      sH        	3 	3 	3 	3 	3	1 	1 	1 IKK					r   r   c                     t          d           t                      | _        | j                                         |                     | j        dg           | _        d S rr   )r   r   r,   r-   r   r.   r7   s    r   r1   zKeySelectionTest.setUpClass   sI    44YYsxR88


r   c                 r    | ` | j                                         | j                                         | `d S r3   r4   r7   s    r   r8   zKeySelectionTest.tearDownClass   r9   r   c                 8    | j                                          d S r3   )r.   clear_key_seqr=   s    r   r>   zKeySelectionTest.setUp   s    !!#####r   c                 j   | j         }|j        }| j        }|j        d                                           | |            dg           |j        d                                           | |            ddg           |j        d                                           | |            dg           d S )Nr   r   )r.   r!   rD   modifier_checkbuttonsr   )r   r.   gmeqs       r   test_get_modifiersz#KeySelectionTest.test_get_modifiers   s    ! 	$U+22444
2244%$U+22444
2244%   $U+22444
2244%r   r!   c                    | j         }|j        }|j        j        }| j        }d|j        _        g |_        |                                  | |            d           dg|_        |                                  | |            d           d|j        _        ddg|_        |                                  | |            d           d S )NrW   z<Key-a>mymodz<mymod-Key-a>r;   testz<mymod-test>)r.   r   rA   r   rD   rE   return_valuebuild_key_stringr   mock_modifiersr.   keystringr   s         r   test_build_key_stringz&KeySelectionTest.test_build_key_string   s    $"&&(#!!!
6688Y'.i#!!!
6688_%%%'.&7#!!!
6688^$$$$$r   c                     | j         }|j        }|j        j        }| j        }dg|_        d|j        _        |                                  | |            d           d S )NrX   {z<Shift-Key-braceleft>)r.   r   rA   r   rD   r   rE   final_key_selectedr   s         r   test_final_key_selectedz(KeySelectionTest.test_final_key_selected   sh    $"&'.i#!!###
6688,-----r   N)r   r   r   rl   r   rm   r   rn   r1   r8   r>   r   r   patchobjectr   r   r   r   r   r   r      s        ))         
'       9 9 [9   [$ $ $   
Zz.@@% % A@%( 
Zz.@@	. 	. A@	. 	. 	.r   r   c                       e Zd ZdZed             Zed             Zej        	                    e
j        d          d             ZdS )CancelWindowTestz'Simulate user clicking [Cancel] button.c                     t          d           t                      | _        | j                                         t	          j        | j        ddg d          | _        d S Nr'   Titler+   T)_utestr   r   r,   r-   r   GetKeysWindowr.   r7   s    r   r1   zCancelWindowTest.setUpClass   V    44-Hgz2d< < <


r   c                     | j                                          | ` | j                                         | j                                         | `d S r3   r.   cancelr,   r5   r6   r7   s    r   r8   zCancelWindowTest.tearDownClass   L    
J!!###HHHr   rC   c                    |                      | j                                        d           | j        j                                         |                     t                    5  | j                                         d d d            n# 1 swxY w Y   |                      | j        j        d           |                                 d S )NToplevelr;   )	rD   r.   winfo_classbutton_cancelr   assertRaisesr   rE   assert_not_calledr   mock_frame_oks     r   test_cancelzCancelWindowTest.test_cancel  s    0022J???!((***x(( 	& 	&K##%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&+R000'')))))   &BBBN)r   r   r   rl   rn   r1   r8   r   r   r   r   rm   r   r   r   r   r   r      s        --< < [<   [ 
Zz.55* * 65* * *r   r   c                       e Zd ZdZed             Zed             Zej        	                    e
j        d          d             ZdS )OKWindowTestz#Simulate user clicking [OK] button.c                     t          d           t                      | _        | j                                         t	          j        | j        ddg d          | _        d S r   r   r7   s    r   r1   zOKWindowTest.setUpClass  r   r   c                     | j                                          | ` | j                                         | j                                         | `d S r3   r   r7   s    r   r8   zOKWindowTest.tearDownClass  r   r   rC   c                 Z   |                      | j                                        d           | j        j                                         |                     t                    5  | j                                         d d d            n# 1 swxY w Y   |                                 d S )Nr   )rD   r.   r   	button_okr   r   r   assert_calledr   s     r   test_okzOKWindowTest.test_ok   s    0022J???$$&&&x(( 	& 	&K##%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&##%%%%%r   N)r   r   r   rl   rn   r1   r8   r   r   r   r   rm   r   r   r   r   r   r     s        ))< < [<   [ 
Zz.55& & 65& & &r   r   c                   D    e Zd ZdZed             Zed             Zd ZdS )WindowResultTestzTest window result get and set.c                     t          d           t                      | _        | j                                         t	          j        | j        ddg d          | _        d S r   r   r7   s    r   r1   zWindowResultTest.setUpClass,  r   r   c                     | j                                          | ` | j                                         | j                                         | `d S r3   r   r7   s    r   r8   zWindowResultTest.tearDownClass4  r   r   c                 @   | j         }| j        }d|_         ||j        d            ||j        j        d           d|_         ||j        d            ||j        j        d           d|j        _         ||j        d            ||j        j        d           d S )Nr;   r   r   )r.   rD   rE   frame)r   r.   r   s      r   test_resultzWindowResultTest.test_result<  s    
6="
6<r"""
6=
6<u%%%#
6=%   
6<u%%%%%r   N)r   r   r   rl   rn   r1   r8   r   r   r   r   r   r   )  s]        %%< < [<   [& & & & &r   r   c                       e Zd ZdZd ZdS )
HelperTestz#Test module level helper functions.c                 p   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-qr\   AltrX   zKey-Q)r\   r   rX   zPage Upz	Key-Prior*zKey-asterisk)r   translate_keyrD   )r   trr   s      r   test_translate_keyzHelperTest.test_translate_keyP  s   % 	22c2;;   
22cIu%&&000 	22cG9w'''
22cIw'(('222
22c...//999 	22ik***
22cG9~.....r   N)r   r   r   rl   r   r   r   r   r   r   M  s)        ))/ / / / /r   r   __main__   )	verbosity)rl   idlelibr   test.supportr   unittestr   tkinterr   r   idlelib.idle_test.mock_idler   idlelib.idle_test.mock_tkr	   TestCaser   rp   r   r   r   r   r   r   mainr   r   r   <module>r      s          ! ! ! ! ! !                        , , , , , , / / / / / /SE SE SE SE SEX& SE SE SEl4, 4, 4, 4, 4,h' 4, 4, 4,nO. O. O. O. O.x( O. O. O.d* * * * *x( * * *:& & & & &8$ & & &8!& !& !& !& !&x( !& !& !&H/ / / / /" / / /, zHMA r   