
    daf                         d Z 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)
zTests for WindowsConsoleIO
    N)	os_helperrequires_resourcewin32ztest only relevant on win32)write_inputc                   D   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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    1/root/Python-3.12.4/Lib/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 ##% 	E!B "":8%E		E
	aA
 OOAJJL)QZZ\*Q
+GGIGGI
	aA
 QZZ\*OOAJJL)Q
+GGIGGI
	aA
 QZZ\*OOAJJL)Q
+GGIGGIS	E 	E  		  		  		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1 	3Q--/3DnD%%a/((E2	3 	3 	3s   #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}   s;    9c" 	.aQWWS\1-	. 	. 	.s	   "8A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   textrS   	old_stdinactuals        r   assertStdinRoundTripz*WindowsConsoleIOTests.assertStdinRoundTrip   sw    Xs#II		"CI  &&{OD WF!CI& "CIs   AB Bconsolec                 j    | j                  d       | j                  d       | j                  d       y )Nabc123u   ϼўТλФЙu   A͏B ﬖ̳AA̝r[   r   s    r   
test_inputz WindowsConsoleIOTests.test_input   s/     	!!(+!!.1!!"23r   Tz%Handling Non-BMP characters is brokenc                 &    | j                  d       y )Nu   􀀀􏿿􏿽r_   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   ϼўТλФЙ
rQ   utf-8r      r+   r0   r   r1   r      
stdin.read({})rV   ranger8   r   endswithreadr#   formatr   sourceexpected
read_countrS   rZ   bs          r   test_partial_readsz(WindowsConsoleIOTests.test_partial_reads   s     $**;7%,,W52, 		XJh2 XeE6* //%0

:.AaKF !//%0   3C3J3J:3VWX X		XX X    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
   􁿿􁀁
rQ   rd   r   re   r+   r0   r   r1   r   rf   rg   rh   rm   s          r   test_partial_surrogate_readsz2WindowsConsoleIOTests.test_partial_surrogate_reads   s    
 ,22;?-44W=2, 		XJh2 XeE6* //%0

:.AaKF !//%0   3C3J3J:3VWX X		XX Xrs   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   Ä
rQ      Ärd   r   )r8   rV   r   rk   readallr#   )r   rS   rn   ro   arq   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   r`   rb   rr   ru   rz    r   r   r   r      s    ;
-^< X__*S**,Ra0F:5773.' y!4 "4 X__TBCD DD y!X "X" X__TBCX DX" y!. ".r   r   __main__)__doc__r   rE   r4   r   r~   test.supportr   r   platformSkipTest_testconsoler   _WindowsConsoleIOr   TestCaser   r{   mainr   r   r   <module>r      s{    
 	 
   5<<7
(

9
:: $
x.H-- x.t zHMMO r   