o
    ¯bß  ã                   @   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   ú</usr/lib/python3/dist-packages/twisted/test/test_stateful.pyÚgetInitialState   ó   
z%MyInt32StringReceiver.getInitialStatec                 C   s   | j  ¡  d S ©N)Ú	transportÚ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 ‚)z 
        Override this.
        )Ú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   Ú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   r   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   r   zTestInt32.connectionLostN)r#   r$   r%   r*   r   r   r/   r1   r   r   r   r   r(   7   s    r(   c                   @   s.   e Zd ZeZddgZdgZg d¢Zdd„ ZdS )Ú
Int32Testsó   as   bbbbbbbbbbbbbbbbs
      aaaaaa)s      s   hello thereó    c                 C   sT   |   ¡ }d}| jd D ]}|tdt|ƒƒ| 7 }q| |¡ |  |j| jd ¡ d S )Nr4   r
   r   )ÚgetProtocolÚstringsr   r    ÚdataReceivedÚassertEqualr)   )r   ÚrÚbigr,   r   r   r   Útest_bigReceiveK   s   
zInt32Tests.test_bigReceiveN)	r#   r$   r%   r(   Úprotocolr6   ÚillegalStringsÚpartialStringsr;   r   r   r   r   r2   E   s    r2   N)r&   Ústructr   r   r   Útwisted.protocols.statefulr   Útwisted.protocols.testr   Útwisted.trial.unittestr   r   r(   ÚIntNTestCaseMixinr2   r   r   r   r   Ú<module>   s   '