o
    b(                     @   sL   d dl mZ d dlmZ d dlmZ G dd dejZG dd dejZ	dS )	    )protocol)rawudp)unittestc                   @   s   e Zd Zdd Zdd ZdS )
MyProtocolc                 C   s   t || _d S )N)list	expecting)selfr    r	   ?/usr/lib/python3/dist-packages/twisted/pair/test/test_rawudp.py__init__   s   zMyProtocol.__init__c                 C   sx   |\}}| j sJ d| j d\}}}||ks J d||||ks,J d||||ks:J d||||f d S )Nz(Got a packet when not expecting anymore.r   zExpected data {!r}, got {!r}zExpected host {!r}, got {!r}z&Expected port %d=0x%04x, got %d=0x%04x)r   popformat)r   datapeerhostport
expectData
expectHost
expectPortr	   r	   r
   datagramReceived   s   zMyProtocol.datagramReceivedN)__name__
__module____qualname__r   r   r	   r	   r	   r
   r      s    r   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )RawUDPTestsc                 C   s\   t  }tdg}|d| |jddddddddddddddd |jr,J d|j d S 	N   foobar   testHostiC       C ޭfoobarr      dummyr   partialdestsourcer   versionihltostot_lenfragment_idfragment_offsetdont_fragmentmore_fragmentsttl5Should not expect any more packets, but still want %rr   RawUDPProtocolr   addProtor   r   r   protop1r	   r	   r
   testPacketParsing#   s2   zRawUDPTests.testPacketParsingc                 C   s   t  }tddg}|d| |jddddddddddddddd |jd	ddd
ddddddddddd |jr@J d|j d S )Nr      quux	   otherHosti3  r   r   r   r    r   r!      3 ޭquuxr8   r.   r/   r2   r	   r	   r
   testMultiplePacketsE   sT   zRawUDPTests.testMultiplePacketsc                 C   s   t  }tdg}tdg}|d| |d| |jddddddddddddddd |jr7J d|j |jrAJ d|j d S r   r/   r   r3   r4   p2r	   r	   r
   testMultipleSameProtos{   sB   z"RawUDPTests.testMultipleSameProtosc                 C   sF   t  }tg }|d| |jddddddddddddddd d S )N   r   r   r    r   r!   )r   r0   r   r1   r   r2   r	   r	   r
   testWrongProtoNotSeen   s&   
z!RawUDPTests.testWrongProtoNotSeenc                 C   s   t  }tddg}|d| tddg}|d| |jddd	d
d	d	d	d	d	d	d	d	d	d	d |jddd	dd	d	d	d	d	d	d	d	d	d	d |jddd	d
d	d	d	d	d	d	d	d	d	d	d |jddd	dd	d	d	d	d	d	d	d	d	d	d |jrrJ d|j |jr|J d|j d S )Nr   r6   r   )r7   r8   i  )r   r   i  iP  s   P ޭquuxr   r    r8   r!   r   r   r9   s   P ޭfoobarr.   r/   r;   r	   r	   r
   testDemuxing   s   zRawUDPTests.testDemuxingc              
   C   sT   t  }z|dd W td ty) } z|jdkrn W Y d}~dS d}~ww )z2Adding a wrong level protocol raises an exception.*   	silliness)z6Added protocol must be an instance of DatagramProtocolN2addProto must raise an exception for bad protocols)r   r0   r1   	TypeErrorargsAssertionErrorr   er	   r	   r
   testAddingBadProtos_WrongLevel,  s   
z*RawUDPTests.testAddingBadProtos_WrongLevelc              
   C   X   t  }z|dt  W td ty+ } z|jdkrn W Y d}~dS d}~ww )z=Adding a protocol with a negative number raises an exception.)z'Added protocol must be positive or zeroNrC   r   r0   r1   r   DatagramProtocolrD   rE   rF   rG   r	   r	   r
   testAddingBadProtos_TooSmall9     
z(RawUDPTests.testAddingBadProtos_TooSmallc              
   C   rJ   )<Adding a protocol with a number >=2**16 raises an exception.i   z"Added protocol must fit in 16 bitsNrC   rL   rG   r	   r	   r
   testAddingBadProtos_TooBigF  rO   z&RawUDPTests.testAddingBadProtos_TooBigc              
   C   rJ   )rP   i  rQ   NrC   rL   rG   r	   r	   r
   testAddingBadProtos_TooBig2S  rO   z'RawUDPTests.testAddingBadProtos_TooBig2N)r   r   r   r5   r:   r=   r?   r@   rI   rN   rR   rS   r	   r	   r	   r
   r   "   s    "6-jr   N)
twisted.internetr   twisted.pairr   twisted.trialr   rM   r   TestCaser   r	   r	   r	   r
   <module>   s
   