U
    2ÜŸj˜)  ã                   @  sX   d dl mZ 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 )
é    )Úannotations)Úprotocol)Úrawudp)Úunittestc                   @  s.   e Zd Zdddœdd„Zddddœd	d
„ZdS )Ú
MyProtocolzlist[tuple[bytes, bytes, int]]ÚNone)Ú	expectingÚreturnc                 C  s   t |ƒ| _d S )N)Úlistr   )Úselfr   © r   úA/tmp/pip-unpacked-wheel-4b529toj/twisted/pair/test/test_rawudp.pyÚ__init__   s    zMyProtocol.__init__Úbytesztuple[bytes, int])ÚdataÚpeerr	   c                 C  sx   |\}}| j stdƒ‚| j  d¡\}}}||ks@td ||¡ƒ‚||ksXtd ||¡ƒ‚||kstt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   ÚAssertionErrorÚpopÚformat)r   r   r   ÚhostÚportZ
expectDataZ
expectHostZ
expectPortr   r   r   ÚdatagramReceived   s"     ÿ ÿüzMyProtocol.datagramReceivedN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s   r   c                   @  sŠ   e Zd Zddœdd„Zddœdd„Zddœdd„Zddœd	d
„Zddœdd„Zddœdd„Zddœdd„Z	ddœdd„Z
ddœdd„ZdS )ÚRawUDPTestsr   )r	   c                 C  s\   t  ¡ }tdgƒ}| d|¡ |jddddddddddddddd� |jrXtd|j ƒ‚d S ©	N©ó   foobaró   testHosti¢C  éð  ó   C¢ð Þ­foobarr   ó   dummyr   ©ÚpartialÚdestÚsourcer   ÚversionZihlZtosZtot_lenZfragment_idZfragment_offsetZdont_fragmentZmore_fragmentsZttlú5Should not expect any more packets, but still want %r©r   ÚRawUDPProtocolr   ÚaddProtor   r   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€td|j ƒ‚d S )Nr   ©ó   quuxó	   otherHostiþ3  r    r!   r   r"   r   r#   ó   3þð Þ­quuxr2   r(   r)   r,   r   r   r   ÚtestMultiplePacketsF   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rntd|j ƒ‚|jr‚td|j ƒ‚d S r   r)   ©r   r-   r.   Ú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   r*   r   r+   r   r,   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rätd|j ƒ‚|jrøtd|j ƒ‚d S )Nr   r0   r    )r1   r2   i¤  )r   r   i£  iP°  s   ¤°P Þ­quuxr   r"   r2   r#   r!   r   r3   s   £°P Þ­foobarr(   r)   r5   r   r   r   ÚtestDemuxingÃ   s¦    þÿþÿîîîîÿÿzRawUDPTests.testDemuxingc              
   C  sV   t  ¡ }z| dd¡ W n0 tk
rH } z|jdkr6n‚ W 5 d}~X Y n
X tdƒ‚dS )z2Adding a wrong level protocol raises an exception.é*   Z	silliness)z6Added protocol must be an instance of DatagramProtocolNú2addProto must raise an exception for bad protocols)r   r*   r+   Ú	TypeErrorÚargsr   ©r   Úer   r   r   ÚtestAddingBadProtos_WrongLevel-  s    
z*RawUDPTests.testAddingBadProtos_WrongLevelc              
   C  sZ   t  ¡ }z| dt ¡ ¡ W n0 tk
rL } z|jdkr:n‚ W 5 d}~X Y n
X tdƒ‚dS )z=Adding a protocol with a negative number raises an exception.éÿÿÿÿ)z'Added protocol must be positive or zeroNr<   ©r   r*   r+   r   ÚDatagramProtocolr=   r>   r   r?   r   r   r   ÚtestAddingBadProtos_TooSmall:  s    
z(RawUDPTests.testAddingBadProtos_TooSmallc              
   C  sZ   t  ¡ }z| dt ¡ ¡ W n0 tk
rL } z|jdkr:n‚ W 5 d}~X Y n
X tdƒ‚dS )ú<Adding a protocol with a number >=2**16 raises an exception.i   ©z"Added protocol must fit in 16 bitsNr<   rC   r?   r   r   r   ÚtestAddingBadProtos_TooBigG  s    
z&RawUDPTests.testAddingBadProtos_TooBigc              
   C  sZ   t  ¡ }z| dt ¡ ¡ W n0 tk
rL } z|jdkr:n‚ W 5 d}~X Y n
X tdƒ‚dS )rF   i  rG   Nr<   rC   r?   r   r   r   ÚtestAddingBadProtos_TooBig2T  s    
z'RawUDPTests.testAddingBadProtos_TooBig2N)r   r   r   r/   r4   r7   r9   r:   rA   rE   rH   rI   r   r   r   r   r   #   s   "6-jr   N)Ú
__future__r   Ztwisted.internetr   Ztwisted.pairr   Ztwisted.trialr   rD   r   ZTestCaser   r   r   r   r   Ú<module>   s
   