+
    üÐj˜)  ã                  óŠ   € ^ RI Ht ^ RIHt ^ RIHt ^ RIHt  ! R R]P                  4      t	 ! R R]P                  4      tR	# )
é    )Úannotations)Úprotocol)Úrawudp)Úunittestc                  ó.   € ] tR t^tR R ltR R ltRtR# )Ú
MyProtocolc               ó    € V ^8„  d   QhRRRR/# )é   Ú	expectingzlist[tuple[bytes, bytes, int]]ÚreturnÚNone© )Úformats   "Ú?/usr/lib/python3/dist-packages/twisted/pair/test/test_rawudp.pyÚ__annotate__ÚMyProtocol.__annotate__   s   € ÷ )ñ )Ð"@ð )ÀTñ )ó    c                	ó&   € \        V4      V n        R # )N)Úlistr   )Úselfr   s   &&r   Ú__init__ÚMyProtocol.__init__   s   € Ü˜i›ˆŽr   c               ó$   € V ^8„  d   QhRRRRRR/# )r
   ÚdataÚbytesÚpeerztuple[bytes, int]r   r   r   )r   s   "r   r   r      s"   € ÷ 
ñ 
 Uð 
Ð2Cð 
Èñ 
r   c                	ó  € Vw  r4V P                   '       g   Q R 4       hV P                   P                  ^ 4      w  rVpWQ8X  g   Q RP                  WQ4      4       hWc8X  g   Q RP                  Wc4      4       hWt8X  g   Q RVVVV3,          4       hR# )z(Got a packet when not expecting anymore.zExpected data {!r}, got {!r}zExpected host {!r}, got {!r}z&Expected port %d=0x%04x, got %d=0x%04xN)r   Úpopr   )r   r   r   ÚhostÚportÚ
expectDataÚ
expectHostÚ
expectPorts   &&&     r   ÚdatagramReceivedÚMyProtocol.datagramReceived   s¯   € Ø‰ˆØ�~�~ˆ~ÐIÐIÓIˆ~Ø-1¯^©^×-?Ñ-?ÀÓ-BÑ*ˆ
 
àÔ!ð 	
Ð#A×#HÑ#HØó$
ó 	
Ð!ð Ô!ð 	
Ð#A×#HÑ#HØó$
ó 	
Ð!ð Ô!ð 	
Ð#KØØØØð	O
õ $
ó 	
Ò!r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r$   Ú__static_attributes__r   r   r   r   r      s   † õ)÷
ñ 
r   r   c                  ó‚   € ] tR t^#tR R ltR R ltR R ltR R ltR	 R
 ltR R lt	R R lt
R R ltR R ltRtR# )ÚRawUDPTestsc               ó   € V ^8„  d   QhRR/# ©r
   r   r   r   )r   s   "r   r   ÚRawUDPTests.__annotate__$   s   € ÷  
ñ  
 4ñ  
r   c                	óþ   € \         P                  ! 4       p\        R.4      pVP                  RV4       VP	                  R^ RRRRRRRRRRRRR7       VP
                  '       d   Q RVP
                  ,          4       hR# ©	ó   foobaró   testHostéð  ó   C¢ð Þ­foobaró   dummy©Ú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 %rN©r2   r3   i¢C  ©r   ÚRawUDPProtocolr   ÚaddProtor$   r   ©r   ÚprotoÚp1s   &  r   ÚtestPacketParsingÚRawUDPTests.testPacketParsing$   s™   € Ü×%Ò%Ó'ˆÜà0ðó
ˆð
 	�‰�v˜rÔ"à×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð* —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ð‘<r   c               ó   € V ^8„  d   QhRR/# r.   r   )r   s   "r   r   r/   F   s   € ÷ 4
ñ 4
 Tñ 4
r   c                	ó>  € \         P                  ! 4       p\        R
R.4      pVP                  RV4       VP	                  R^ RRRRRRRRRRRRR7       VP	                  R^ RRRRRRRRRRRRR7       VP
                  '       d   Q RVP
                  ,          4       hR	# )r2   r3   ó	   otherHostr4   r5   r6   r7   ó   3þð Þ­quuxrD   NrE   ©ó   quuxrP   iþ3  rF   rI   s   &  r   ÚtestMultiplePacketsÚRawUDPTests.testMultiplePacketsF   sß   € Ü×%Ò%Ó'ˆÜà0Ø/ðó
ˆð 	�‰�v˜rÔ"Ø×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð( 	×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð* —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ð‘<r   c               ó   € V ^8„  d   QhRR/# r.   r   )r   s   "r   r   r/   |   s   € ÷ +
ñ +
¨ñ +
r   c                	óŽ  € \         P                  ! 4       p\        R.4      p\        R.4      pVP                  RV4       VP                  RV4       VP	                  R^ RRRRRRRRRRRRR7       VP
                  '       d   Q RVP
                  ,          4       hVP
                  '       d   Q RVP
                  ,          4       hR# r1   rF   ©r   rJ   rK   Úp2s   &   r   ÚtestMultipleSameProtosÚ"RawUDPTests.testMultipleSameProtos|   sß   € Ü×%Ò%Ó'ˆÜà0ðó
ˆô à0ðó
ˆð 	�‰�v˜rÔ"Ø�‰�v˜rÔ"à×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð* —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ðð —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ð‘<r   c               ó   € V ^8„  d   QhRR/# r.   r   )r   s   "r   r   r/   ©   s   € ÷ 
ñ 
 tñ 
