
    Yf                     >   d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dej        v Z	 ddlZdd	lmZ n# e$ r
 er dZdZY nw xY we& G d
 dej                  Z G d dej                  Z G d de          Z G d dej                  ZdS )z+
Tests for L{twisted.internet.serialport}.
    N)Protocol)	DoNothing)Failure)platform)unittestTWISTED_FORCE_SERIAL_TESTS)
serialportc                   *     e Zd Z fdZd Zd Z xZS )RegularFileSerialc                 V     t                      j        |i | || _        || _        d S N)super__init__captured_argscaptured_kwargs)selfargskwargs	__class__s      \/var/www/html/env/lib/python3.11/site-packages/twisted/internet/test/test_win32serialport.pyr   zRegularFileSerial.__init__$   s5    EGGd-f---!%D#)D       c                     d S r    r   s    r   _reconfigurePortz"RegularFileSerial._reconfigurePort)       Dr   c                     d S r   r   r   s    r   _reconfigure_portz#RegularFileSerial._reconfigure_port,   r   r   )__name__
__module____qualname__r   r   r   __classcell__r   s   @r   r   r   #   sV        	* 	* 	* 	* 	*
	 	 		 	 	 	 	 	 	r   r   c                   (     e Zd ZeZ fdZd Z xZS )RegularFileSerialPortc                     |                     d          }d|v r|d= t          j        j        | _        || j        _         t                      j        |i | d S )NcbInQue)getserialwin32COMSTATcomstatr'   r   r   )r   r   r   r'   r   s       r   r   zRegularFileSerialPort.__init__2   s_    jj++GF""9%!</DL#*DL EGGd-f-----r   c                     d| j         fS )NT)r,   r   s    r   _clearCommErrorz%RegularFileSerialPort._clearCommError=   s    %%r   )r   r    r!   r   _serialFactoryr   r.   r"   r#   s   @r   r%   r%   /   sL        *		. 		. 		. 		. 		.	& 	& 	& 	& 	& 	& 	&r   r%   c                       e Zd Zd Zd ZdS )CollectReceivedProtocolc                     g | _         d S r   )received_datar   s    r   r   z CollectReceivedProtocol.__init__B   s    r   c                 :    | j                             |           d S r   )r3   append)r   datas     r   dataReceivedz$CollectReceivedProtocol.dataReceivedE   s    !!$'''''r   N)r   r    r!   r   r7   r   r   r   r1   r1   A   s2             ( ( ( ( (r   r1   c                   ~    e Zd ZdZes ej                    sdZnesdZd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd Zd ZdS )Win32SerialPortTestszB
    Minimal testing for Twisted's Win32 serial port support.
    zThis test must run on Windows.z-Windows serial port support is not available.c                 `   t                      | _        t                      | _        t	          j                    | _        t          j        	                    | j        d          | _        d}t          | j        d          5 }|                    |           d d d            d S # 1 swxY w Y   d S )Nfake_serials   1234wb)r   protocolr   reactortempfilemkdtemp	directoryospathjoinopenwrite)r   r6   fs      r   setUpzWin32SerialPortTests.setUpU   s     

 {{!)++GLL??	$)T"" 	aGGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s    B##B'*B'c                 8    t          j        | j                   d S r   )shutilrmtreerA   r   s    r   tearDownzWin32SerialPortTests.tearDowna   s    dn%%%%%r   c                    t          | j        | j        | j                  }|                     | j        f|j        j                   |j        j        }|                     d|d                    |                     t          j	        |d                    |                     t          j
        |d                    |                     t          j        |d                    |                     d|d                    |                     d|d                    |                     d	|d
                    |                    t          t          d                               d	S )zx
        Test correct positional and keyword arguments have been
        passed to the C{serial.Serial} object.
        i%  baudratebytesizeparitystopbitsr   xonxoffrtsctsNtimeoutCleanup)r%   r=   rC   r>   assertEqual_serialr   r   r)   	EIGHTBITSPARITY_NONESTOPBITS_ONEconnectionLostr   	Exception)r   portr   s      r   test_serialPortDefaultArgsz/Win32SerialPortTests.test_serialPortDefaultArgsd   s4   
 %T]DIt|LL$)t|'ABBB-vj1222)6*+=>>>+VH-=>>>,fZ.@AAAF9-...F8,---vi0111GIi$8$899:::::r   c                    |                      d| j        j                   t          | j        | j        | j                  }|                      d|j                   |                      d| j        j                   |                      || j        j                   |                    t          t          d                               dS )z
        Test the port is connected at initialization time, and
        C{Protocol.makeConnection} has been called on the desired protocol.
        r      rU   N)
rV   r=   	connectedr%   rC   r>   	transportr[   r   r\   )r   r]   s     r   !test_serialPortInitiallyConnectedz6Win32SerialPortTests.test_serialPortInitiallyConnectedw   s    
 	DM3444$T]DIt|LLDN+++DM3444t}6777GIi$8$899:::::r   c                    t          | j        | j        | j        |          }|                                 |                    d           |                    d           |                    d           |                                 |                                 |                    t          t          d                               d S )Nr=   deviceNameOrPortNumberr>   r'   r   s   abcds   ABCDrU   )
r%   r=   rC   r>   serialReadEventrF   serialWriteEventr[   r   r\   )r   r'   r]   s      r   common_exerciseHandleAccessz0Win32SerialPortTests.common_exerciseHandleAccess   s    $]#'9L	
 
 
 	

3

7

7GIi$8$899:::::r   c                 2    |                      d           d S NFr'   ri   r   s    r   test_exerciseHandleAccess_1z0Win32SerialPortTests.test_exerciseHandleAccess_1   s    (((77777r   c                 2    |                      d           d S NTrl   rm   r   s    r   test_exerciseHandleAccess_2z0Win32SerialPortTests.test_exerciseHandleAccess_2   s    (((66666r   c                 D   t                      }t          || j        | j        |          }|                                 |                     t          d |j        D                                  |                    t          t          d                               d S )Nre   c              3   @   K   | ]}t          |t                    V  d S r   )
isinstancebytes).0ds     r   	<genexpr>zEWin32SerialPortTests.common_serialPortReturnsBytes.<locals>.<genexpr>   s,      QQQJq%00QQQQQQr   rU   )r1   r%   rC   r>   rg   
assertTrueallr3   r[   r   r\   )r   r'   r=   r]   s       r   common_serialPortReturnsBytesz2Win32SerialPortTests.common_serialPortReturnsBytes   s    *,,$#'9L	
 
 
 	QQ(:PQQQQQRRRGIi$8$899:::::r   c                 2    |                      d           d S rk   r{   r   s    r   test_serialPortReturnsBytes_1z2Win32SerialPortTests.test_serialPortReturnsBytes_1   s    **5*99999r   c                 2    |                      d           d S rp   r}   r   s    r   test_serialPortReturnsBytes_2z2Win32SerialPortTests.test_serialPortReturnsBytes_2   s    **4*88888r   N)r   r    r!   __doc__testingForcedr   	isWindowsskipr	   rH   rL   r^   rc   ri   rn   rq   r{   r~   r   r   r   r   r9   r9   I   s           C!x!## 	C3DD 	CBD
 
 
& & &; ; ;&; ; ;; ; ;$8 8 87 7 7; ; ;: : :9 9 9 9 9r   r9   )r   rB   rJ   r?   twisted.internet.protocolr   %twisted.internet.test.test_serialportr   twisted.python.failurer   twisted.python.runtimer   twisted.trialr   environr   r)   twisted.internetr	   ImportErrorSerialr   
SerialPortr%   r1   TestCaser9   r   r   r   <module>r      s    
			   . . . . . . ; ; ; ; ; ; * * * * * * + + + + + + " " " " " ",
:	MMM+++++++    JFFF 
 
 
 
 
FM 
 
 
& & & & &
 5 & & &$( ( ( ( (h ( ( (d9 d9 d9 d9 d98, d9 d9 d9 d9 d9s   
A AA