o
    Òó·iº  ã                   @   sî   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zddlZdd	lmZ W n eyM   erG‚ dZdZY nw edurdG d
d„ dejƒZG dd„ dejƒZG dd„ deƒZG dd„ dejƒZdS )z+
Tests for L{twisted.internet.serialport}.
é    N)ÚProtocol)Ú	DoNothing)ÚFailure)Úplatform)ÚunittestZTWISTED_FORCE_SERIAL_TESTS)Ú
serialportc                       s,   e Zd Z‡ fdd„Zdd„ Zdd„ Z‡  ZS )ÚRegularFileSerialc                    s"   t ƒ j|i |¤Ž || _|| _d S ©N)ÚsuperÚ__init__Úcaptured_argsÚcaptured_kwargs)ÚselfÚargsÚkwargs©Ú	__class__© úpC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\twisted/internet/test/test_win32serialport.pyr   $   s   
zRegularFileSerial.__init__c                 C   ó   d S r	   r   ©r   r   r   r   Ú_reconfigurePort)   ó   z"RegularFileSerial._reconfigurePortc                 C   r   r	   r   r   r   r   r   Ú_reconfigure_port,   r   z#RegularFileSerial._reconfigure_port)Ú__name__Ú
__module__Ú__qualname__r   r   r   Ú__classcell__r   r   r   r   r   #   s    r   c                       s(   e Zd ZeZ‡ fdd„Zdd„ Z‡  ZS )ÚRegularFileSerialPortc                    s@   |  d¡}d|v r|d= tjj| _|| j_tƒ j|i |¤Ž d S )NÚcbInQue)ÚgetÚserialÚwin32ZCOMSTATÚcomstatr   r
   r   )r   r   r   r   r   r   r   r   2   s   

zRegularFileSerialPort.__init__c                 C   s
   d| j fS )NT)r#   r   r   r   r   Ú_clearCommError=   ó   
z%RegularFileSerialPort._clearCommError)r   r   r   r   Z_serialFactoryr   r$   r   r   r   r   r   r   /   s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚCollectReceivedProtocolc                 C   s
   g | _ d S r	   )Úreceived_datar   r   r   r   r   B   r%   z CollectReceivedProtocol.__init__c                 C   s   | j  |¡ d S r	   )r'   Úappend)r   Údatar   r   r   ÚdataReceivedE   ó   z$CollectReceivedProtocol.dataReceivedN)r   r   r   r   r*   r   r   r   r   r&   A   s    r&   c                   @   sz   e Zd ZdZese ¡ sdZnesdZdd„ Z	dd„ Z
dd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd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                 C   sl   t ƒ | _tƒ | _t ¡ | _tj 	| jd¡| _d}t
| jdƒ�}| |¡ W d   ƒ d S 1 s/w   Y  d S )NZfake_serials   1234Úwb)r   Úprotocolr   ÚreactorÚtempfileÚmkdtempÚ	directoryÚosÚpathÚjoinÚopenÚwrite)r   r)   Úfr   r   r   ÚsetUpU   s   
"ÿzWin32SerialPortTests.setUpc                 C   s   t  | j¡ d S r	   )ÚshutilÚrmtreer2   r   r   r   r   ÚtearDowna   r+   zWin32SerialPortTests.tearDownc                 C   sº   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€%  ZbaudrateZbytesizeZparityZstopbitsr   ZxonxoffZrtsctsNÚtimeoutÚCleanup)r   r.   r4   r/   ÚassertEqualZ_serialr   r   r!   Z	EIGHTBITSZPARITY_NONEZSTOPBITS_ONEÚconnectionLostr   Ú	Exception)r   Úportr   r   r   r   Útest_serialPortDefaultArgsd   s   z/Win32SerialPortTests.test_serialPortDefaultArgsc                 C   sf   |   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   é   r>   N)
r?   r.   Ú	connectedr   r4   r/   Ú	transportr@   r   rA   )r   rB   r   r   r   Ú!test_serialPortInitiallyConnectedw   s   z6Win32SerialPortTests.test_serialPortInitiallyConnectedc                 C   sb   t | j| j| j|d�}| ¡  | d¡ | d¡ | d¡ | ¡  | ¡  | tt	dƒƒ¡ d S )N©r.   ZdeviceNameOrPortNumberr/   r   ó    s   abcds   ABCDr>   )
r   r.   r4   r/   ÚserialReadEventr7   ZserialWriteEventr@   r   rA   )r   r   rB   r   r   r   Úcommon_exerciseHandleAccess„   s   ü


z0Win32SerialPortTests.common_exerciseHandleAccessc                 C   ó   | j dd� d S ©NF©r   ©rK   r   r   r   r   Útest_exerciseHandleAccess_1–   r+   z0Win32SerialPortTests.test_exerciseHandleAccess_1c                 C   rL   ©NTrN   rO   r   r   r   r   Útest_exerciseHandleAccess_2™   r+   z0Win32SerialPortTests.test_exerciseHandleAccess_2c                 C   sR   t ƒ }t|| j| j|d�}| ¡  |  tdd„ |jD ƒƒ¡ | t	t
dƒƒ¡ d S )NrH   c                 s   s   � | ]}t |tƒV  qd S r	   )Ú
isinstanceÚbytes)Ú.0Údr   r   r   Ú	<genexpr>¦   s   € zEWin32SerialPortTests.common_serialPortReturnsBytes.<locals>.<genexpr>r>   )r&   r   r4   r/   rJ   Ú
assertTrueÚallr'   r@   r   rA   )r   r   r.   rB   r   r   r   Úcommon_serialPortReturnsBytesœ   s   üz2Win32SerialPortTests.common_serialPortReturnsBytesc                 C   rL   rM   ©rZ   r   r   r   r   Útest_serialPortReturnsBytes_1©   r+   z2Win32SerialPortTests.test_serialPortReturnsBytes_1c                 C   rL   rQ   r[   r   r   r   r   Útest_serialPortReturnsBytes_2¬   r+   z2Win32SerialPortTests.test_serialPortReturnsBytes_2N)r   r   r   Ú__doc__ÚtestingForcedr   Z	isWindowsÚskipr   r9   r<   rC   rG   rK   rP   rR   rZ   r\   r]   r   r   r   r   r,   I   s"    r,   )r^   r3   r:   r0   Ztwisted.internet.protocolr   Z%twisted.internet.test.test_serialportr   Ztwisted.python.failurer   Ztwisted.python.runtimer   Ztwisted.trialr   Úenvironr_   r!   Ztwisted.internetr   ÚImportErrorZSerialr   Z
SerialPortr   r&   ZTestCaser,   r   r   r   r   Ú<module>   s0   
û