Ë
    oj˜)  ã                  óˆ   — d dl mZ d dlmZ d dlmZ d dlmZ  G d„ dej                  «      Z	 G d„ dej                  «      Zy	)
é    )Úannotations)Úprotocol)Úrawudp)Úunittestc                  ó   — e Zd Zdd„Zdd„Zy)Ú
MyProtocolc                ó$   — t        |«      | _        y )N)ÚlistÚ	expecting)Úselfr   s     ú?/usr/lib/python3/dist-packages/twisted/pair/test/test_rawudp.pyÚ__init__zMyProtocol.__init__   s   € Ü˜i›ˆ�ó    c                ó  — |\  }}| j                   sJ d«       ‚| j                   j                  d«      \  }}}||k(  sJ dj                  ||«      «       ‚||k(  sJ dj                  ||«      «       ‚||k(  sJ d||||fz  «       ‚y )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Ú
expectPorts           r   ÚdatagramReceivedzMyProtocol.datagramReceived   s»   € Ø‰ˆˆtØ�~Š~ÐIÐIÓIˆ~Ø-1¯^©^×-?Ñ-?ÀÓ-BÑ*ˆ
�J 
à˜TÒ!ð 	
Ð#A×#HÑ#HØ˜ó$
ó 	
Ð!ð ˜TÒ!ð 	
Ð#A×#HÑ#HØ˜ó$
ó 	
Ð!ð ˜TÒ!ð 	
Ð#KØØØØð	O
ñ $
ó 	
Ñ!r   N)r   zlist[tuple[bytes, bytes, int]]ÚreturnÚNone)r   Úbytesr   ztuple[bytes, int]r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r   r      s   „ ó)ô
r   r   c                  óT   — 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y
)ÚRawUDPTestsc                óæ   — t        j                  «       }t        dg«      }|j                  d|«       |j	                  dddddddddddddd¬«       |j
                  rJ d|j
                  z  «       ‚y ©	N©ó   foobaró   testHosti¢C  éð  ó   C¢ð Þ­foobarr   ó   dummyr(   ©ÚpartialÚdestÚsourcer   ÚversionÚihlÚtosÚtot_lenÚfragment_idÚfragment_offsetÚdont_fragmentÚmore_fragmentsÚttlú5Should not expect any more packets, but still want %r©r   ÚRawUDPProtocolr   ÚaddProtor   r   ©r   ÚprotoÚp1s      r   ÚtestPacketParsingzRawUDPTests.testPacketParsing$   s—   € Ü×%Ñ%Ó'ˆÜà0ðó
ˆð
 	�‰�v˜rÔ"à×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð* —<’<ð 	
ØCÀbÇlÁlÑRó	
Ð�<r   c                ó&  — t        j                  «       }t        ddg«      }|j                  d|«       |j	                  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¬«       |j
                  rJ d|j
                  z  «       ‚y )Nr&   ©ó   quuxó	   otherHostiþ3  r)   r*   r   r+   r(   r,   ó   3þð Þ­quuxrD   r9   r:   r=   s      r   ÚtestMultiplePacketszRawUDPTests.testMultiplePacketsF   sÝ   € Ü×%Ñ%Ó'ˆÜà0Ø/ðó
ˆð 	�‰�v˜rÔ"Ø×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð( 	×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð* —<’<ð 	
ØCÀbÇlÁlÑRó	
Ð�<r   c                ób  — t        j                  «       }t        dg«      }t        dg«      }|j                  d|«       |j                  d|«       |j	                  dddddddddddddd¬«       |j
                  rJ d|j
                  z  «       ‚|j
                  rJ d|j
                  z  «       ‚y r%   r:   ©r   r>   r?   Úp2s       r   ÚtestMultipleSameProtosz"RawUDPTests.testMultipleSameProtos|   sÛ   € Ü×%Ñ%Ó'ˆÜà0ðó
