+
     Bi,                        R t ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RIHtH	t	 ^ RI
Ht ^ RIHt  ! R R	]P                  4      t ! R
 R]P                  4      t ! R R]P                  4      t ! R R]P                  4      t ! R R]P                  4      t ! R R]P                  4      t ! R R]P                  4      t]R8X  d   ]P.                  ! ^R7       R# R# )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                      a  ] tR t^t o Rt ! R R]P                  4      t]R 4       t	]R 4       t
R tR tR tR	 tR
 tR tR tR tR tR tRtV tR# )ValidationTestz.Test validation methods: ok, keys_ok, bind_ok.c                   N   a a ] tR t^t oV 3R lt]! 4       t]! 4       tRt	Vt
V ;t# )ValidationTest.Validatorc                H   < \         SV `  ! V/ VB   ! R  R4      pW0n        R# )c                   $    ] tR t^t]! 4       tRtR# ):ValidationTest.Validator.__init__.<locals>.list_keys_final N)__name__
__module____qualname____firstlineno__r   get__static_attributes__r       8/usr/lib/python3.14/idlelib/idle_test/test_config_key.pylist_keys_finalr      s	    fr   r   Nsuper__init__r   selfargskwargsr   	__class__s   &*, r   r   !ValidationTest.Validator.__init__   s%    Gd-f- #2 r   )r   )r   r   r   r   r   r   get_modifiersr   	showerrorr   __classdictcell____classcell__r!   __classdict__s   @@r   	Validatorr      s     	3
 K		r   r)   c                    \        R 4       \        4       V n        V P                  P                  4        R.RR..pV P	                  V P                  RV4      V n        R# )gui	<Key-F12><Control-Key-x><Control-Key-X><<Test>>N)r   r   rootwithdrawr)   dialog)clskeylists   & r   
setUpClassValidationTest.setUpClass   sM    4=#46G"HI]]388ZA
r   c                v    V = V P                  P                  4        V P                  P                  4        V =R # Nr2   r0   update_idletasksdestroyr3   s   &r   tearDownClassValidationTest.tearDownClass%   ,    J!!#Hr   c                <    R V P                   P                  n        R# ) N)r2   r$   messager   s   &r   setUpValidationTest.setUp,   s    (*%r   c                0   V P                   P                  P                  R 4       V P                   P                  4        V P	                  V P                   P
                  R4       V P	                  V P                   P                  P                  R4       R# ) rA   zNo key specified.N)r2   
key_stringsetokassertEqualresultr$   rB   rC   s   &r   test_ok_emptyValidationTest.test_ok_empty1   sc    ""3'++R0..668KLr   c                z   V P                   P                  P                  R 4       RV P                   P                  P                  n        V P                   P                  4        V P                  V P                   P
                  R 4       V P                  V P                   P                  P                  R4       R# )	<Key-F11>F11rA   N)
r2   rH   rI   r   r   rL   rJ   rK   r$   rB   rC   s   &r   test_ok_goodValidationTest.test_ok_good7   sz    "";/16##''.++[9..66;r   c                    V P                  V P                  P                  R 4      4       V P                  RV P                  P                  P
                  4       R# )z<Control-ShiftzMissing the finalN)assertFalser2   keys_okassertInr$   rB   rC   s   &r   test_keys_no_ending"ValidationTest.test_keys_no_ending>   s?    ,,-=>?)4;;+@+@+H+HIr   c                   R V P                   P                  P                  n        V P	                  V P                   P                  R4      4       V P                  RV P                   P                  P                  4       R# )Az<Key-A>zNo modifierN)	r2   r   r   rL   rU   rV   rW   r$   rB   rC   s   &r   test_keys_no_modifier_bad(ValidationTest.test_keys_no_modifier_badB   sU    14##''.,,Y78mT[[%:%:%B%BCr   c                   R V P                   P                  P                  n        V P	                  V P                   P                  R4      4       V P                  V P                   P                  P                  R4       R# )rQ   rP   rA   N)	r2   r   r   rL   
