File: //usr/lib/python3/dist-packages/twisted/protocols/test/__pycache__/test_basic.cpython-310.pyc
o
�b� � @ sJ d Z ddlZddlZddlmZ ddlmZmZmZ ddl m
Z
ddlmZm
Z
ddlmZ ddlmZ dd lmZ dd
lmZ ddlmZ ddlmZ dd
lmZ G dd� dej�ZG dd� dej�ZG dd� dej�Z G dd� dej!�Z"G dd� dej�Z#G dd� dej!�Z$G dd� dej!�Z%G dd� d�Z&G dd� de&ej'�Z(G d d!� d!�Z)G d"d#� d#ej!e)�Z*G d$d%� d%e)�Z+G d&d'� d'�Z,G d(d)� d)e&ej-�Z.G d*d+� d+ej!e+e,�Z/G d,d-� d-e&ej0�Z1G d.d/� d/ej!e+e,�Z2G d0d1� d1e&ej3�Z4G d2d3� d3ej!e+e,�Z5G d4d5� d5�Z6G d6d7� d7ej�Z7G d8d9� d9ej!�Z8G d:d;� d;ej9�Z:dS )<z,
Test cases for L{twisted.protocols.basic}.
� N)�BytesIO)�List�Optional�Type)�verifyObject)�protocol�task)� IProducer)�connectionDone)�basic)� iterbytes)�Failure)�
proto_helpers)�unittestc @ �, e Zd ZdZdZdd� Zdd� Zdd� Zd S )
�FlippingLineTesterzT
A line receiver that flips between line and raw data modes after one byte.
�
c C �
g | _ d S �N)�lines��self� r �C/usr/lib/python3/dist-packages/twisted/protocols/test/test_basic.py�__init__! �
zFlippingLineTester.__init__c C s | j �|� | �� dS )z&
Set the mode to raw.
N)r �append�
setRawMode�r �liner r r �lineReceived$ s zFlippingLineTester.lineReceivedc C s | � |dd� � dS )z,
Set the mode back to line.
� N)�setLineMode�r �datar r r �rawDataReceived+ s z"FlippingLineTester.rawDataReceivedN)�__name__�
__module__�__qualname__�__doc__� delimiterr r r% r r r r r s r c @ sB e Zd ZdZdZdZddd�Zdd� Zd d
� Zdd� Z d
d� Z
dS )�
LineTestera�
A line receiver that parses data received and make actions on some tokens.
@type delimiter: C{bytes}
@ivar delimiter: character used between received lines.
@type MAX_LENGTH: C{int}
@ivar MAX_LENGTH: size of a line when C{lineLengthExceeded} will be called.
@type clock: L{twisted.internet.task.Clock}
@ivar clock: clock simulating reactor callLater. Pass it to constructor if
you want to use the pause/rawpause functionalities.
r �@ Nc C s
|| _ dS )z@
If given, use a clock to make callLater calls.
N)�clock)r r- r r r r B �
zLineTester.__init__c C �
g | _ dS �z;
Create/clean data received on connection.
N��receivedr r r r �connectionMadeH r. zLineTester.connectionMadec C s� | j �|� |dkr| �� dS |dkr"| �� | j�d| j� dS |dkr>| �� | �� | j �d� | j�d| j� dS |dkrH| �� dS |dd� dkr[t|dd� �| _ dS |�
d �ri| j�| d
� dS |�
d�ru| j�
� dS dS )z|
Receive line and make some action for some tokens: pause, rawpause,
stop, len, produce, unproduce.
� � pauser � rawpause� stopN� s len � produceF� unproduce)r2 r r �pauseProducingr- � callLater�resumeProducing�
stopProducing�int�length�
startswith� transport�registerProducer�unregisterProducerr r r r r N s(
�zLineTester.lineReceivedc C s^ |d| j � || j d� }}| j t|� | _ | jd | | jd<