r   c                	ó¨   € \         P                  ! 4       p\        . 4      pVP                  ^V4       VP	                  R^ RRRRRRRRRRRRR7       R# )é   r5   r6   r3   r7   N)r   rG   r   rH   r$   rI   s   &  r   ÚtestWrongProtoNotSeenÚ!RawUDPTests.testWrongProtoNotSeen©   sh   € Ü×%Ò%Ó'ˆÜ˜‹^ˆØ�‰�q˜"Ôà×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ö 	
r   c               ó   € V ^8„  d   QhRR/# r.   r   )r   s   "r   r   r/   Ã   s   € ÷ h
ñ h
˜dñ h
r   c                	óL  € \         P                  ! 4       p\        RR.4      pVP                  RV4       \        RR.4      pVP                  RV4       VP	                  R^ RRRRRRRRRRRRR7       VP	                  R^ RRRRRRRRRRRRR7       VP	                  R	^ RRRRRRRRRRRRR7       VP	                  R
^ RRRRRRRRRRRRR7       VP
                  '       d   Q RVP
                  ,          4       hVP
                  '       d   Q RVP
                  ,          4       hR# )r2   r3   rP   r4   iP°  s   ¤°P Þ­quuxr6   r7   r5   rQ   s   £°P Þ­foobarrD   NrE   rR   )rS   rP   i¤  )r2   r3   i£  rF   rX   s   &   r   ÚtestDemuxingÚRawUDPTests.testDemuxingÃ   s®  € Ü×%Ò%Ó'ˆÜà0Ø/ðó
ˆð 	�‰�v˜rÔ"äà/Ø0ðó
ˆð 	�‰�v˜rÔ"à×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð( 	×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð( 	×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð( 	×Ñðð
 ØØØØØØØØ Ø$Ø"Ø#Øð% 	ô 	
ð* —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ðð —<—<�<ð 	
ØCÀbÇlÁlÕRó	
Ð‘<r   c               ó   € V ^8„  d   QhRR/# r.   r   )r   s   "r   r   r/   -  s   € ÷ Wñ W°ñ Wr   c                ó¾   € \         P                  ! 4       p VP                  ^*R4       \        R4      h  \         d   pTP
                  R8X  d    Rp?R# h Rp?ii ; i)z2Adding a wrong level protocol raises an exception.Ú	sillinessú2addProto must raise an exception for bad protocolsN)z6Added protocol must be an instance of DatagramProtocol)r   rG   rH   ÚAssertionErrorÚ	TypeErrorÚargs©r   Úes   & r   ÚtestAddingBadProtos_WrongLevelÚ*RawUDPTests.testAddingBadProtos_WrongLevel-  sW   € ä×!Ò!Ó#ˆð	WØ�J‰J�r˜;Ô'ô !Ð!UÓVÐVøô ô 	Ø�v‰vÐTÔTÝàûð		ús   —4 ´A¿AÁAÁAc               ó   € V ^8„  d   QhRR/# r.   r   )r   s   "r   r   r/   :  s   € ÷ Wñ W¨dñ Wr   c                óä   € \         P                  ! 4       p VP                  R\        P                  ! 4       4       \        R4      h  \         d   pTP                  R8X  d    Rp?R# h Rp?ii ; i)z=Adding a protocol with a negative number raises an exception.rh   Néÿÿÿÿ)z'Added protocol must be positive or zero©r   rG   rH   r   ÚDatagramProtocolri   rj   rk   rl   s   & r   ÚtestAddingBadProtos_TooSmallÚ(RawUDPTests.testAddingBadProtos_TooSmall:  s`   € ä×!Ò!Ó#ˆð	WØ�J‰J�rœ8×4Ò4Ó6Ô7ô !Ð!UÓVÐVøô ô 	Ø�v‰vÐEÔEÝàûð		úó   —%A ÁA/ÁA*Á)A*Á*A/c               ó   € V ^8„  d   QhRR/# r.   r   )r   s   "r   r   r/   G  s   € ÷ Wñ W¨Dñ Wr   c                óä   € \         P                  ! 4       p VP                  R\        P                  ! 4       4       \        R4      h  \         d   pTP                  R8X  d    Rp?R# h Rp?ii ; i)ú<Adding a protocol with a number >=2**16 raises an exception.rh   Ni   ©z"Added protocol must fit in 16 bitsrs   rl   s   & r   ÚtestAddingBadProtos_TooBigÚ&RawUDPTests.testAddingBadProtos_TooBigG  s`   € ä×!Ò!Ó#ˆð	WØ�J‰J�uœh×7Ò7Ó9Ô:ô !Ð!UÓVÐVøô ô 	Ø�v‰vÐ@Ô@Ýàûð		úrw   c               ó   € V ^8„  d   QhRR/# r.   r   )r   s   "r   r   r/   T  s   € ÷ Wñ W¨Tñ Wr   c                óä   € \         P                  ! 4       p VP                  R\        P                  ! 4       4       \        R4      h  \         d   pTP                  R8X  d    Rp?R# h Rp?ii ; i)rz   rh   Ni  r{   rs   rl   s   & r   ÚtestAddingBadProtos_TooBig2Ú'RawUDPTests.testAddingBadProtos_TooBig2T  s`   € ä×!Ò!Ó#ˆð	WØ�J‰J�y¤(×";Ò";Ó"=Ô>ô !Ð!UÓVÐVøô ô 	Ø�v‰vÐ@Ô@Ýàûð		úrw   r   N)r&   r'   r(   r)   rL   rT   rZ   r_   rc   rn   ru   r|   r€   r*   r   r   r   r,   r,   #   s>   † õ 
õD4
õl+
õZ
õ4h
õTWõWõW÷Wñ Wr   r,   N)Ú
__future__r   Útwisted.internetr   Útwisted.pairr   Útwisted.trialr   rt   r   ÚTestCaser,   r   r   r   Ú<module>r‡      s=   ðõ #å %Ý õ #ô
�×*Ñ*ô 
ô.|W�(×#Ñ#ö |Wr   