assertTruerV   rK   r$   rB   rC   s   &r   test_keys_no_modifier_ok'ValidationTest.test_keys_no_modifier_okG   sU    16##''.++K89..66;r   c                r   R V P                   P                  P                  n        R.V P                   P                  n        V P                  V P                   P                  R4      4       V P                  RV P                   P                  P                  4       . V P                   P                  n        R# )aShiftz<a>zshift modifierN)
r2   r   r   rL   r#   rU   rV   rW   r$   rB   rC   s   &r   test_keys_shift_bad"ValidationTest.test_keys_shift_badL   s|    14##''.,39!!(,,U34&(=(=(E(EF+-!!(r   c                   . R R3R.RR3R.RR33 F  w  rpV P                  WVR7      ;_uu_ 4        W P                  P                  P                  n        WP                  P
                  n        V P                  V P                  P                  V4      4       V P                  RV P                  P                  P                  4       R	R	R	4       K  	  . V P                  P
                  n        R	#   + '       g   i     K  ; i)
F12r,   Controlxr-   Xr.   )mfszalready in useN)subTestr2   r   r   rL   r#   rU   rV   rW   r$   rB   )r   modsfinalseqs   &   r   test_keys_dupValidationTest.test_keys_dupS   s    "$e[!9#,+s4E!F#,+s4E!F!HD 559>++//637))0  !4!4S!9:.0E0E0M0MN	 65!H ,.!!( 655s   BC44Dc                    V P                  V P                  P                  R 4      4       V P                  V P                  P                  P
                  R4       R# )z<Control-Shift-Key-a>rA   N)r_   r2   bind_okrK   r$   rB   rC   s   &r   test_bind_okValidationTest.test_bind_ok^   s>    ++,CDE..66;r   c                    V P                  V P                  P                  R 4      4       V P                  RV P                  P                  P
                  4       R# )z<Control-Shift>znot acceptedN)rU   r2   rv   rW   r$   rB   rC   s   &r   test_bind_not_okValidationTest.test_bind_not_okb   s>    ,,->?@ndkk&;&;&C&CDr   r   N)r   r   r   r   __doc__r   GetKeysFramer)   classmethodr5   r=   rD   rM   rR   rX   r\   r`   re   rs   rw   rz   r   r%   r(   s   @r   r
   r
      s     4 J++   B B  +
M<JD
<
.	.<E Er   r
   c                   J   a  ] tR t^gt o Rt]R 4       t]R 4       tR tRt	V t
R# )ToggleLevelTestz.Test toggle between Basic and Advanced frames.c                    \        R 4       \        4       V n        V P                  P                  4        \        P
                  ! V P                  R. 4      V n        R# r+   r/   N)r   r   r0   r1   r   r}   r2   r<   s   &r   r5   ToggleLevelTest.setUpClassj   s<    4,,SXXz2F
r   c                v    V = V P                  P                  4        V P                  P                  4        V =R # r8   r9   r<   s   &r   r=   ToggleLevelTest.tearDownClassq   r?   r   c                  a V P                   oV3R  lpV P                  SP                  4       V P                  RSP                  R,          4       V! 4       w  r#V P                  W#4       SP                  4        V P                  SP                  4       V P                  RSP                  R,          4       V! 4       w  r#V P                  W24       SP                  P                  4        V P                  SP                  4       V P                  RSP                  R,          4       V! 4       w  r#V P                  W#4       R# )c                    < \        SP                  4       4       F-  w  rVP                  R8X  d   T pVP                  R8X  g   K+  T pK/  	  XX3# )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advancedr2   s       r   
stackorder5ToggleLevelTest.test_toggle_level.<locals>.stackorder{   sO     !*&*?*?*A B;;.0!E;;"33$H	 !C
 (?"r   AdvancedtextBasicN)	r2   rU   r   rW   button_levelassertGreatertoggle_levelr_   invoke)r   r   r   r   r2   s   &   @r   test_toggle_level!ToggleLevelTest.test_toggle_levelx   s    	# 	)j&"5"5f"=>$,5+ 	(gv226:;$,8+ 	""$)j&"5"5f"=>$,5+r   r   N)r   r   r   r   r|   r~   r5   r=   r   r   r%   r   s   @r   r   r   g   s:     4G G  #, #,r   r   c                   *  a  ] tR t^t o Rt ! R R]P                  4      t]R 4       t	]R 4       t
R tR t]P                  P                  ]P                  R4      R	 4       t]P                  P                  ]P                  R4      R
 4       tRtV tR# )KeySelectionTestz#Test selecting key on Basic frames.c                   F   a a ] tR t^t oV 3R ltR t]! 4       tRtVt	V ;t
