U
    
W[|  ã                   @   sŠ   d Z ddlmZmZ ddlZddlmZ ddlmZ zddl	m
Z
mZ dZW n ek
rd   dZY nX dd	„ Zd
d„ ZG dd„ deƒZdS )z.
Tests for L{twisted.internet.kqueuereactor}.
é    )ÚdivisionÚabsolute_importN)Úimplementer)ÚTestCase)ÚKQueueReactorÚ_IKQueuezKQueue not available.c                  O   s   dS )z
    Do nothing.
    N© )ÚargsÚkwargsr   r   úJ/usr/lib/python3/dist-packages/twisted/internet/test/test_kqueuereactor.pyÚ_fakeKEvent   s    r   c                    s$   t tƒG ‡ ‡fdd„dtƒƒ}|ƒ S )a  
    Create a fake that implements L{_IKQueue}.

    @param testKQueue: Something that acts like L{select.kqueue}.
    @param testKEvent: Something that acts like L{select.kevent}.
    @return: An implementation of L{_IKQueue} that includes C{testKQueue} and
        C{testKEvent}.
    c                       s   e Zd Z”Z” ZdS )z"makeFakeKQueue.<locals>.FakeKQueueN)Ú__name__Ú
__module__Ú__qualname__ZkqueueZkeventr   ©Ú
testKEventÚ
testKQueuer   r   Ú
FakeKQueue'   s   r   )r   r   Úobject)r   r   r   r   r   r   ÚmakeFakeKQueue   s    	r   c                   @   s   e Zd ZdZeZdd„ ZdS )ÚKQueueTestsz¯
    These are tests for L{KQueueReactor}'s implementation, not its real world
    behaviour. For that, look at
    L{twisted.internet.test.reactormixins.ReactorBuilder}.
    c                 C   s,   G dd„ dt ƒ}tt|tƒƒ}| d¡ dS )zV
        L{KQueueReactor} handles L{errno.EINTR} in C{doKEvent} by returning.
        c                   @   s   e Zd ZdZdd„ ZdS )z*KQueueTests.test_EINTR.<locals>.FakeKQueuez™
            A fake KQueue that raises L{errno.EINTR} when C{control} is called,
            like a real KQueue would if it was interrupted.
            c                 _   s   t tjdƒ‚d S )NZInterrupted)ÚOSErrorÚerrnoZEINTR)Úselfr	   r
   r   r   r   ÚcontrolA   s    z2KQueueTests.test_EINTR.<locals>.FakeKQueue.controlN)r   r   r   Ú__doc__r   r   r   r   r   r   <   s   r   r   N)r   r   r   r   ZdoKEvent)r   r   Zreactorr   r   r   Ú
test_EINTR8   s    zKQueueTests.test_EINTRN)r   r   r   r   Ú
kqueueSkipÚskipr   r   r   r   r   r   0   s   r   )r   Z
__future__r   r   r   Zzope.interfacer   Ztwisted.trial.unittestr   Ztwisted.internet.kqreactorr   r   r   ÚImportErrorr   r   r   r   r   r   r   Ú<module>   s   
