U
    Â“«jþ  ã                   @  sà   d Z ddlmZ ddlZddlZ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 dd	lmZ dd
lmZ ddlmZ eddƒZeddƒZeddƒZeddƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )z(
Tests for L{twisted.internet.default}.
é    )ÚannotationsN)ÚCallable)Údefault)Ú_getInstallFunctionÚinstall)ÚIReactorCore)Ú	NoReactor)ÚrequireModule)ÚPlatform)ÚSynchronousTestCaseÚposixÚotherZlinux2ÚntÚwin32Údarwinc                   @  s<   e Zd ZdZdddœdd„Zddœdd	„Zddœd
d„ZdS )ÚPollReactorTestszŽ
    Tests for the cases of L{twisted.internet.default._getInstallFunction}
    in which it picks the poll(2) or epoll(7)-based reactors.
    zCallable[..., object]ÚNone)r   Úreturnc                 C  s,   t tdƒr|  |jd¡ n|  |jd¡ dS )zz
        Assert the given function will install the poll() reactor, or select()
        if poll() is unavailable.
        Úpollztwisted.internet.pollreactorútwisted.internet.selectreactorN)ÚhasattrÚselectÚassertEqualÚ
__module__©Úselfr   © r   úF/tmp/pip-unpacked-wheel-59kc99xd/twisted/internet/test/test_default.pyÚassertIsPoll!   s    
zPollReactorTests.assertIsPoll©r   c                 C  s   t tƒ}|  |¡ dS )z–
        L{_getInstallFunction} chooses the poll reactor on arbitrary Unix
        platforms, falling back to select(2) if it is unavailable.
        N)r   Úunixr   r   r   r   r   Ú	test_unix+   s    zPollReactorTests.test_unixc                 C  s2   t tƒ}tdƒdkr |  |¡ n|  |jd¡ dS )zu
        L{_getInstallFunction} chooses the epoll reactor on Linux, or poll if
        epoll is unavailable.
        ztwisted.internet.epollreactorN)r   Úlinuxr	   r   r   r   r   r   r   r   Ú
test_linux3   s    zPollReactorTests.test_linuxN)Ú__name__r   Ú__qualname__Ú__doc__r   r!   r#   r   r   r   r   r      s   
r   c                   @  s,   e Zd ZdZddœdd„Zddœdd„ZdS )	ÚSelectReactorTestszƒ
    Tests for the cases of L{twisted.internet.default._getInstallFunction}
    in which it picks the select(2)-based reactor.
    r   r   c                 C  s   t tƒ}|  |jd¡ dS )zM
        L{_getInstallFunction} chooses the select reactor on macOS.
        r   N)r   Úosxr   r   r   r   r   r   Útest_osxE   s    zSelectReactorTests.test_osxc                 C  s   t tƒ}|  |jd¡ dS )zO
        L{_getInstallFunction} chooses the select reactor on Windows.
        r   N)r   Úwindowsr   r   r   r   r   r   Útest_windowsL   s    zSelectReactorTests.test_windowsN)r$   r   r%   r&   r)   r+   r   r   r   r   r'   ?   s   r'   c                   @  s,   e Zd ZdZddœdd„Zddœdd„ZdS )	ÚInstallationTestsz7
    Tests for actual installation of the reactor.
    r   r   c              	   C  s*   t ƒ � tƒ  |  dtj¡ W 5 Q R X dS )z0
        L{install} installs a reactor.
        ztwisted.internet.reactorN)r   r   ZassertInÚsysÚmodules)r   r   r   r   Útest_installY   s    zInstallationTests.test_installc              	     sd   g ‰ ddœ‡ fdd„}|   td|¡ tƒ �0 ddlm} |  t |¡¡ |  ˆ dg¡ W 5 Q R X d	S )
zr
        Importing L{twisted.internet.reactor} installs the default reactor if
        none is installed.
        Úobjectr   c                     s   ˆ   d¡ tƒ S )NT)Úappendr   r   ©Ú	installedr   r   Ú	installerh   s    
z1InstallationTests.test_reactor.<locals>.installerr   r   )ÚreactorTN)	Úpatchr   r   Útwisted.internetr5   Ú
assertTruer   Z
providedByr   )r   r4   r5   r   r2   r   Útest_reactora   s    zInstallationTests.test_reactorN)r$   r   r%   r&   r/   r9   r   r   r   r   r,   T   s   r,   )r&   Ú
__future__r   r   r-   Útypingr   r7   r   Ztwisted.internet.defaultr   r   Ztwisted.internet.interfacesr   Ztwisted.internet.test.test_mainr   Ztwisted.python.reflectr	   Ztwisted.python.runtimer
   Ztwisted.trial.unittestr   r    r"   r*   r(   r   r'   r,   r   r   r   r   Ú<module>   s$   



$