U
    
W[A  ã                   @   sz   d dl mZ d dlmZ d dlmZ d dlmZmZ d dlm	Z	 G dd„ dej
ƒZG dd	„ d	ej
ƒZG d
d„ dejƒZdS )é    )Úunittest)Úloopback)Úbasic)ÚprotocolÚabstract)ÚBytesIOc                   @   s   e Zd ZdZdd„ ZdS )ÚBufferingServeró    c                 C   s   |  j |7  _ d S ©N)Úbuffer)ÚselfÚdata© r   ú:/usr/lib/python3/dist-packages/twisted/test/test_tpfile.pyÚdataReceived   s    zBufferingServer.dataReceivedN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚFileSendingClientc                 C   s
   || _ d S r
   )Úf)r   r   r   r   r   Ú__init__   s    zFileSendingClient.__init__c                    s4   t  ¡ }| ˆ jˆ jdd„ ¡}| ‡ fdd„¡ d S )Nc                 S   s   | S r
   r   ©Úxr   r   r   Ú<lambda>   r	   z2FileSendingClient.connectionMade.<locals>.<lambda>c                    s
   ˆ j  ¡ S r
   )Ú	transportZloseConnection)Úr©r   r   r   r      r	   )r   Ú
FileSenderÚbeginFileTransferr   r   ÚaddCallback)r   ÚsÚdr   r   r   ÚconnectionMade   s    z FileSendingClient.connectionMadeN)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S )ÚFileSenderTestsc                    s<   d‰t ƒ ‰ ttˆƒƒ}t ˆ |¡}| ‡ ‡‡fdd„¡ |S )Ns„  xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123c                    s   ˆ  ˆ jˆ¡S r
   )ZassertEqualr   r   ©r    r   ZtestStrr   r   r   $   r	   z1FileSenderTests.testSendingFile.<locals>.<lambda>)r   r   r   r   ZloopbackTCPr   )r   Úcr!   r   r$   r   ÚtestSendingFile   s    zFileSenderTests.testSendingFilec                 C   sN   t  ¡ }t ¡ }d|_tdƒ}| ||dd„ ¡}|  |j¡ |  	|j
d¡ d S )Né   r	   c                 S   s   | S r
   r   r   r   r   r   r   .   r	   z6FileSenderTests.testSendingEmptyFile.<locals>.<lambda>z0producer unregistered with deferred being called)r   r   r   ZFileDescriptorZ	connectedr   r   ZassertIsNoneZproducerZ
assertTrueZcalled)r   Z
fileSenderZconsumerZ	emptyFiler!   r   r   r   ÚtestSendingEmptyFile(   s    ÿz$FileSenderTests.testSendingEmptyFileN)r   r   r   r&   r(   r   r   r   r   r#      s   
r#   N)Ztwisted.trialr   Ztwisted.protocolsr   r   Ztwisted.internetr   r   Úior   ZProtocolr   r   ZTestCaser#   r   r   r   r   Ú<module>   s   
