U
    
W[å  ã                   @   st   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 G dd„ deƒZG dd	„ d	eƒZG d
d„ deejƒZdS )z+
Test cases for twisted.protocols.stateful
é    )ÚTestCase)Ú
test_basic)ÚStatefulProtocol)ÚpackÚunpackÚcalcsizec                   @   sP   e Zd ZdZdZdZeeƒZdd„ Zdd„ Z	dd	„ Z
d
d„ Zdd„ Zdd„ ZdS )ÚMyInt32StringReceiverz)
    A stateful Int32StringReceiver.
    iŸ† z!Ic                 C   s
   | j dfS ©Né   )Ú
_getHeader©Úself© r   ú</usr/lib/python3/dist-packages/twisted/test/test_stateful.pyÚgetInitialState   s    z%MyInt32StringReceiver.getInitialStatec                 C   s   | j  ¡  d S ©N)Ú	transportZloseConnection)r   Úlengthr   r   r   ÚlengthLimitExceeded   s    z)MyInt32StringReceiver.lengthLimitExceededc                 C   s.   t d|ƒ\}|| jkr$|  |¡ d S | j|fS )Nú!i)r   Ú
MAX_LENGTHr   Ú
_getString)r   Úmsgr   r   r   r   r       s
    

z MyInt32StringReceiver._getHeaderc                 C   s   |   |¡ | jdfS r	   )ÚstringReceivedr   ©r   r   r   r   r   r   (   s    
z MyInt32StringReceiver._getStringc                 C   s   t ‚dS )z 
        Override this.
        N)ÚNotImplementedErrorr   r   r   r   r   -   s    z$MyInt32StringReceiver.stringReceivedc                 C   s    | j  t| jt|ƒƒ| ¡ dS )zS
        Send an int32-prefixed string to the other end of the connection.
        N)r   Úwriter   ÚstructFormatÚlen)r   Údatar   r   r   Ú
sendString4   s    z MyInt32StringReceiver.sendStringN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   ZprefixLengthr   r   r   r   r   r    r   r   r   r   r      s   r   c                   @   s,   e Zd Zdd„ Zdd„ ZdZdZdd„ Zd	S )
Ú	TestInt32c                 C   s
   g | _ d S r   )Úreceivedr   r   r   r   ÚconnectionMade=   s    zTestInt32.connectionMadec                 C   s   | j  |¡ d S r   )r&   Úappend)r   Úsr   r   r   r   A   s    zTestInt32.stringReceivedé2   r   c                 C   s
   d| _ d S )Né   )Úclosed)r   Úreasonr   r   r   ÚconnectionLostH   s    zTestInt32.connectionLostN)r!   r"   r#   r'   r   r   r,   r.   r   r   r   r   r%   <   s
   r%   c                   @   s0   e Zd ZeZddgZdgZdddgZdd„ Zd	S )
Ú
Int32Testsó   as   bbbbbbbbbbbbbbbbs
      aaaaaas      s   hello thereÚ c                 C   sT   |   ¡ }d}| jd D ]}|tdt|ƒƒ| 7 }q| |¡ |  |j| jd ¡ d S )Nó    r
   r   )ZgetProtocolÚstringsr   r   ZdataReceivedZassertEqualr&   )r   ÚrZbigr)   r   r   r   Útest_bigReceiveS   s    
zInt32Tests.test_bigReceiveN)	r!   r"   r#   r%   Zprotocolr3   ZillegalStringsZpartialStringsr5   r   r   r   r   r/   M   s
   
r/   N)r$   Ztwisted.trial.unittestr   Ztwisted.protocols.testr   Ztwisted.protocols.statefulr   Zstructr   r   r   r   r%   ZIntNTestCaseMixinr/   r   r   r   r   Ú<module>   s   ,