
    Yf^<                        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d
S )    )annotations)	interface)ipraw)
components)unittestc                  &    e Zd ZddZddZddZdS ) 
MyProtocol	expecting(list[tuple[bytes, dict[str, str | int]]]returnNonec                .    t          |          | _        d S N)listr   )selfr   s     K/var/www/html/env/lib/python3.11/site-packages/twisted/pair/test/test_ip.py__init__zMyProtocol.__init__   s    i    databytespartialintsourcestrdestprotocolversionihltostot_lenfragment_idfragment_offsetdont_fragmentmore_fragmentsttlc           	     r   | j         s
J d            | j                             d          \  }}t          t          |                                                    }t                      }|D ]3}||         ||         k    sJ d| d||         d||                     4||k    sJ d|d|            d S )Nz(Got a packet when not expecting anymore.r   z	Expected =z, got )r   popr   sortedkeyslocals)r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   
expectDataexpectKwexpectKwKeyslocalVariablesks                       r   datagramReceivedzMyProtocol.datagramReceived   s    " ~IIIII~#~11!44
HF8==??3344 	J 	JA~a0000I1IIx{IIN14EII 1000T!!!#Kz#K#K4#K#K!!!!!r   numobjectprotoc                    d S r    )r   r3   r5   s      r   addProtozMyProtocol.addProto.   s    r   N)r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r!   r   r"   r   r#   r   r$   r   r%   r   r&   r   r   r   )r3   r4   r5   r4   r   r   )__name__
__module____qualname__r   r2   r8   r7   r   r   r
   r
      sT        ) ) ) )L L L L:     r   r
   c                  V    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dS )IPTestsr   r   c                    t          j                    }t          ddddddddd	d
dddddfg          }|                    d|           |                    ddddd           |j        rJ d|j        z              d S 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
   r8   r2   r   r   r5   p1s      r   testPacketParsingzIPTests.testPacketParsing4   s     #$ )"+$(#$! #)'-+1)**+# 
 
, 	tR   
  	 	
 	
 	
$ < 	
 	
CblR	
 	
 	
 	
r   c                T   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          }|                    d|           |                    ddddd           |                    ddddd           |j        rJ d|j        z              d S )Nr@   r   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL      quux5.4.3.26.7.8.9rM   rN   rO      T ޭFE	quuxrP   rQ   rS   s      r   testMultiplePacketszIPTests.testMultiplePacketsd   sB    #$ )"+$(#$! #)'-+1)**+# & #$ )"+$(#$! #)'-+1)**+# '%'
 '
P 	tR   
  	 	
 	
 	
" 	
  	 	
 	
 	
$ < 	
 	
Cbl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          }|                    d|           |                    d|           |                    ddddd           |j        rJ d|j        z              |j        rJ d|j        z              d S r?   rQ   r   r5   rT   p2s       r   testMultipleSameProtoszIPTests.testMultipleSameProtos   sa    #$ )"+$(#$! #)'-+1)**+# 
 
.  #$ )"+$(#$! #)'-+1)**+# 
 
. 	tR   tR   
  	 	
 	
 	
$ < 	
 	
CblR	
 	
 < 	
 	
CblR	
 	
 	
 	
r   c                    t          j                    }t          g           }|                    d|           |                    ddddd           d S )NrJ   rM   r   rN   rO   )r   rR   r
   r8   r2   rS   s      r   testWrongProtoNotSeenzIPTests.testWrongProtoNotSeen  sf    ^^q"
  	 	
 	
 	
 	
 	
r   c                |   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          }|                    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          }|                    d|           |                    ddddd           |                    d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              d S )Nr@   r   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rW   rX   rY   
   s   T ޭ
FE	quuxrN   rO   rM   rZ   s   T ޭ
FEfoobarrP   rQ   r]   s       r   testDemuxingzIPTests.testDemuxing  so    #$ )"+$(#$! #)'-+1)**+# & #$ )"+$(#$! #)'-+1)**+# '%'
 '
P 	tR    #$ )"+$(#$! #)'-+1)**+# & #$ )"+$(#$! #)'-+1)**+# '%'
 '
P 	tR   
  	 	
 	
 	
" 	
  	 	
 	
 	
" 	
  	 	
 	
 	
" 	
  	 	
 	
 	
$ < 	
 	
CblR	
 	
 < 	
 	
CblR	
 	
 	
 	
r   c                    t          j                    }	 |                    dd           t          d          # t          j        $ r Y dS w xY w)z2Adding a wrong level protocol raises an exception.*   	silliness2addProto must raise an exception for bad protocolsN)r   rR   r8   AssertionErrorr   CannotAdaptr   es     r   testAddingBadProtos_WrongLevelz&IPTests.testAddingBadProtos_WrongLevel  s_    MOO	WJJr;''' !!UVVV % 	 	 	DD	s   : AAc                    t          j                    }	 |                    dt          g                      t	          d          # t
          $ r}|j        dk    rn Y d}~dS d}~ww xY w)z=Adding a protocol with a negative number raises an exception.rh   )z'Added protocol must be positive or zeroNr   rR   r8   r
   ri   	TypeErrorargsrk   s     r   testAddingBadProtos_TooSmallz$IPTests.testAddingBadProtos_TooSmall  s    MOO	WJJr:b>>*** !!UVVV  	 	 	vEEE 	   #A 
A)A$$A)c                    t          j                    }	 |                    dt          g                      t	          d          # t
          $ r}|j        dk    rn Y d}~dS d}~ww xY w)<Adding a protocol with a number >=2**32 raises an exception.l        rh   z"Added protocol must fit in 32 bitsNrp   rk   s     r   testAddingBadProtos_TooBigz"IPTests.testAddingBadProtos_TooBig  s    MOO	WJJujnn--- !!UVVV  	 	 	v@@@ 	rt   c                    t          j                    }	 |                    dt          g                      t	          d          # t
          $ r}|j        dk    rn Y d}~dS d}~ww xY w)rv   l       rh   rw   Nrp   rk   s     r   testAddingBadProtos_TooBig2z#IPTests.testAddingBadProtos_TooBig2  s    MOO	WJJy*R..111 !!UVVV  	 	 	v@@@ 	rt   N)r   r   )r9   r:   r;   rU   r[   r_   ra   rd   rm   rs   rx   rz   r7   r   r   r=   r=   3   s        .
 .
 .
 .
`P
 P
 P
 P
dJ
 J
 J
 J
X
 
 
 
.`
 `
 `
 `
DW W W WW W W WW W W WW W W W W Wr   r=   N)
__future__r   zoper   twisted.pairr   r   twisted.pythonr   twisted.trialr   implementerIRawDatagramProtocolr
   TestCaser=   r7   r   r   <module>r      s    # " " " " "                       % % % % % % " " " " " " s/00# # # # # # # 10#LwW wW wW wW wWh wW wW wW wW wWr   