o
    ge                     @   s   	 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 ejdkr%edd dl	m
Z
 e jZG dd dejZedkrAe  dS dS )	    N)	os_helperwin32ztest only relevant on win32)write_inputc                   @   s   e Zd Zdd Zdd Zdd Zee	 dd d	kd
dd Z
dd Zdd Zdd Zdd Zedddd Zdd Zedddd Zdd ZdS )WindowsConsoleIOTestsc                 C   s:   |  tttj | tttj | tttj d S )N)
assertTrue
issubclassConIOio	RawIOBaseassertFalseBufferedIOBase
TextIOBaseself r   L/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_winconsoleio.pytest_abc   s   zWindowsConsoleIOTests.test_abcc                 C   sn  |  tdtd t }| }|  tdt| W d    n1 s#w   Y  ztd}W n	 ty7   Y nw | |  | |	  | 
d|  |  |  ztdd}W n	 tyf   Y nw | |  | |	  | 
d|  |  |  ztdd}W n
 ty   Y d S w | |  | |	  | 
d|  |  |  d S )Nznegative file descriptorz&Cannot open (console|non-console file)r      w   )ZassertRaisesRegex
ValueErrorr   tempfileTemporaryFilefilenor   readabler   writableassertEqualclose)r   Ztmpfilefdfr   r   r   test_open_fd   sN   
z"WindowsConsoleIOTests.test_open_fdc                 C   s   |  tttj td}| |  | |  | 	|
  |  |  td}| |  | |  | 	|
  |  |  tdd}| |  | |  | 	|
  |  |  tdddd}| |t |  d S )	NCONCONIN$CONOUT$r   zC:/conrbr   	buffering)ZassertRaisesr   r   sys
executabler   r   r   r   ZassertIsNotNoner   r   openassertIsInstancer   r    r   r   r   test_open_nameG   s,   
z$WindowsConsoleIOTests.test_open_nameNr      r   z+test does not work on Windows 7 and earlierc                 C   sH   t dddd}| |t |  t dddd}| |t |  d S )Nz
\\.\conin$r%   r   r&   z//?/conout$wb)r*   r+   r   r   r,   r   r   r   test_conin_conout_namesc   s   z-WindowsConsoleIOTests.test_conin_conout_namesc                 C   s   t  }| tj| tj|d}t|ddd(}t	
 d d dkr+| |t n| |t W d    d S W d    d S 1 sDw   Y  d S )Nr$   r0   r   r&   r   r.   )r   mkdtempZ
addCleanupr   rmtreeospathjoinr*   r(   getwindowsversionr+   r   ZassertNotIsInstance)r   Z	temp_pathZconout_pathr    r   r   r   test_conout_pathn   s   "z&WindowsConsoleIOTests.test_conout_pathc                 C   sB   t dd}| |dd W d    d S 1 sw   Y  d S )Nr$   r       r   )r   r   writer,   r   r   r   test_write_empty_dataz   s   "z+WindowsConsoleIOTests.test_write_empty_datac                 C   sZ   t dd}tj}z|t_t|jj|d dd t }W |t_n|t_w | || d S )Nr#   rz
	utf-16-lesurrogatepass)	r*   r(   stdinr   bufferrawencodeinputr   )r   textr?   Z	old_stdinactualr   r   r   assertStdinRoundTrip~   s   
z*WindowsConsoleIOTests.assertStdinRoundTripc                 C   s"   |  d |  d |  d d S )NZabc123u   ϼўТλФЙu   A͏B ﬖ̳AA̝rF   r   r   r   r   
test_input   s   

z WindowsConsoleIOTests.test_inputTz%Handling Non-BMP characters is brokenc                 C   s   |  d d S )Nu   􀀀􏿿􏿽rG   r   r   r   r   test_input_nonbmp   s   z'WindowsConsoleIOTests.test_input_nonbmpc              	   C      d d}d d}tddD ]=}tdddd	,}t|| d
}|ds3||}||7 }|dr%| ||d| W d    q1 sGw   Y  qd S )Nu   ϼўТλФЙ
r=   utf-8r      r#   r%   r   r&   r9      
stdin.read({})rB   ranger*   r   endswithreadr   formatr   sourceexpectedZ
read_countr?   rE   br   r   r   test_partial_reads   s   





z(WindowsConsoleIOTests.test_partial_readsc              	   C   rJ   )Nu
   􁿿􁀁
r=   rK   r   rL   r#   r%   r   r&   r9   rM   rN   rO   rT   r   r   r   test_partial_surrogate_reads   s   





z2WindowsConsoleIOTests.test_partial_surrogate_readsc                 C   s   t dddd6}dd}dd}t|| |d	| }}| |dd	 | | |d	d  | W d    d S 1 s@w   Y  d S )
Nr#   r%   r   r&   u   Ä
r=      ÄrK   r   )r*   rB   r   rR   readallr   )r   r?   rU   rV   arW   r   r   r   test_ctrl_z   s   


"z!WindowsConsoleIOTests.test_ctrl_z)__name__
__module____qualname__r   r!   r-   unittestZskipIfr(   r7   r1   r8   r;   rF   rH   rI   rX   rY   r]   r   r   r   r   r      s$    /
	
	


r   __main__)r	   r4   r(   r   ra   Ztest.supportr   platformZSkipTestZ_testconsoler   Z_WindowsConsoleIOr   ZTestCaser   r^   mainr   r   r   r   <module>   s     

 5