
    4hhM/                         S SK r S SKrS SKrS SKJr  S SKJr  SSKJrJ	r	  SSKJ
r
Jr  SSKJrJr  S SKJr  S S	KJr   " S
 S\
\5      rg)    N)TestCase)	MagicMock   )handle_all_eventshandle_events_narrow_console)ScreenEqualMixincode_to_events)prepare_readerprepare_console)Event)Readerc                       \ 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S 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)
TestReader   c                 ^    [        S5      n[        U5      u  p#U R                  US S35        g )N
aaaaaaaaaa	aaaaaaaaa\
ar	   r   assert_screen_equalselfeventsreader_s       E/opt/python-3.13.8/usr/lib/python3.13/test/test_pyrepl/test_reader.pytest_calc_screen_wrap_simple'TestReader.test_calc_screen_wrap_simple   s.    )08	  E7%9    c                 ^    [        S5      n[        U5      u  p#U R                  US S35        g )Nu   aaaaaaaa樂aaaaaaaau   \
樂r   r   s       r   %test_calc_screen_wrap_wide_characters0TestReader.test_calc_screen_wrap_wide_characters   s/    008	  E7'):;r   c                 d    [        S5      n[        U5      u  p#U R                  US SS S35        g )Naaaaaaaaaaaaaaaaaaaar   z\
z\
aar   r   s       r   !test_calc_screen_wrap_three_lines,TestReader.test_calc_screen_wrap_three_lines   s5    )08	  E7$ugV)DEr   c                 \    S n[        S5      n[        UUS9u  p4U R                  US5        g )Nc                  t    [        U 0 UD6nU?SUl        SUl        SUl        SUl        SUl        SUl        U$ )N>>> z...  F)r
   
get_promptps1ps2ps3ps4can_colorize
paste_mode)argskwargsr   s      r   prepare_reader_keep_promptsPTestReader.test_calc_screen_prompt_handling.<locals>.prepare_reader_keep_prompts   sH    #T4V4F!FJFJFJFJ"'F %FMr   z"if some_condition:
some_function()r
   z6>>> if so\
me_condit\
ion:
...     s\
ome_funct\
ion()r   )r   r5   r   r   r   s        r    test_calc_screen_prompt_handling+TestReader.test_calc_screen_prompt_handling   s>    		   EF06
	
 	  
	
