
    6\h                         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k    r ej
        d          ddlmZ ej        Z G d dej                  Zed	k    r ej                     dS dS )
zTests for WindowsConsoleIO
    N)	os_helperrequires_resourcewin32ztest only relevant on win32)write_inputc                   x   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dS )WindowsConsoleIOTestsc                 2   |                      t          t          t          j                             |                     t          t          t          j                             |                     t          t          t          j                             d S )N)
assertTrue
issubclassConIOio	RawIOBaseassertFalseBufferedIOBase
TextIOBaseselfs    @/opt/python-3.11.14/usr/lib/python3.11/test/test_winconsoleio.pytest_abczWindowsConsoleIOTests.test_abc   sg    
5",77888E2+<==>>>E2=99:::::    c                    |                      t          dt          d           t          j                    5 }|                                }|                      t          dt          |           d d d            n# 1 swxY w Y   	 t          d          }|                     |                                           |                     |	                                           | 
                    d|                                           |                                 |                                 n# t          $ r Y nw xY w	 t          dd          }|                     |                                           |                     |	                                           | 
                    d|                                           |                                 |                                 n# t          $ r Y nw xY w	 t          dd          }|                     |                                           |                     |	                                           | 
                    d|                                           |                                 |                                 d S # t          $ r Y d S 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 	3 	3 #%% 	E!!B "":8%E E E		E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E
	aA
 OOAJJLL)))QZZ\\***Q

+++GGIIIGGIIII  	 	 	D	
	aA
 QZZ\\***OOAJJLL)))Q

+++GGIIIGGIIII  	 	 	D	
	aA
 QZZ\\***OOAJJLL)))Q

+++GGIIIGGIIIII  	 	 	DD	sG   7A99A= A=D3 3
E ?E G3 3
H ?H J4 4
KKc                 *   |                      t          t          t          j                   t          d          }|                     |                                           |                     |                                           | 	                    |
                                           |                                 |                                 t          d          }|                     |                                           |                     |                                           | 	                    |
                                           |                                 |                                 t          dd          }|                     |                                           |                     |                                           | 	                    |
                                           |                                 |                                 t          j                    d d         dk     rCt          ddd	
          }|                     |t                     |                                 d S d S )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^<<<%LL

%%%&&&QXXZZ(((								(OO

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

%%%QXXZZ(((								  ""2A2&77Xtq111A!!!U+++GGIIIII 87r   Nr      r   z+test does not work on Windows 7 and earlierc                 
   t          ddd          }|                     |t                     |                                 t          ddd          }|                     |t                     |                                 d S )Nz
\\.\conin$r0   r   r1   z//?/conout$wb)r8   r9   r   r$   r:   s     r   test_conin_conout_namesz-WindowsConsoleIOTests.test_conin_conout_namese   sv     222a'''				222a'''						r   c                    t          j                    }|                     t          j        |           t
          j                            |d          }t          |dd          5 }dt          j
                    d d         cxk     rdk     rn n|                     |t                     n|                     |t                     d d d            d S # 1 swxY w Y   d S )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44gll9i88+tq111 	3Q-//3DDDDnDDDDD%%a////((E222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   &A!CCCc                     t          dd          5 }|                     |                    d          d           d d d            d S # 1 swxY w Y   d S )Nr,   r   r   r   )r   r#   writer:   s     r   test_write_empty_dataz+WindowsConsoleIOTests.test_write_empty_data}   s    9c"" 	.aQWWS\\1---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   *AAAc                 >   t          dd          }t          j        }	 |t          _        t          |j        j        |dz                       dd                     t                      }|t          _        n# |t          _        w xY w|                     ||           d S )Nr+   rz
	utf-16-lesurrogatepass)	r8   r4   stdinr   bufferrawencodeinputr#   )r   textrS   	old_stdinactuals        r   assertStdinRoundTripz*WindowsConsoleIOTests.assertStdinRoundTrip   s    Xs##I		"CI &&{ODD   WWF!CII	CI!!!!&&&&&s   AA6 6Bconsolec                     |                      d           |                      d           |                      d           d S )Nabc123u   ϼўТλФЙu   A͏B ﬖ̳AA̝r[   r   s    r   
test_inputz WindowsConsoleIOTests.test_input   sG     	!!(+++!!.111!!"233333r   Tz%Handling Non-BMP characters is brokenc                 0    |                      d           d S )Nu   􀀀􏿿􏿽r_   r   s    r   test_input_nonbmpz'WindowsConsoleIOTests.test_input_nonbmp   s     	!!"BCCCCCr   c           	         d                     d          }d                     d          }t          dd          D ]}t          ddd	          5 }t          ||           d
}|                    d          s/|                    |          }||z  }|                    d          /|                     ||d                    |                     d d d            n# 1 swxY w Y   d S )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   sI    $**;77%,,W552,, 		X 		XJh222 XeE6*** //%00  

:..AaKF !//%00     3C3J3J:3V3VWWWX X X X X X X X X X X X X X X		X 		X   BCC 	#C 	c           	         d                     d          }d                     d          }t          dd          D ]}t          ddd	          5 }t          ||           d
}|                    d          s/|                    |          }||z  }|                    d          /|                     ||d                    |                     d d d            n# 1 swxY w Y   d S )Nu
   􁿿􁀁
rQ   rd   r   re   r+   r0   r   r1   r   rf   rg   rh   rm   s          r   test_partial_surrogate_readsz2WindowsConsoleIOTests.test_partial_surrogate_reads   sI   
 ,22;??-44W==2,, 		X 		XJh222 XeE6*** //%00  

:..AaKF !//%00     3C3J3J:3V3VWWWX X X X X X X X X X X X X X X		X 		Xrs   c                    t          ddd          5 }d                    d          }d                    d          }t          ||           |                    d	          |                                }}|                     |dd	         |           |                     |d	d          |           d d d            d S # 1 swxY w Y   d S )
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... 	.%#**;77F}}W--Hv&&&::a==%--//qAXac]A...Xabb\1---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   B C  CC)__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*,,RaR0F:57 7 7 73 3 3. . .' ' ' y!!4 4 "!4 X_TBCCD D DCD y!!X X "!X" X_TBCCX X DC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 5 5 5 5 5 5 5<7
(
9
:
:: $ $ $ $ $ $
x. x. x. x. x.H- x. x. x.t zHMOOOOO r   