# )KeySelectionTest.Basicc                H   < \         SV `  ! V/ VB   ! R  R4      pW0n        R# )c                   @    ] tR t^t]! 4       t]! 4       t]! 4       tRtR# )8KeySelectionTest.Basic.__init__.<locals>.list_keys_finalr   N)	r   r   r   r   r   r   select_clearyviewr   r   r   r   r   r      s    f#vr   r   Nr   r   s   &*, r   r   KeySelectionTest.Basic.__init__   s'    Gd-f-  $3 r   c                *    . ROV n         RR/V n        R# )fooBAZZZZN)r   barr   )	modifiersmodifier_labelrC   s   &r   set_modifiers_for_platform1KeySelectionTest.Basic.set_modifiers_for_platform   s    2DN#(%.Dr   )r   r   r   )r   r   r   r   r   r   r   r$   r   r%   r&   r'   s   @@r   r   r      s     	3	1 K		r   r   c                    \        R 4       \        4       V n        V P                  P                  4        V P	                  V P                  R. 4      V n        R# r   )r   r   r0   r1   r   r2   r<   s   &r   r5   KeySelectionTest.setUpClass   s:    4YYsxxR8
r   c                v    V = V P                  P                  4        V P                  P                  4        V =R # r8   r9   r<   s   &r   r=   KeySelectionTest.tearDownClass   r?   r   c                :    V P                   P                  4        R # r8   )r2   clear_key_seqrC   s   &r   rD   KeySelectionTest.setUp   s    !!#r   c                p   V P                   pVP                  pV P                  pVP                  R ,          P	                  4        V! V! 4       R .4       VP                  R,          P	                  4        V! V! 4       R R.4       VP                  R ,          P	                  4        V! V! 4       R.4       R# )r   r   N)r2   r#   rK   modifier_checkbuttonsr   )r   r2   gmeqs   &   r   test_get_modifiers#KeySelectionTest.test_get_modifiers   s    !! 	$$U+224
24%$$U+224
24% $$U+224
24%r   r#   c                   V P                   pVP                  pVP                  P                  pV P                  pR VP                  n        . Vn        VP                  4        V! V! 4       R4       R.Vn        VP                  4        V! V! 4       R4       RVP                  n        RR.Vn        VP                  4        V! V! 4       R4       R# )rc   z<Key-a>mymodz<mymod-Key-a>rA   testz<mymod-test>N)r2   r   rH   r   rK   rL   return_valuebuild_key_stringr   mock_modifiersr2   keystringr   s   &&    r   test_build_key_string&KeySelectionTest.test_build_key_string   s    $$""&&&(#!
68Y'.i#!
68_%'.&7#!
68^$r   c                    V P                   pVP                  pVP                  P                  pV P                  pR .Vn        RVP                  n        VP                  4        V! V! 4       R4       R# )rd   {z<Shift-Key-braceleft>N)r2   r   rH   r   rK   r   rL   final_key_selectedr   s   &&    r   test_final_key_selected(KeySelectionTest.test_final_key_selected   s`    $$""&&'.i#!!#
68,-r   r   N)r   r   r   r   r|   r   r}   r   r~   r5   r=   rD   r   r   patchobjectr   r   r   r%   r   s   @r   r   r      s     ) 
''   9 9  $ 
ZZz..@% A%( 
ZZz..@	. A	.r   r   c                      a  ] tR t^t o Rt]R 4       t]R 4       t]P                  P                  ]P                  R4      R 4       tRtV tR# )CancelWindowTestz'Simulate user clicking [Cancel] button.c                    \        R 4       \        4       V n        V P                  P                  4        \        P
                  ! V P                  RR. RR7      V n        R# r+   Titler/   T)_utestNr   r   r0   r1   r   GetKeysWindowr2   r<   s   &r   r5   CancelWindowTest.setUpClass   C    4--HHgz2d<
r   c                    V P                   P                  4        V = V P                  P                  4        V P                  P	                  4        V =R # r8   r2   cancelr0   r:   r;   r<   s   &r   r=   CancelWindowTest.tearDownClass   <    

