o
    >h^<                     @  sp   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ejG dd dZG dd	 d	e
jZd
S )    )annotations)	interface)ipraw)
components)unittestc                   @  s*   e Zd Zd ddZd!ddZd"ddZdS )#
MyProtocol	expecting(list[tuple[bytes, dict[str, str | int]]]returnNonec                 C  s   t || _d S N)listr	   )selfr	    r   y/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/twisted/pair/test/test_ip.py__init__   s   zMyProtocol.__init__databytespartialintsourcestrdestprotocolversionihltostot_lenfragment_idfragment_offsetdont_fragmentmore_fragmentsttlc              	   C  s   | j sJ d| j d\}}tt| }t }|D ]}|| || ks7J d| d|| d|| q||ksFJ 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kr   r   r   datagramReceived   s    zMyProtocol.datagramReceivednumobjectprotoc                 C  s   d S r   r   )r   r/   r1   r   r   r   addProto.   s   zMyProtocol.addProtoN)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   )r/   r0   r1   r0   r   r   )__name__
__module____qualname__r   r.   r2   r   r   r   r   r      s    

r   c                   @  sf   e Zd ZdddZdddZdddZdd	d
ZdddZdddZdddZ	dddZ
dddZdS )IPTestsr   r   c                 C  sj   t  }tddddddddd	d
dddddfg}|d| |jdddddd |jr3J d|j 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   r2   r.   r	   r   r1   p1r   r   r   testPacketParsing4   s>   zIPTests.testPacketParsingc                 C  s   t  }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| |jdddddd |jdddddd |jrNJ d|j d S )Nr8   r   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD      quux5.4.3.26.7.8.9rE   rF   rG      T ޭFE	quuxrH   rI   rK   r   r   r   testMultiplePacketsd   sl   (zIPTests.testMultiplePacketsc                 C  s   t  }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| |jdddddd |jrNJ d|j |jrXJ d|j d S r7   rI   r   r1   rL   p2r   r   r   testMultipleSameProtos   sl   zIPTests.testMultipleSameProtosc                 C  s4   t  }tg }|d| |jdddddd d S )NrB   rE   r   rF   rG   )r   rJ   r   r2   r.   rK   r   r   r   testWrongProtoNotSeen  s   
zIPTests.testWrongProtoNotSeenc                 C  s4  t  }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| |jdddddd |jdddddd |jdddddd |jdddddd |jrJ d|j |jrJ d|j d S )Nr8   r   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rN   rO   rP   
   s   T ޭ
FE	quuxrF   rG   rE   rQ   s   T ޭ
FEfoobarrH   rI   rS   r   r   r   testDemuxing  s   ((zIPTests.testDemuxingc                 C  s6   t  }z|dd W td tjy   Y dS w )z2Adding a wrong level protocol raises an exception.*   	silliness2addProto must raise an exception for bad protocolsN)r   rJ   r2   r   CannotAdaptAssertionErrorr   er   r   r   testAddingBadProtos_WrongLevel  s   z&IPTests.testAddingBadProtos_WrongLevelc              
   C  X   t  }z|dtg  W td ty+ } z|jdkrn W Y d}~dS d}~ww )z=Adding a protocol with a negative number raises an exception.)z'Added protocol must be positive or zeroNr[   r   rJ   r2   r   	TypeErrorargsr]   r^   r   r   r   testAddingBadProtos_TooSmall     
z$IPTests.testAddingBadProtos_TooSmallc              
   C  ra   )<Adding a protocol with a number >=2**32 raises an exception.l        z"Added protocol must fit in 32 bitsNr[   rc   r^   r   r   r   testAddingBadProtos_TooBig  rg   z"IPTests.testAddingBadProtos_TooBigc              
   C  ra   )rh   l       ri   Nr[   rc   r^   r   r   r   testAddingBadProtos_TooBig2  rg   z#IPTests.testAddingBadProtos_TooBig2N)r   r   )r3   r4   r5   rM   rR   rU   rV   rX   r`   rf   rj   rk   r   r   r   r   r6   3   s    

0
R
L
 
#


r6   N)
__future__r   zoper   twisted.pairr   r   twisted.pythonr   twisted.trialr   implementerIRawDatagramProtocolr   TestCaser6   r   r   r   r   <module>   s   
&