
    0hh=                         S r SSKrSSKrSSKrSSKrSSKrSSKJrJr  \R                  S:w  a  \R                  " S5      eSSKJr  \R                  r " S S\R                  5      r\S	:X  a  \R$                  " 5         gg)
zTests for WindowsConsoleIO
    N)	os_helperrequires_resourcewin32ztest only relevant on win32)write_inputc                   n   \ rS rSrS rS rS rS r\R                  " \
R                  " 5       SS S:*  S	5      S
 5       rS rS r\" S5      S 5       rS r\" S5      S 5       r\R                  " SS5      S 5       r\" S5      S 5       r\R                  " SS5      S 5       r\" S5      S 5       rSrg)WindowsConsoleIOTests   c                    U R                  [        [        [        R                  5      5        U R                  [        [        [        R                  5      5        U R                  [        [        [        R                  5      5        g )N)
assertTrue
issubclassConIOio	RawIOBaseassertFalseBufferedIOBase
TextIOBaseselfs    ?/opt/python-3.13.8/usr/lib/python3.13/test/test_winconsoleio.pytest_abcWindowsConsoleIOTests.test_abc   sM    
5",,78E2+<+<=>E2==9:    c                    U R                  [        S[        S5        [        R                  " 5        nUR                  5       nU R                  [        S[        U5        S S S 5         [        S5      nU R                  UR                  5       5        U R                  UR                  5       5        U R                  SUR                  5       5        UR                  5         UR                  5         U R                  [        5         [        S5          S S S 5        S S S 5         [        SS5      nU R                  UR                  5       5        U R                  UR                  5       5        U R                  SUR                  5       5        UR                  5         UR                  5         U R                  [        5         [        S5          S S S 5        S S S 5         [        SS5      nU R                  UR                  5       5        U R                  UR                  5       5        U R                  SUR                  5       5        UR                  5         UR                  5         g ! , (       d  f       GN= f! , (       d  f       GNs= f! , (       d  f       GN}= f! [         a     GNf = f! , (       d  f       N= f! , (       d  f       N= f! [         a     GNf = f! [         a     g f = f)	Nznegative file descriptorz&Cannot open (console|non-console file)r   F   w   )assertRaisesRegex
ValueErrorr   tempfileTemporaryFilefilenor   readabler   writableassertEqualcloseassertWarnsRuntimeWarning)r   tmpfilefdfs       r   test_open_fd"WindowsConsoleIOTests.test_open_fd   s   z&r	3 ##%!B "":8%E	 &	aA
 OOAJJL)QZZ\*Q
+GGIGGI!!.15\ " 2	aA
 QZZ\*OOAJJL)Q
+GGIGGI!!.15\ " 2
	aA
 QZZ\*OOAJJL)Q
+GGIGGI_ &%& "\ 21  		2 "\ 21  		  		s   -I.(J$ JJ J%K KJ5K#K( .
I= 
J	
J
J!$
J21J25
K	?K
K
K%$K%(
K54K5c                 $   U R                  [        [        [        R                  5        [        S5      nU R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        UR                  5         UR                  5         [        S5      nU R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        UR                  5         UR                  5         [        SS5      nU R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        UR                  5         UR                  5         [        R                  " 5       S S S:  a2  [        SSS	S
9nU R                  U[        5        UR                  5         g g )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_name$WindowsConsoleIOTests.test_open_nameM   s`   *eS^^<%L

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

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

%QXXZ(				   "2A&7Xtq1A!!!U+GGI 8r   c                      " S S[         5      nU" S5      nU   U R                  UR                  [        U5      5        S S S 5        U R                  UR                  [        U5      5        g ! , (       d  f       N4= f)Nc                       \ rS rSrSrg)>WindowsConsoleIOTests.test_subclass_repr.<locals>.TestSubclassl    N)__name__
__module____qualname____firstlineno____static_attributes__rF   r   r   TestSubclassrD   l   s    r   rL   r/   )r   assertInrG   repr)r   rL   r+   s      r   test_subclass_repr(WindowsConsoleIOTests.test_subclass_reprk   s\    	5 	 MM,//a9  	l++T!W5 Qs   &A..
A<Nr      r   z+test does not work on Windows 7 and earlierc                     [        SSSS9nU R                  U[        5        UR                  5         [        SSSS9nU R                  U[        5        UR                  5         g )Nz
\\.\conin$r5   r   r6   z//?/conout$wb)r=   r>   r   r&   r?   s     r   test_conin_conout_names-WindowsConsoleIOTests.test_conin_conout_namesu   sR     2a'		2a'		r   c                    [         R                  " 5       nU R                  [        R                  U5        [
        R                  R                  US5      n[        USSS9 nS[        R                  " 5       S S s=:  a  S:  a  O  OU R                  U[        5        OU R                  U[        5        S S S 5        g ! , (       d  f       g = f)Nr1   rT   r   r6   rQ   r2   r3   )r    mkdtemp
addCleanupr   rmtreeospathjoinr=   r9   r<   r>   r   assertNotIsInstance)r   	temp_pathconout_pathr+   s       r   test_conout_path&WindowsConsoleIOTests.test_conout_path   s    $$&		(()4ggll9i8+tq1Q--/3DnD%%a/((E2 211s   !AB>>
Cc                     [        SS5       nU R                  UR                  S5      S5        S S S 5        g ! , (       d  f       g = f)Nr1   r   r   r   )r   r%   writer?   s     r   test_write_empty_data+WindowsConsoleIOTests.test_write_empty_data   s2    9c"aQWWS\1- #""s	   "8
Aconsolec                    / n[        SS5       nS H  nS H  nUR                  X4-   5        [        S[        U5      5       Ht  nX4S U -   nUR                  US-   5        UR                  US-   5        U R	                  US9   U R                  UR                  U5      [        U5      5        S S S 5        Mv     M     M     U HE  nU R	                  US9   U R                  UR                  U5      [        U5      5        S S S 5        MG     S S S 5        g ! , (       d  f       M  = f! , (       d  f       Ms  = f! , (       d  f       g = f)	Nr1   r   )r   s   abcs	   §☃🐍s
   )s   §s   ☃s   🐍r      z   )data)r   appendrangelensubTestr%   rd   )r   	testcasesr+   abirk   s          r   
test_write WindowsConsoleIOTests.test_write   s   	9c"a KA$$QU+"1c!f- Ra5y!((5!((8!\\t\4 ,,QWWT]CFC 54 . K "\\t\,$$QWWT]CI> -, "! #" 54 -,# #"s<   A4D:+D.(D:+D(D:
D% D:(
D72D::
Ec                 &   [        SS5      n[        R                  n U[        l        [        UR                  R
                  US-   R                  SS5      5        [        5       nU[        l        U R                  XA5        g ! U[        l        f = f)Nr0   rz
	utf-16-lesurrogatepass)	r=   r9   stdinr   bufferrawencodeinputr%   )r   textrz   	old_stdinactuals        r   assertStdinRoundTrip*WindowsConsoleIOTests.assertStdinRoundTrip   su    Xs#II		"CI  &&{OD WF!CI& "CIs   AB Bc                 j    U R                  S5        U R                  S5        U R                  S5        g )Nabc123u   ϼўТλФЙu   A͏B ﬖ̳AA̝r   r   s    r   
test_input WindowsConsoleIOTests.test_input   s/     	!!(+!!.1!!"23r   Tz%Handling Non-BMP characters is brokenc                 &    U R                  S5        g )Nu   􀀀􏿿􏿽r   r   s    r   test_input_nonbmp'WindowsConsoleIOTests.test_input_nonbmp   s     	!!"BCr   c           	         SR                  S5      nSR                  S5      n[        SS5       H  n[        SSSS	9 n[        XA5        S
nUR	                  S5      (       d-  UR                  U5      nXV-  nUR	                  S5      (       d  M-  U R                  XRSR                  U5      5        S S S 5        M     g ! , (       d  f       M  = f)Nu   ϼўТλФЙ
rx   utf-8r      r0   r5   r   r6   r      
stdin.read({})r}   rm   r=   r   endswithreadr%   formatr   sourceexpected
read_countrz   r   rr   s          r   test_partial_reads(WindowsConsoleIOTests.test_partial_reads   s     $**;7%,,W52,Jh2eE* //%00

:.AKF !//%00   3C3J3J:3VW 32 '22   AB<!B<<
C	c           	         SR                  S5      nSR                  S5      n[        SS5       H  n[        SSSS	9 n[        XA5        S
nUR	                  S5      (       d-  UR                  U5      nXV-  nUR	                  S5      (       d  M-  U R                  XRSR                  U5      5        S S S 5        M     g ! , (       d  f       M  = f)Nu
   􁿿􁀁
rx   r   r   r   r0   r5   r   r6   r   r   r   r   r   s          r   test_partial_surrogate_reads2WindowsConsoleIOTests.test_partial_surrogate_reads   s    
 ,22;?-44W=2,Jh2eE* //%00

:.AKF !//%00   3C3J3J:3VW 32 '22r   c                 <   [        SSSS9 nSR                  S5      nSR                  S5      n[        X5        UR                  S	5      UR	                  5       pTU R                  USS	 U5        U R                  US	S  U5        S S S 5        g ! , (       d  f       g = f)
Nr0   r5   r   r6   u   Ä
rx      Är   r   )r=   r}   r   r   readallr%   )r   rz   r   r   rq   rr   s         r   test_ctrl_z!WindowsConsoleIOTests.test_ctrl_z   s    (DA.%#**;7F}}W-H&::a=%--/qXa]A.Xab\1- /..s   A8B
BrF   )rG   rH   rI   rJ   r   r,   r@   rO   unittestskipIfr9   r<   rU   ra   re   r   rt   r   r   r   r   r   r   rK   rF   r   r   r   r      s	   ;
3j<6 __S**,Ra0F:5773. y!? "?,' y!4 "4 __TBCD DD y!X "X" __TBCX DX" y!. ".r   r   __main__)__doc__r   r[   r9   r    r   test.supportr   r   platformSkipTest_testconsoler   _WindowsConsoleIOr   TestCaser   rG   mainrF   r   r   <module>r      sw    
 	 
   5<<7


9
:: $
_.H-- _.B zMMO r   