Ë
    oj^<  ã                  óÀ   — d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
  ej                  ej                  «       G d„ d«      «       Z G d„ d	e
j                  «      Zy
)é    )Úannotations)Ú	interface)ÚipÚraw)Ú
components)Úunittestc                  ó`   — e Zd Zd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_ip.pyÚ__init__zMyProtocol.__init__   s   € Ü˜i›ˆ�ó    c           	     ó2  — | j                   sJ d«       ‚| j                   j                  d«      \  }}t        t        |j	                  «       «      «      }t        «       }|D ]#  }||   ||   k(  rŒJ d|› d||   ›d||   ›�«       ‚ ||k(  sJ d|›d|›�«       ‚y )Nz(Got a packet when not expecting anymore.r   z	Expected ú=z, got )r   Úpopr   ÚsortedÚkeysÚlocals)r   ÚdataÚpartialÚsourceÚdestÚprotocolÚversionÚihlÚtosÚtot_lenÚfragment_idÚfragment_offsetÚdont_fragmentÚmore_fragmentsÚttlÚ
expectDataÚexpectKwÚexpectKwKeysÚlocalVariablesÚks                       r   ÚdatagramReceivedzMyProtocol.datagramReceived   s¾   € ð" �~Š~ÐIÐIÓIˆ~Ø#Ÿ~™~×1Ñ1°!Ó4Ñˆ
�HäœF 8§=¡=£?Ó3Ó4ˆÜ›ˆàò 	JˆAà˜‘˜~¨aÑ0Ó0ðJà˜1˜#˜Q˜x¨™{˜o¨V°NÀ1Ñ4EÐ3HÐIóJØ0ð	Jð ˜TÒ!ÐK Y¨z¨n¸FÀ4À(Ð#KÓKÑ!r   c                 ó   — y r   © )r   ÚnumÚprotos      r   ÚaddProtozMyProtocol.addProto.   s   € àr   N)r   z(list[tuple[bytes, dict[str, str | int]]]ÚreturnÚNone)r   Úbytesr   Úintr   Ústrr   r6   r   r5   r   r5   r   r5   r    r5   r!   r5   r"   r5   r#   r5   r$   r5   r%   r5   r&   r5   r2   r3   )r/   Úobjectr0   r7   r2   r3   )Ú__name__Ú
__module__Ú__qualname__r   r,   r1   r.   r   r   r
   r
      sµ   „ ó)ðLàðLð ðLð ð	Lð
 ðLð ðLð ðLð ðLð ðLð ðLð ðLð ðLð ðLð ðLð ðLð  
ó!Lô: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
)ÚIPTestsc                óô   — t        j                  «       }t        ddddddddd	d
dddddœfg«      }|j                  d|«       |j	                  ddddd¬«       |j
                  rJ d|j
                  z  «       ‚y ©Nó   foobarr   ú1.2.3.4ú5.6.7.8é   é   é   é   é   é­Þ  éï  é   éÀ   ©r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   ó   T Þ­¾ïÀFEfoobarÚdummy©r   r   r   r   ú5Should not expect any more packets, but still want %r©r   Ú
IPProtocolr
   r1   r,   r   ©r   r0   Úp1s      r   ÚtestPacketParsingzIPTests.testPacketParsing4   s¬   € Ü—‘“ˆÜð à#$Ø )Ø"+Ø$(Ø#$Ø!Ø Ø#)Ø'-Ø+1Ø)*Ø*+Ø#ñððó
ˆð, 	�‰�t˜RÔ à×Ñð
ð ØØØð 	ô 	
ð$ —<’<ð 	
ØCÀbÇlÁlÑRó	
Ð�<r   c                óB  — t        j                  «       }t        ddddddddd	d
dddddœfddddddddd	d
dddddœfg«      }|j                  d|«       |j	                  ddddd¬«       |j	                  ddddd¬«       |j
                  rJ d|j
                  z  «       ‚y )Nr?   r   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   ó   quuxú5.4.3.2ú6.7.8.9rL   rM   rN   ó   T Þ­¾ïÀFE	quuxrO   rP   rR   s      r   ÚtestMultiplePacketszIPTests.testMultiplePacketsd   s  € Ü—‘“ˆÜð à#$Ø )Ø"+Ø$(Ø#$Ø!Ø Ø#)Ø'-Ø+1Ø)*Ø*+Ø#ñðð& à#$Ø )Ø"+Ø$(Ø#$Ø!Ø Ø#)Ø'-Ø+1Ø)*Ø*+Ø#ñðð'%ó'
ˆðP 	�‰�t˜RÔ Ø×Ñð
ð ØØØð 	ô 	
ð" 	×Ñð
ð ØØØð 	ô 	
ð$ —<’<ð 	
ØCÀbÇlÁlÑRó	
Ð�<r   c                ó�  — t        j                  «       }t        ddddddddd	d
dddddœfg«      }t        ddddddddd	d
dddddœfg«      }|j                  d|«       |j                  d|«       |j	                  ddddd¬«       |j
                  rJ d|j
                  z  «       ‚|j
                  rJ d|j
                  z  «       ‚y r>   rP   ©r   r0   rS   Úp2s       r   ÚtestMultipleSameProtoszIPTests.testMultipleSameProtos¶   s#  € Ü—‘“ˆÜð à#$Ø )Ø"+Ø$(Ø#$Ø!Ø Ø#)Ø'-Ø+1Ø)*Ø*+Ø#ñððó
ˆô. ð à#$Ø )Ø"+Ø$(Ø#$Ø!Ø Ø#)Ø'-Ø+1Ø)*Ø*+Ø#ñððó
ˆð. 	�‰�t˜RÔ Ø�‰�t˜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¬«       y )NrI   rL   r   rM   rN   )r   rQ   r
   r1   r,   rR   s      r   ÚtestWrongProtoNotSeenzIPTests.testWrongProtoNotSeen  sJ   € Ü—‘“ˆÜ˜‹^ˆØ�‰�q˜"Ôà×Ñð
ð ØØØð 	õ 	
r   c                óX  — t        j                  «       }t        ddddddddd	d
dddddœfddddddddd	d
dddddœfg«      }|j                  d|«       t        ddddddddd	d
dddddœfddddddddd	d
dddddœfg«      }|j                  d|«       |j	                  ddddd¬«       |j	                  ddddd¬«       |j	                  ddddd¬«       |j	                  ddddd¬«       |j
                  rJ d|j
                  z  «       ‚|j
                  rJ d|j
                  z  «       ‚y )Nr?   r   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rV   rW   rX   é
   s   T Þ­¾ïÀ
FE	quuxrM   rN   rL   rY   s   T Þ­¾ïÀ
FEfoobarrO   rP   r\   s       r   ÚtestDemuxingzIPTests.testDemuxing  s	  € Ü—‘“ˆÜð à#$Ø )Ø"+Ø$(Ø#$Ø!Ø Ø#)Ø'-Ø+1Ø)*Ø*+Ø#ñðð& à#$Ø )Ø"+Ø$(Ø#$Ø!Ø Ø#)Ø'-Ø+1Ø)*Ø*+Ø#ñðð'%ó'
ˆðP 	�‰�t˜RÔ äð à#$Ø )Ø"+Ø$(Ø#$Ø!Ø Ø#)Ø'-Ø+1Ø)*Ø*+Ø#ñðð& à#$Ø )Ø"+Ø$(Ø#$Ø!Ø Ø#)Ø'-Ø+1Ø)*Ø*+Ø#ñðð'%ó'
ˆðP 	�‰�t˜RÔ à×Ñð
ð ØØØð 	ô 	
ð" 	×Ñð
ð ØØØð 	ô 	
ð" 	×Ñð
ð ØØØð 	ô 	
ð" 	×Ñð
ð ØØØð 	ô 	
ð$ —<’<ð 	
ØCÀbÇlÁlÑRó	
Ðð —<’<ð 	
ØCÀbÇlÁlÑRó	
Ð�<r   c                ó˜   — t        j                  «       }	 |j                  dd«       t        d«      ‚# t        j
                  $ r Y yw xY w)z2Adding a wrong level protocol raises an exception.é*   Ú	sillinessú2addProto must raise an exception for bad protocolsN)r   rQ   r1   ÚAssertionErrorr   ÚCannotAdapt©r   Úes     r   ÚtestAddingBadProtos_WrongLevelz&IPTests.testAddingBadProtos_WrongLevel»  sI   € ä�M‰M‹Oˆð	WØ�J‰J�r˜;Ô'ô !Ð!UÓVÐVøô ×%Ñ%ò 	Ùð	ús   –3 ³A	ÁA	c                óÆ   — t        j                  «       }	 |j                  dt        g «      «       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.éÿÿÿÿrg   )z'Added protocol must be positive or zeroN©r   rQ   r1   r
   rh   Ú	TypeErrorÚargsrj   s     r   ÚtestAddingBadProtos_TooSmallz$IPTests.testAddingBadProtos_TooSmallÅ  s]   € ä�M‰M‹Oˆð	WØ�J‰J�rœ: b›>Ô*ô !Ð!UÓVÐVøô ò 	Ø�v‰vÐEÒEØàô ûð	úó   –< ¼	A ÁAÁA c                óÆ   — t        j                  «       }	 |j                  dt        g «      «       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**32 raises an exception.l        rg   ©z"Added protocol must fit in 32 bitsNro   rj   s     r   ÚtestAddingBadProtos_TooBigz"IPTests.testAddingBadProtos_TooBigÒ  s]   € ä�M‰M‹Oˆð	WØ�J‰J�uœj¨›nÔ-ô !Ð!UÓVÐVøô ò 	Ø�v‰vÐ@Ò@Øàô ûð	úrs   c                óÆ   — t        j                  «       }	 |j                  dt        g «      «       t	        d«      ‚# t
        $ r}|j                  dk(  rn‚ Y d}~yd}~ww xY w)ru   l       rg   rv   Nro   rj   s     r   ÚtestAddingBadProtos_TooBig2z#IPTests.testAddingBadProtos_TooBig2ß  s]   € ä�M‰M‹Oˆð	WØ�J‰J�y¤*¨R£.Ô1ô !Ð!UÓVÐVøô ò 	Ø�v‰vÐ@Ò@Øàô ûð	úrs   N)r2   r3   )r8   r9   r:   rT   rZ   r^   r`   rc   rl   rr   rw   ry   r.   r   r   r<   r<   3   s:   „ ó.
ó`P
ódJ
óX
ó.`
óDWóWóWôWr   r<   N)Ú
__future__r   Úzoper   Útwisted.pairr   r   Útwisted.pythonr   Útwisted.trialr   ÚimplementerÚIRawDatagramProtocolr
   ÚTestCaser<   r.   r   r   ú<module>r‚      sY   ðõ #å ç  Ý %Ý "ð €×Ñ�s×/Ñ/Ó0÷#ð #ó 1ð#ôLwWˆh×Ñõ wWr   