ˆô à0ðó
ˆð 	�‰�v˜rÔ"Ø�‰�v˜rÔ"à×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð* —<’<ð 	
ØCÀbÇlÁlÑRó	
Ðð —<’<ð 	
ØCÀbÇlÁlÑRó	
Ð�<r   c                ó¤   — t        j                  «       }t        g «      }|j                  d|«       |j	                  dddddddddddddd¬«       y )Né   r*   r   r+   r(   r,   )r   r;   r   r<   r   r=   s      r   ÚtestWrongProtoNotSeenz!RawUDPTests.testWrongProtoNotSeen©   sh   € Ü×%Ñ%Ó'ˆÜ˜‹^ˆØ�‰�q˜"Ôà×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	õ 	
r   c                ó   — t        j                  «       }t        ddg«      }|j                  d|«       t        ddg«      }|j                  d|«       |j	                  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	¬«       |j	                  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	¬«       |j
                  rJ d|j
                  z  «       ‚|j
                  rJ d|j
                  z  «       ‚y )Nr&   rB   r)   )rC   rD   i¤  )r'   r(   i£  iP°  s   ¤°P Þ­quuxr   r+   rD   r,   r*   r(   rE   s   £°P Þ­foobarr9   r:   rH   s       r   ÚtestDemuxingzRawUDPTests.testDemuxingÃ   sª  € Ü×%Ñ%Ó'ˆÜà0Ø/ðó
ˆð 	�‰�v˜rÔ"äà/Ø0ðó
ˆð 	�‰�v˜rÔ"à×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð( 	×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð( 	×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð( 	×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð* —<’<ð 	
ØCÀbÇlÁlÑRó	
Ðð —<’<ð 	
ØCÀbÇlÁlÑRó	
Ð�<r   c                ó´   — t        j                  «       }	 |j                  dd«       t        d«      ‚# t        $ r}|j
                  dk(  rn‚ Y d}~yd}~ww xY w)z2Adding a wrong level protocol raises an exception.é*   Ú	sillinessú2addProto must raise an exception for bad protocols)z6Added protocol must be an instance of DatagramProtocolN)r   r;   r<   ÚAssertionErrorÚ	TypeErrorÚargs©r   Úes     r   ÚtestAddingBadProtos_WrongLevelz*RawUDPTests.testAddingBadProtos_WrongLevel-  s\   € ä×!Ñ!Ó#ˆð	WØ�J‰J�r˜;Ô'ô !Ð!UÓVÐVøô ò 	Ø�v‰vÐTÒTØàô ûð	ús   –3 ³	A¼AÁAc                óØ   — t        j                  «       }	 |j                  dt        j                  «       «       t        d«      ‚# t        $ r}|j                  dk(  rn‚ Y d}~yd}~ww xY w)z=Adding a protocol with a negative number raises an exception.éÿÿÿÿrS   )z'Added protocol must be positive or zeroN©r   r;   r<   r   ÚDatagramProtocolrT   rU   rV   rW   s     r   ÚtestAddingBadProtos_TooSmallz(RawUDPTests.testAddingBadProtos_TooSmall:  se   € ä×!Ñ!Ó#ˆð	WØ�J‰J�rœ8×4Ñ4Ó6Ô7ô !Ð!UÓVÐVøô ò 	Ø�v‰vÐEÒEØàô ûð	úó   –$A Á	A)ÁA$Á$A)c                óØ   — t        j                  «       }	 |j                  dt        j                  «       «       t        d«      ‚# t        $ r}|j                  dk(  rn‚ Y d}~yd}~ww xY w)ú<Adding a protocol with a number >=2**16 raises an exception.i   rS   ©z"Added protocol must fit in 16 bitsNr\   rW   s     r   ÚtestAddingBadProtos_TooBigz&RawUDPTests.testAddingBadProtos_TooBigG  se   € ä×!Ñ!Ó#ˆð	WØ�J‰J�uœh×7Ñ7Ó9Ô:ô !Ð!UÓVÐVøô ò 	Ø�v‰vÐ@Ò@Øàô ûð	úr_   c                óØ   — t        j                  «       }	 |j                  dt        j                  «       «       t        d«      ‚# t        $ r}|j                  dk(  rn‚ Y d}~yd}~ww xY w)ra   i  rS   rb   Nr\   rW   s     r   ÚtestAddingBadProtos_TooBig2z'RawUDPTests.testAddingBadProtos_TooBig2T  se   € ä×!Ñ!Ó#ˆð	WØ�J‰J�y¤(×";Ñ";Ó"=Ô>ô !Ð!UÓVÐVøô ò 	Ø�v‰vÐ@Ò@Øàô ûð	úr_   N)r   r   )r   r   r    r@   rF   rJ   rM   rO   rY   r^   rc   re   r!   r   r   r#   r#   #   s8   „ ó 
óD4
ól+
óZ
ó4h
óTWóWóWôWr   r#   N)Ú
__future__r   Útwisted.internetr   Útwisted.pairr   Útwisted.trialr   r]   r   ÚTestCaser#   r!   r   r   ú<module>rk      s=   ðõ #å %Ý õ #ô
�×*Ñ*ô 
ô.|W�(×#Ñ#õ |Wr   