J!!#Hr   rJ   c                   V P                  V P                  P                  4       R 4       V P                  P                  P	                  4        V P                  \        4      ;_uu_ 4        V P                  P                  4        RRR4       V P                  V P                  P                  R4       VP                  4        R#   + '       g   i     LH; i)ToplevelNrA   )	rK   r2   winfo_classbutton_cancelr   assertRaisesr   rL   assert_not_calledr   mock_frame_oks   &&r   test_cancelCancelWindowTest.test_cancel  s    002J?!!((*x((KK##% )++R0'') )(s   ,CC	r   N)r   r   r   r   r|   r~   r5   r=   r   r   r   r   r}   r   r   r%   r   s   @r   r   r      sY     -< <   
ZZz..5* 6*r   r   c                      a  ] tR tRt o Rt]R 4       t]R 4       t]P                  P                  ]P                  R4      R 4       tRtV tR# )	OKWindowTesti  z#Simulate user clicking [OK] button.c                    \        R 4       \        4       V n        V P                  P                  4        \        P
                  ! V P                  RR. RR7      V n        R# r   r   r<   s   &r   r5   OKWindowTest.setUpClass  r   r   c                    V P                   P                  4        V = V P                  P                  4        V P                  P	                  4        V =R # r8   r   r<   s   &r   r=   OKWindowTest.tearDownClass  r   r   rJ   c                h   V P                  V P                  P                  4       R 4       V P                  P                  P	                  4        V P                  \        4      ;_uu_ 4        V P                  P                  4        RRR4       VP                  4        R#   + '       g   i     L"; i)r   N)rK   r2   r   	button_okr   r   r   assert_calledr   s   &&r   test_okOKWindowTest.test_ok   sp    002J?$$&x((KK##% )##% )(s   ,B!!B1	r   N)r   r   r   r   r|   r~   r5   r=   r   r   r   r   r}   r   r   r%   r   s   @r   r   r     sY     )< <   
ZZz..5& 6&r   r   c                   J   a  ] tR tRt o Rt]R 4       t]R 4       tR tRt	V t
R# )WindowResultTesti)  zTest window result get and set.c                    \        R 4       \        4       V n        V P                  P                  4        \        P
                  ! V P                  RR. RR7      V n        R# r   r   r<   s   &r   r5   WindowResultTest.setUpClass,  r   r   c                    V P                   P                  4        V = V P                  P                  4        V P                  P	                  4        V =R # r8   r   r<   s   &r   r=   WindowResultTest.tearDownClass4  r   r   c                   V P                   pV P                  pR Vn        V! VP                  R 4       V! VP                  P                  R 4       RVn        V! VP                  R4       V! VP                  P                  R4       RVP                  n        V! VP                  R4       V! VP                  P                  R4       R# )rA   r   r   N)r2   rK   rL   frame)r   r2   r   s   &  r   test_resultWindowResultTest.test_result<  s    
6=="
6<<r"
6==
6<<u%#
6==% 
6<<u%r   r   N)r   r   r   r   r|   r~   r5   r=   r   r   r%   r   s   @r   r   r   )  s8     %< <  & &r   r   c                   *   a  ] tR tRt o RtR tRtV tR# )
HelperTestiM  z#Test module level helper functions.c                .   \         P                  pV P                  pV! V! R . 4      R4       V! V! R RR.4      R4       V! V! R R.4      R4       V! V! R RR.4      R4       V! V! R . RO4      R4       V! V! R. 4      R4       V! V! RR.4      R	4       R
# )qzKey-qri   Altrd   zKey-QzPage Upz	Key-Prior*zKey-asteriskN)ri   r  rd   )r   translate_keyrK   )r   trr   s   &  r   test_translate_keyHelperTest.test_translate_keyP  s    %% 	2c2; 
2cIu%&0 	2cG9w'
2cIw'('2
2c./9 	2ik*
2cG9~.r   r   N)r   r   r   r   r|   r  r   r%   r   s   @r   r   r   M  s     )/ /r   r   __main__)	verbosity)r|   idlelibr   test.supportr   unittestr   tkinterr   r   idlelib.idle_test.mock_idler   idlelib.idle_test.mock_tkr   TestCaser
   r   r   r   r   r   r   r   mainr   r   r   <module>r     s     !     , /SEX&& SEl4,h'' 4,nO.x(( O.d*x(( *:&8$$ &8!&x(( !&H/"" /, zMMA r   