
    7bhf                         	 d dl Z d dlZd dlZd dlZd dlZd dlmZmZ ej                  dk7  r ej                  d      d dl
mZ e j                  Z G d dej                        Zedk(  r ej"                          yy)	    N)	os_helperrequires_resourcewin32ztest only relevant on win32)write_inputc                   `   e Zd Zd Zd Zd Z ej                   ej                         dd dk  d      d        Z
d	 Zd
 Z ed      d        Zd Z ed      d        Z ej                  dd      d        Z ed      d        Z ej                  dd      d        Z ed      d        Zy)WindowsConsoleIOTestsc                    | j                  t        t        t        j                               | j                  t        t        t        j                               | j                  t        t        t        j                               y )N)
assertTrue
issubclassConIOio	RawIOBaseassertFalseBufferedIOBase
TextIOBaseselfs    @/opt/python-3.12.12/usr/lib/python3.12/test/test_winconsoleio.pytest_abczWindowsConsoleIOTests.test_abc   sM    
5",,78E2+<+<=>E2==9:    c                    | j                  t        dt        d       t        j                         5 }|j                         }| j                  t        dt        |       d d d        	 t        d      }| j                  |j                                | j                  |j                                | j                  d|j                                |j                          |j                          	 t        dd      }| j                  |j                                | j                  |j                                | j                  d|j                                |j                          |j                          	 t        dd      }| j                  |j                                | j                  |j                                | j                  d|j                                |j                          |j                          y # 1 sw Y   xY w# t        $ r Y 0w xY w# t        $ r Y w xY w# t        $ r Y y w xY w)Nznegative file descriptorz&Cannot open (console|non-console file)r      w   )assertRaisesRegex
ValueErrorr   tempfileTemporaryFilefilenor
   readabler   writableassertEqualclose)r   tmpfilefdfs       r   test_open_fdz"WindowsConsoleIOTests.test_open_fd   s   z&r	3 ##%!B "":8%E	 &
	aA
 OOAJJL)QZZ\*Q
+GGIGGI
	aA
 QZZ\*OOAJJL)Q
+GGIGGI
	aA
 QZZ\*OOAJJL)Q
+GGIGGIS &%  		  		  		sA   -H'H 1H$ <H3 H	H! H!$	H0/H03	H?>H?c                 &   | j                  t        t        t        j                         t        d      }| j                  |j                                | j                  |j                                | j                  |j                                |j                          |j                          t        d      }| j                  |j                                | j                  |j                                | j                  |j                                |j                          |j                          t        dd      }| j                  |j                                | j                  |j                                | j                  |j                                |j                          |j                          t        j                         d d dk  r5t        ddd	
      }| j                  |t               |j                          y y )NCONCONIN$CONOUT$r      
   r   iU  zC:/conrbr   	buffering)assertRaisesr   r   sys
executabler
   r!   r   r"   assertIsNotNoner    r$   getwindowsversionopenassertIsInstancer   r'   s     r   test_open_namez$WindowsConsoleIOTests.test_open_nameG   s`   *eS^^<%L

%&QXXZ(				(O

%&QXXZ(				)S!&

%QXXZ(				   "2A&7Xtq1A!!!U+GGI 8r   Nr      r   z+test does not work on Windows 7 and earlierc                     t        ddd      }| j                  |t               |j                          t        ddd      }| j                  |t               |j                          y )Nz
\\.\conin$r0   r   r1   z//?/conout$wb)r8   r9   r   r$   r:   s     r   test_conin_conout_namesz-WindowsConsoleIOTests.test_conin_conout_namese   sR     2a'		2a'		r   c                    t        j                         }| j                  t        j                  |       t
        j                  j                  |d      }t        |dd      5 }dt        j                         d d cxk  rdk  rn n| j                  |t               n| j                  |t               d d d        y # 1 sw Y   y xY w)Nr,   r?   r   r1   r<   r-   r.   )r   mkdtemp
addCleanupr   rmtreeospathjoinr8   r4   r7   r9   r   assertNotIsInstance)r   	temp_pathconout_pathr'   s       r   test_conout_pathz&WindowsConsoleIOTests.test_conout_pathp   s    $$&		(()4ggll9i8+tq1Q--/3DnD%%a/((E2 211s   #AB==Cc                     t        dd      5 }| j                  |j                  d      d       d d d        y # 1 sw Y   y xY w)Nr,   r   r   r   )r   r#   writer:   s     r   test_write_empty_dataz+WindowsConsoleIOTests.test_write_empty_data}   s2    9c"aQWWS\1- #""s	   "8Aconsolec                 v   g }t        dd      5 }dD ]  }dD ]  }|j                  ||z          t        dt        |            D ]w  }||d | z   }|j                  |dz          |j                  |dz          | j	                  |      5  | j                  |j                  |      t        |             d d d        y   |D ]G  }| j	                  |      5  | j                  |j                  |      t        |             d d d        I 	 d d d        y # 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   y xY w)	Nr,   r   )r   s   abcs	   §☃🐍s
   )s   §s   ☃s   🐍r      z   )data)r   appendrangelensubTestr#   rM   )r   	testcasesr'   abirS   s          r   
