
    4hh5                         S SK r S SKrS SKJrJrJrJrJr   " S S\R                  5      r	 " S S\R                  5      r
g)    N)	_keynames_escapes
parse_keyscompile_keymapKeySpecErrorc                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestParseKeys   c                 "   [         R                  [         R                  -    Vs/ s H  oU/4PM	     nnU H?  u  p4U R                  U SU 35         U R	                  [        U5      U5        SSS5        MA     gs  snf ! , (       d  f       MX  = f)zUEnsure that single ascii characters or single digits are parsed as single characters. should be parsed as N)stringascii_lettersdigitssubTestassertEqualr   )selfkey
test_casestest_keyexpected_keyss        E/opt/python-3.13.8/usr/lib/python3.13/test/test_pyrepl/test_keymap.pytest_single_character#TestParseKeys.test_single_character   s{    .4.B.BV]].RS.RsSEl.R
S'1#H
*?OP  H!5}E QP (2 TPPs   A:A??
B	c                    [         R                  " 5        VVs/ s H  u  pSU S3U/4PM     nnnU H?  u  pEU R                  U SU 35         U R                  [	        U5      U5        SSS5        MA     gs  snnf ! , (       d  f       MY  = f)zEnsure that keynames are parsed to their corresponding mapping.

A keyname is expected to be of the following form: \<keyname> such as \<left>
which would get parsed as "left".
z\<>r   N)r   itemsr   r   r   )r   keynameparsed_keynamer   r   r   s         r   test_keynamesTestParseKeys.test_keynames   s     [dZiZiZklZk?VwWIQ'.)9:Zk
l'1#H
*?OP  H!5}E QP (2 mPPs   A7A==
B	c                    [         R                  " 5        VVs/ s H  u  pSU 3U/4PM     nnnU H?  u  pEU R                  U SU 35         U R                  [	        U5      U5        SSS5        MA     gs  snnf ! , (       d  f       MY  = f)zIEnsure that escaping sequences are parsed to their corresponding mapping.\r   N)r   r   r   r   r   )r   escapeparsed_escaper   r   r   s         r   test_escape_sequences#TestParseKeys.test_escape_sequences   s    T\TbTbTdeTd;P6F8}}o6Td
e'1#H
*?OP  H!5}E QP (2 fPPs   A6A<<
B	c           	      Z   / SQnUR                  [        R                  5        S Vs/ s H  nSU 3[        [	        U5      S-  5      4PM!     nnU H?  u  pEU R                  U SU 35         U R                  [        U5      U5        SSS5        MA     gs  snf ! , (       d  f       MX  = f)z@Ensure that supported control sequences are parsed successfully.)@[]r"   ^_z\<space>z	\<delete> z\C-   r   N)extendr   r   chrordr   r   r   )r   keysr   r   r   r   s         r   test_control_sequences$TestParseKeys.test_control_sequences!   s    IF(()FHIbscU|SSD%9:b
I'1#H
*?OP  H!5}E QP (2 JPPs   &B-B
B*	c                     U R                  [        S5      SS/5        U R                  [        S5      SS/5        U R                  [        S5      SS/5        g )Nz\M-aaz\M-bbz\M-ccr   r   r   s    r   test_meta_sequences!TestParseKeys.test_meta_sequences*   sM    G,vsm<G,vsm<G,vsm<    c                 x    U R                  [        S5      / SQ5        U R                  [        S5      / SQ5        g )Nz\C-a\n\<up>)
upz\M-a\t\<down>)r6   r7   	downr:   r;   s    r   test_combinationsTestParseKeys.test_combinations/   s0    $457KL$679TUr>   c                 B   / SQnU Hr  u  p#U R                  U SU 35         U R                  [        5       n[        U5        S S S 5        U R	                  U[        WR                  5      5        S S S 5        Mt     g ! , (       d  f       N@= f! , (       d  f       M  = f)N)
)z\Ca\C must be followed by `-')z\carH   )z\C-\C-zdoubled \C-)z\Ma\M must be followed by `-')z\marI   )z\M-\M-zdoubled \M-)z\<leftzunterminated \<)z\<unsupported>zunrecognised keyname)u   \大zunknown backslash escape)z\C-\<backspace>z\C- followed by invalid keyz should give error )r   assertRaisesr   r   assertInstr	exception)r   cases	test_keysexpected_erres        r   test_keyspec_errors!TestParseKeys.test_keyspec_errors3   s~    
 (-#I+>|nMN&&|4y) 5lC,<= ON (-44 ONs"   BA>-B>
BB
B	c                     / SQnU H,  nU R                  [        5         [        U5        S S S 5        M.     g ! , (       d  f       M@  = f)N)r"   z\Cz\C-\C)rJ   
IndexErrorr   )r   r   rO   s      r   test_index_errorsTestParseKeys.test_index_errorsF   s6    -
#I"":.9% /. $..s	   8
A	r-   N)__name__
__module____qualname____firstlineno__r   r   r%   r3   r<   rE   rR   rV   __static_attributes__r-   r>   r   r	   r	      s/    F	FFF=
V>&&r>   r	   c                   J    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)TestCompileKeymapM   c                 B    0 n[        U5      nU R                  U0 5        g )Nr   r   r   keymapresults      r   test_empty_keymap#TestCompileKeymap.test_empty_keymapN   s!    '$r>   c                 J    SS0n[        U5      nU R                  USS05        g )N   aactionra   rb   s      r   test_single_keymap$TestCompileKeymap.test_single_keymapS   s+    !'$!12r>   c                 R    SSS00n[        U5      nU R                  USSS005        g )Nrh      bri   ra   rb   s      r   test_nested_keymap$TestCompileKeymap.test_nested_keymapX   s5    x()'$x(8!9:r>   c                 R    SSS00n[        U5      nU R                  USSS005        g )Nrh   r>   ri   ra   rb   s      r   test_empty_value"TestCompileKeymap.test_empty_value]   s3    h('$h!89r>   c                 V    SSSS.0n[        U5      nU R                  USSSS.05        g )Nrh   action1action2)r>   rm   ra   rb   s      r   test_multiple_empty_values,TestCompileKeymap.test_multiple_empty_valuesb   s5    iy9:'$iy(I!JKr>   c                 V    SSSS.0n[        U5      nU R                  USSSS.05        g )Nrh   rt   ru   )rm      cra   rb   s      r   test_multiple_keymaps'TestCompileKeymap.test_multiple_keymapsg   s5    y	:;'$y	(J!KLr>   c                 Z    SSSS000n[        U5      nU R                  USSSS0005        g )Nrh   rm   ry   ri   ra   rb   s      r   test_nested_multiple_keymaps.TestCompileKeymap.test_nested_multiple_keymapsl   s?    h/01'$h/?(@!ABr>   c                     SSS.nU R                  [        5         [        U5        S S S 5        g ! , (       d  f       g = f)Nr9   d)rh   s   ab)rJ   r   r   )r   kms     r   test_clashing_definitions+TestCompileKeymap.test_clashing_definitionsq   s.    c*|,2 -,,s   0
>c                 |    U R                  [        5         [        SS05        S S S 5        g ! , (       d  f       g = f)N{   r7   )rJ   	TypeErrorr   r;   s    r   test_non_bytes_key$TestCompileKeymap.test_non_bytes_keyv   s(    y)C:& *))s   -
;r-   N)rX   rY   rZ   r[   re   rj   rn   rq   rv   rz   r}   r   r   r\   r-   r>   r   r^   r^   M   s2    %
3
;
:
L
M
C

'r>   r^   )r   unittest_pyrepl.keymapr   r   r   r   r   TestCaser	   r^   r-   r>   r   <module>r      s8      X XC&H%% C&L+')) +'r>   