
    z%iG                         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 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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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    J/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/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$r/   r   r0   z//?/conout$wb)r7   r8   r   r#   r9   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   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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"   writer9   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)	r7   r3   stdinr   bufferrawencodeinputr"   )r   textrR   	old_stdinactuals        r   assertStdinRoundTripz*WindowsConsoleIOTests.assertStdinRoundTrip   sw    Xs#II		"CI  &&{OD WF!CI& "CIs   AB Bc                 j    | j                  d       | j                  d       | j                  d       y )Nabc123u   ϼўТλФЙu   A͏B ﬖ̳AA̝rZ   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   ϼўТλФЙ
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   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
   􁿿􁀁
rP   rb   r   rc   r*   r/   r   r0   r   rd   re   rf   rk   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rq   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*   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. 	.%#**;7F}}W-Hv&::a=%--/qAXa]A.Xab\1-	. 	. 	.s   A:BB)__name__
__module____qualname__r   r'   r:   unittestskipIfr3   r6   r?   rJ   rM   rZ   r^   r`   rp   rs   rx    r   r   r   r      s    ;
-^< X__*S**,Ra0F:5773.'4 X__TBCD DDX" X__TBCX DX".r   r   __main__)__doc__r   rD   r3   r   r|   test.supportr   platformSkipTest_testconsoler   _WindowsConsoleIOr   TestCaser   ry   mainr~   r   r   <module>r      s{    
 	 
   "<<7
(

9
:: $
u.H-- u.n zHMMO r   