o
    Óó·i˜)  ã                   @  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„Zddd„ZdS )Ú
MyProtocolÚ	expectingúlist[tuple[bytes, bytes, int]]ÚreturnÚNonec                 C  s   t |ƒ| _d S )N)Úlistr   )Úselfr   © r   úcC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\twisted/pair/test/test_rawudp.pyÚ__init__   s   zMyProtocol.__init__ÚdataÚbytesÚpeerútuple[bytes, int]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   r   r   ÚhostÚportZ
expectDataZ
expectHostZ
expectPortr   r   r   ÚdatagramReceived   s   ÿÿüzMyProtocol.datagramReceivedN)r   r   r	   r
   )r   r   r   r   r	   r
   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    
r   c                   @  sf   e Zd Zddd„Zddd„Zddd„Zdd	d
„Zddd„Zddd„Zddd„Z	ddd„Z
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r,J 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   Ú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ó	   otherHostiþ3  r!   r"   r   r#   r    r$   ó   3þð Þ­quuxr3   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r7J d|j ƒ‚|jrAJ 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rrJ d|j ƒ‚|jr|J d|j ƒ‚d S )Nr   r1   r!   )r2   r3   i¤  )r   r    i£  iP°  s   ¤°P Þ­quuxr   r#   r3   r$   r"   r    r4   s   £°P Þ­foobarr)   r*   r6   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.é*   Z	silliness)z6Added protocol must be an instance of DatagramProtocolNú2addProto must raise an exception for bad protocols)r   r+   r,   Ú	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 zeroNr=   ©r   r+   r,   r   ÚDatagramProtocolr>   r?   r@   rA   r   r   r   ÚtestAddingBadProtos_TooSmall:  ó   ú
þ€þz(RawUDPTests.testAddingBadProtos_TooSmallc              
   C  rD   )ú<Adding a protocol with a number >=2**16 raises an exception.i   ©z"Added protocol must fit in 16 bitsNr=   rF   rA   r   r   r   ÚtestAddingBadProtos_TooBigG  rI   z&RawUDPTests.testAddingBadProtos_TooBigc              
   C  rD   )rJ   i  rK   Nr=   rF   rA   r   r   r   ÚtestAddingBadProtos_TooBig2T  rI   z'RawUDPTests.testAddingBadProtos_TooBig2N)r	   r
   )r   r   r   r0   r5   r8   r:   r;   rC   rH   rL   rM   r   r   r   r   r   #   s    

"
6
-

j

r   N)Ú
__future__r   Ztwisted.internetr   Ztwisted.pairr   Ztwisted.trialr   rG   r   ZTestCaser   r   r   r   r   Ú<module>   s   