o
    b                     @   sb   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 )
    )implementer)ethernetraw)
components)unittestc                   @   s$   e Zd Zdd Zdd Zdd ZdS )
MyProtocolc                 C   s   t || _d S )N)list	expecting)selfr	    r   A/usr/lib/python3/dist-packages/twisted/pair/test/test_ethernet.py__init__   s   zMyProtocol.__init__c                 C   s   dS )z!
        Not implemented
        Nr   )r
   numprotor   r   r   addProto   s    zMyProtocol.addProtoc           	      C   sR   | j sJ d| j d}t }||||d}|||fks'J d|||fd S )Nz(Got a packet when not expecting anymore.r   partialdestsourceprotocolzExpected {!r}, got {!r})r	   poplocalsformat)	r
   datar   r   r   r   expectlocalVariablesparamsr   r   r   datagramReceived   s   
zMyProtocol.datagramReceivedN)__name__
__module____qualname__r   r   r   r   r   r   r   r   
   s    r   c                   @   sT   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 )EthernetTestsc                 C   sR   t  }tddddddfg}|d| |jddd |jr'J d	|j d S )
N   foobarr      123456   987654   r      123456987654 foobarr   5Should not expect any more packets, but still want %rr   EthernetProtocolr   r   r   r	   r
   r   p1r   r   r   testPacketParsing$   s    zEthernetTests.testPacketParsingc                 C   sp   t  }tddddddfddd	d
ddfg}|d| |jddd |jddd |jr6J d|j d S )Nr"   r   r#   r$   r%   r      quux      012345   abcdefr&   r'      012345abcdef quuxr(   r)   r+   r   r   r   testMultiplePackets;   s0   
z!EthernetTests.testMultiplePacketsc                 C   s   t  }tddddddfg}tddddddfg}|d| |d| |jddd |jr:J d	|j|jrEJ d	|jd S )
Nr"   r   r#   r$   r%   r   r&   r'   z7Should not expect any more packets, but still want {!r})r   r*   r   r   r   r	   r   r
   r   r,   p2r   r   r   testMultipleSameProtos\   sH   z$EthernetTests.testMultipleSameProtosc                 C   s<   t  }tg }|d| |jddd |jddd d S )Ni  r&   r   r'   r2   r/   )r   r*   r   r   r   r+   r   r   r   testWrongProtoNotSeen   s
   z#EthernetTests.testWrongProtoNotSeenc                 C   s   t  }tddddddfddd	d
ddfg}|d| tddd	d
ddfddddddfg}|d| |jddd |jddd |jddd |jddd |jr^J d|j |jrhJ d|j d S )Nr"   r   r#   r$   r%   r   r.   r/   r0   r1   i  r&   r'   s   012345abcdefquuxs   123456987654foobarr2   r(   r)   r4   r   r   r   testDemuxing   s^   

zEthernetTests.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   r*   r   r   CannotAdaptAssertionErrorr
   er   r   r   testAddingBadProtos_WrongLevel   s   z,EthernetTests.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   r*   r   r   	TypeErrorargsr=   r>   r   r   r   testAddingBadProtos_TooSmall      
z*EthernetTests.testAddingBadProtos_TooSmallc              
   C   rA   )<Adding a protocol with a number >=2**16 raises an exception.i   z"Added protocol must fit in 16 bitsNr;   rC   r>   r   r   r   testAddingBadProtos_TooBig   rG   z(EthernetTests.testAddingBadProtos_TooBigc              
   C   rA   )rH   i  rI   Nr;   rC   r>   r   r   r   testAddingBadProtos_TooBig2   rG   z)EthernetTests.testAddingBadProtos_TooBig2N)r   r   r    r-   r3   r6   r7   r8   r@   rF   rJ   rK   r   r   r   r   r!   #   s    !.>
r!   N)zope.interfacer   twisted.pairr   r   twisted.pythonr   twisted.trialr   IRawPacketProtocolr   TestCaser!   r   r   r   r   <module>   s   