test_writez WindowsConsoleIOTests.test_write   s   	9c"a KA$$QU+"1c!f- 1Ra5y!((5!((8!\\t\4 ,,QWWT]CFC 54 . K "\\t\,$$QWWT]CI> -, "! #" 54 -,# #"s<   A9D/+D3%D/+D#
D/D D/#D,(D//D8c                 (   t        dd      }t        j                  }	 |t        _        t        |j                  j
                  |dz   j                  dd             t               }|t        _        | j                  ||       y # |t        _        w xY w)Nr+   rz
	utf-16-lesurrogatepass)	r8   r4   stdinr   bufferrawencodeinputr#   )r   textra   	old_stdinactuals        r   assertStdinRoundTripz*WindowsConsoleIOTests.assertStdinRoundTrip   sw    Xs#II		"CI  &&{OD WF!CI& "CIs   AB Bc                 j    | j                  d       | j                  d       | j                  d       y )Nabc123u   ϼўТλФЙu   A͏B ﬖ̳AA̝ri   r   s    r   
test_inputz WindowsConsoleIOTests.test_input   s/     	!!(+!!.1!!"23r   Tz%Handling Non-BMP characters is brokenc                 &    | j                  d       y )Nu   􀀀􏿿􏿽rl   r   s    r   test_input_nonbmpz'WindowsConsoleIOTests.test_input_nonbmp   s     	!!"BCr   c           	         dj                  d      }dj                  d      }t        dd      D ]  }t        ddd	      5 }t        ||       d
}|j	                  d      s(|j                  |      }||z  }|j	                  d      s(| j                  ||dj                  |             d d d         y # 1 sw Y   xY w)Nu   ϼўТλФЙ
r_   utf-8r      r+   r0   r   r1   r      
stdin.read({})rd   rU   r8   r   endswithreadr#   formatr   sourceexpected
read_countra   rh   rZ   s          r   test_partial_readsz(WindowsConsoleIOTests.test_partial_reads   s     $**;7%,,W52,Jh2eE6* //%0

:.AaKF !//%0   3C3J3J:3VW 32 '22    AB5"B55B>	c           	         dj                  d      }dj                  d      }t        dd      D ]  }t        ddd	      5 }t        ||       d
}|j	                  d      s(|j                  |      }||z  }|j	                  d      s(| j                  ||dj                  |             d d d         y # 1 sw Y   xY w)Nu
   􁿿􁀁
r_   rq   r   rr   r+   r0   r   r1   r   rs   rt   ru   ry   s          r   test_partial_surrogate_readsz2WindowsConsoleIOTests.test_partial_surrogate_reads   s    
 ,22;?-44W=2,Jh2eE6* //%0

:.AaKF !//%0   3C3J3J:3VW 32 '22r~   c                 <   t        ddd      5 }dj                  d      }dj                  d      }t        ||       |j                  d	      |j	                         }}| j                  |dd	 |       | j                  |d	d  |       d d d        y # 1 sw Y   y xY w)
Nr+   r0   r   r1   u   Ä
r_      Ärq   r   )r8   rd   r   rw   readallr#   )r   ra   rz   r{   rY   rZ   s         r   test_ctrl_zz!WindowsConsoleIOTests.test_ctrl_z   s    (DA.%#**;7F}}W-Hv&::a=%--/qAXa]A.Xab\1- /..s   A:BB)__name__
__module____qualname__r   r(   r;   unittestskipIfr4   r7   r@   rK   rN   r   r\   ri   rm   ro   r}   r   r    r   r   r   r      s   ;
-^< X__*S**,Ra0F:5773. y!? "?,' y!4 "4 X__TBCD DD y!X "X" X__TBCX DX" y!. ".r   r   __main__)r   rE   r4   r   r   test.supportr   r   platformSkipTest_testconsoler   _WindowsConsoleIOr   TestCaser   r   mainr   r   r   <module>r      s{    
 	 
   5<<7
(

9
:: $
O.H-- O.b zHMMO r   