
    <eG                         	 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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 )	    N)	os_helper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d Zd Z ej        dd          d             Zd Z ej        dd          d             Z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    -/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$r/   r   r0   z//?/conout$wb)r7   r8   r   r#   r9   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   r0   r;   r,   r-   )r   mkdtemp
addCleanupr   rmtreeospathjoinr7   r3   r6   r8   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"   writer9   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)	r7   r3   stdinr   bufferrawencodeinputr"   )r   textrR   	old_stdinactuals        r   assertStdinRoundTripz*WindowsConsoleIOTests.assertStdinRoundTrip   s    Xs##I		"CI &&{ODD   WWF!CII	CI!!!!&&&&&s   AA6 6Bc                     |                      d           |                      d           |                      d           d S )Nabc123u   ϼўТλФЙu   A͏B ﬖ̳AA̝rZ   r   s    r   
test_inputz WindowsConsoleIOTests.test_input   sE    !!(+++!!.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   ϼўТλФЙ
rP   utf-8r      r*   r/   r   r0   r      
stdin.read({})rU   ranger7   r   endswithreadr"   formatr   sourceexpected
read_countrR   rY   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
   􁿿􁀁
rP   rb   r   rc   r*   r/   r   r0   r   rd   re   rf   rk   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rq   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*   r/   r   r0   u   Ä
rP      Ärb   r   )r7   rU   r   ri   readallr"   )r   rR   rl   rm   aro   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skipIfr3   r6   r?   rJ   rM   rZ   r^   r`   rp   rs   rx    r   r   r   r      sH       ; ; ;
- - -^  < X_*S*,,RaR0F:57 7 7 73 3 3. . .' ' '4 4 4 X_TBCCD D DCDX X X" X_TBCCX X DCX". . . . .r   r   __main__)r   rD   r3   r   r|   test.supportr   platformSkipTest_testconsoler   _WindowsConsoleIOr   TestCaser   ry   mainr~   r   r   <module>r      s    
			 				 



   " " " " " "<7
(
9
:
:: $ $ $ $ $ $
u. u. u. u. u.H- u. u. u.n zHMOOOOO r   