r   c                 t    SS SS 3n[        U5      n[        U5      u  p4U R                  USS SS S3S	S
9  g )Nzdef f():
  r!   z
  u   樂樂樂樂樂aaaaaaaz\
a
  u	   樂樂樂u   \
樂樂Tcleanr   r   coder   r   r   s        r   1test_calc_screen_wrap_three_lines_mixed_character<TestReader.test_calc_screen_wrap_three_lines_mixed_character=   ss    w y 	  %08	 	  7 9   	! 
	
r   c           
          [         R                  " [        S5      [        SS[	        S5      S9/5      n[        U5      u  p#U R                  US5        g )Naaakey	backspace   evtdatarawaa)	itertoolschainr	   r   	bytearrayr   r   r   s       r   test_calc_screen_backspace%TestReader.test_calc_screen_backspaceW   sL    5!%ky7IJ
 &f-	  .r   c           
          [         R                  " [        S5      [        SS[	        S5      S9/5      n[        U5      u  p#U R                  US5        g )Nr   rD   rE   rF   rG   r   rL   rM   r	   r   rN   r   r   r   s       r   -test_calc_screen_wrap_removes_after_backspace8TestReader.test_calc_screen_wrap_removes_after_backspacea   sL    8$%ky7IJ
 18	  1r   c           
          [         R                  " [        S5      [        SS[	        S5      S9/5      n[        U5      u  p#U R                  US S35        g )NaaaaaaaaaaarD   rE   rF   rG   r   r   rR   r   s       r   4test_calc_screen_backspace_in_second_line_after_wrap?TestReader.test_calc_screen_backspace_in_second_line_after_wrapk   sR    8$%ky7IJ
 18	  E7%9r   c                     [        S5      n[        U5      u  p#UR                  SS5        U R                  UR                  S5        g )Nz11+11r   r	   r   setpos_from_xyassertEqualposr   s       r   test_setpos_for_xy_simple$TestReader.test_setpos_for_xy_simpleu   s<    (%f-	a#Q'r   c                 Z    Sn[        U5      n[        U5      u  p4U R                  USSS9  g )Nu   flag = "🏳️‍🌈"u   flag = "🏳️\u200d🌈"Tr<   )r	   r   r   r>   s        r   test_control_characters"TestReader.test_control_characters{   s3    (%%f-	  )Fd Sr   c                     Sn[        U5      n[        U5      u  p4UR                  SS5        U R                  UR                  S5        g )Nzdef foo():
  return 1   r      rZ   r>   s        r   "test_setpos_from_xy_multiple_lines-TestReader.test_setpos_from_xy_multiple_lines   sH     	  %%f-	a#R(r   c                     Sn[        U5      n[        U5      u  p4UR                  SS5        U R                  UR                  S5        g )Ndef foo():
  hellord   re   r	   r   r[   r\   r]   r>   s        r   test_setpos_from_xy_after_wrap)TestReader.test_setpos_from_xy_after_wrap   sH     	  %08	a#R(r   c                     Sn[        U5      n[        U5      u  p4UR                  SS5        U R                  UR                  S5        g )Nri   r   r   	   rj   r>   s        r   "test_setpos_fromxy_in_wrapped_line-TestReader.test_setpos_fromxy_in_wrapped_line   sH     	  %08	a#Q'r   c           
          [        [        SS[        S5      S9[        SS[        S5      S9/5      n[        U5      u  p#U R	                  US5        g )NrD      rG   up   OAr+   )iterr   rN   r   r   r   s       r   test_up_arrow_after_ctrl_r%TestReader.test_up_arrow_after_ctrl_r   sQ    %f)G2DE%d	)0DE
 &f-	  ,r   c                 @   Sn[         R                  " [        U5      [        SS[	        S5      S9[        SS[	        S5      S9[        SS[	        S5      S9[        SS[	        S	5      S9[        SS[	        S	5      S9[        SS
[	        S5      S9[        SS[	        S5      S9[        SS[	        S	5      S9[        SS[	        S	5      S9/	5      n[
        R                  " [        SS9n[        X#S9u  pESnU R                  XFSS9  U R                  UR                  5        g )Nzdef foo():
a = 1
rD   rt   ru   rG   s   O5
   
downs   OBF)r2   r7   z(def foo():
    
    
    a = 1
    
    Tr<   )rL   rM   r	   r   rN   	functoolspartialr
   r   r   
assertTruefinished)r   r?   r   no_paste_readerr   r   expecteds          r   -test_newline_within_block_trailing_whitespace8TestReader.test_newline_within_block_trailing_whitespace   s    	 4  %d	)0DE%d	)0DE%f)I2FG%d	%0@A%d	%0@A%f)I2FG%f)I2FG %d	%0@A%d	%0@A
( $++NuM%fM	 	 	   >(r   c                    ^ [        5       mU4S jn[        S5      n[        X!S9u  p4U R                  [	        TR
                  5      S5        g )Nc                 f   > [        5       nXR                  l        SUl        SUl        TUl        U$ )Nd   P   )r   	get_eventside_effectheightwidth
input_hook)r   consoler   s     r   _prepare_consoleETestReader.test_input_hook_is_called_if_set.<locals>._prepare_console   s1    kG,2) GNGM!+GNr   a)r      )r   r	   r   r\   len
mock_calls)r   r   r   r   r   r   s        @r    test_input_hook_is_called_if_set+TestReader.test_input_hook_is_called_if_set   sB    [
	  $%fO	Z223Q7r   c                 N   S[         0nSn[         R                  " [        U5      [        SS[	        S5      S9[        SS[	        S5      S9[        SS[	        S5      S9/5      n[        U5      n[        U[        R                  " U5      R                  S	9n  UR                  5         M  ! [         ao    U R                  [        UR                  5      S:  5        UR!                  5         U R#                  [        UR                  5      S5        U R%                  XRS
S9   g f = f)NrL   zimport itertools
itertools.rD   	   	rG      readline_completerTrd   r<   )rL   rM   r	   r   rN   r   r
   rlcompleter	Completercompletehandle1failKeyboardInterruptr   r   screenrefreshr\   r   )r   	namespacer?   r   r   r   s         r   %test_keyboard_interrupt_clears_screen0TestReader.test_keyboard_interrupt_clears_screen   s    ),	-4  %d	%0@A%d	%0@A%f)G2DE	
 "&)*44Y?HH
	7     	?OOC.23NNS/3$$V$>	?s   B+ +A6D$#D$c                 l   Sn[         R                  " U5      u  p#U R                  X!5        U R                  US5        Sn[         R                  " U5      u  p#U R                  US5        U R                  US5        Sn[         R                  " U5      u  p#U R                  US5        U R                  US5        Sn[         R                  " U5      u  p#U R                  X!5        U R                  US5        Sn[         R                  " U5      u  p#U R                  US5        U R                  US5        g )	Nr*   r   z[0;32m>>> [0mz[0;32m>>> [0mu   樂>>    u   [0;32m樂>[0m> u   [0;32m樂>[0m> )r   process_promptr\   )r   r-   promptls       r   test_prompt_lengthTestReader.test_prompt_length  s   ))#.	%A &))#.	!89A 6))#.	!89A ))#.	%A 8))#.	!:;Ar   c                     S[         0nSn[         R                  " [        U5      [        SS[	        S5      S9[        SS[	        S5      S9/[        S5      5      n[
        R                  " [        [        R                  " U5      R                  S9n[        X4S	9u  pVUR                  nU R                  [        U5      S
5        U R                  US   U S35        U R                  US   R                  5       S5        g )NrL   
itertools.rD   r   r   rG   r   r   r7   rd   r   r   zitertools.accumulate()rL   rM   r	   r   rN   r~   r   r
   r   r   r   r   r   r\   r   rstrip)r   r   r?   r   completing_readerr   r   actuals           r   %test_completions_updated_on_key_press0TestReader.test_completions_updated_on_key_press-  s     ),	4  %d	%0@A%d	%0@A
 3
 &--*44Y?HH
 &fO	Va(tfAJ/))+-DEr   c           
      >   S[         0nSn[         R                  " [        U5      [        SS[	        S5      S9/[        S5      5      n[
        R                  " [        [        R                  " U5      R                  S9n[        X4S	9u  pVU R                  XR S35        g )
NrL   r   rD   r   r   rG   r   r   r7   )rL   rM   r	   r   rN   r~   r   r
   r   r   r   r   r   )r   r   r?   r   r   r   r   s          r    test_key_press_on_tab_press_once+TestReader.test_key_press_on_tab_press_onceE  s     ),	4 %d	%0@A 3
 &--*44Y?HH
 &fO	  64r   c                 ~    [        / 5      n[        U5      n/ Ul        U R                  UR	                  5       S5        g )N)r   r   )r   r
   
screeninfor\   pos2xy)r   r   r   s      r   test_pos2xy_with_no_columns&TestReader.test_pos2xy_with_no_columnsX  s4    !"%(&1r   c                     Sn[        U5      n[        U5      u  p4UR                  SS5        U R                  UR                  S5        g )Nu   # non ‌ printing character   r      rZ   r>   s        r   )test_setpos_from_xy_for_non_printing_char4TestReader.test_setpos_from_xy_for_non_printing_char_  sA    0%%f-	a#Q'r    N)__name__
__module____qualname____firstlineno__r   r"   r&   r8   r@   rO   rS   rW   r^   ra   rf   rk   ro   rw   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r   r      su    :
<
F

>
4/2:(T))(	-()T8 7B>F05&2(r   r   )rL   r~   r   unittestr   unittest.mockr   supportr   r   r   r	   r
   r   _pyrepl.consoler   _pyrepl.readerr   r   r   r   r   <module>r      s4        # D 5 4 ! !W(!8 W(r   