
    Vh)                        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     M/home/dcms/DCMS/lib/python3.12/site-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   testHostiC       C ޭfoobarr      dummyr(   partialdestsourcer   versionihltostot_lenfragment_idfragment_offsetdont_fragmentmore_fragmentsttl5Should not expect any more packets, but still want %rr   RawUDPProtocolr   addProtor   r   r   protop1s      r   testPacketParsingzRawUDPTests.testPacketParsing$   s    %%'0

 	vr"
  $"#% 	 	
* << 	
Cbll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	   otherHosti3  r)   r*   r   r+   r(   r,      3 ޭquuxrD   r9   r:   r=   s      r   testMultiplePacketszRawUDPTests.testMultiplePacketsF   s    %%'0/
 	vr"
  $"#% 	 	
( 	
  $"#% 	 	
* << 	
Cbll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
 	vr"vr"
  $"#% 	 	
* << 	
CbllR	
 << 	
Cbll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/
 	vr"/0
 	vr"
  $"#% 	 	
( 	
  $"#% 	 	
( 	
  $"#% 	 	
( 	
  $"#% 	 	
* << 	
CbllR	
 << 	
Cbll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.*   	silliness2addProto 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JJr;' !!UVV  	vv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JJr84467 !!UVV  	vv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JJuh779: !!UVV  	vv@@ 	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JJy(";";"=> !!UVV  	vv@@ 	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   