U
    Â“«jß  ã                   @   st   d Z ddlmZmZmZ ddlmZ ddlmZ ddl	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
é    )ÚcalcsizeÚpackÚunpack)ÚStatefulProtocol)Ú
test_basic)ÚTestCasec                   @   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   ú>/tmp/pip-unpacked-wheel-59kc99xd/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   Ú
sendString0   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   ÚconnectionMade8   s    zTestInt32.connectionMadec                 C   s   | j  |¡ d S r   )r&   Úappend)r   Úsr   r   r   r   ;   s    zTestInt32.stringReceivedé2   r   c                 C   s
   d| _ d S )Né   )Úclosed)r   Úreasonr   r   r   ÚconnectionLostA   s    zTestInt32.connectionLostN)r!   r"   r#   r'   r   r   r,   r.   r   r   r   r   r%   7   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 )Nr1   r
   r   )ZgetProtocolÚstringsr   r   ZdataReceivedÚassertEqualr&   )r   ÚrÚbigr)   r   r   r   Útest_bigReceiveK   s    
zInt32Tests.test_bigReceiveN)	r!   r"   r#   r%   Úprotocolr2   ZillegalStringsZpartialStringsr6   r   r   r   r   r/   E   s
   
r/   N)r$   Ústructr   r   r   Ztwisted.protocols.statefulr   Ztwisted.protocols.testr   Ztwisted.trial.unittestr   r   r%   ZIntNTestCaseMixinr/   r   r   r   r   Ú<module>   s   '