o
    ¯b[  ã                   @   sÈ   d Z ddlZddl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}.
é    N)Údefault)Ú_getInstallFunctionÚinstall)ÚIReactorCore)Ú	NoReactor)ÚrequireModule)ÚPlatform)ÚSynchronousTestCaseÚposixÚotherÚlinux2ÚntÚwin32Údarwinc                   @   s(   e Zd ZdZdd„ Zdd„ Z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.
    c                 C   s.   t tdƒr|  |jd¡ dS |  |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   úD/usr/lib/python3/dist-packages/twisted/internet/test/test_default.pyÚassertIsPoll    s   
zPollReactorTests.assertIsPollc                 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   s4   t tƒ}tdƒdu r|  |¡ dS |  |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_linux2   s   zPollReactorTests.test_linuxN)Ú__name__r   Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r      s
    
r   c                   @   ó    e Zd ZdZdd„ Z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.
    c                 C   ó   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_osxD   ó   zSelectReactorTests.test_osxc                 C   r%   )zO
        L{_getInstallFunction} chooses the select reactor on Windows.
        r   N)r   Úwindowsr   r   r   r   r   r   Útest_windowsK   r(   zSelectReactorTests.test_windowsN)r    r   r!   r"   r'   r*   r   r   r   r   r$   >   s    r$   c                   @   r#   )ÚInstallationTestsz7
    Tests for actual installation of the reactor.
    c                 C   s@   t ƒ � tƒ  |  dtj¡ W d  ƒ dS 1 sw   Y  dS )z0
        L{install} installs a reactor.
        ztwisted.internet.reactorN)r   r   ÚassertInÚsysÚmodules)r   r   r   r   Útest_installX   s   "þzInstallationTests.test_installc                    st   g ‰ ‡ fdd„}|   td|¡ tƒ � ddlm} |  t |¡¡ |  ˆ dg¡ W d  ƒ dS 1 s3w   Y  dS )zr
        Importing L{twisted.internet.reactor} installs the default reactor if
        none is installed.
        c                      s   ˆ   d¡ tƒ S )NT)Úappendr   r   ©Ú	installedr   r   Ú	installerg   s   
z1InstallationTests.test_reactor.<locals>.installerr   r   )ÚreactorTN)	Úpatchr   r   Útwisted.internetr4   Ú
assertTruer   Ú
providedByr   )r   r3   r4   r   r1   r   Útest_reactor`   s   "üzInstallationTests.test_reactorN)r    r   r!   r"   r/   r9   r   r   r   r   r+   S   s    r+   )r"   r   r-   r6   r   Útwisted.internet.defaultr   r   Útwisted.internet.interfacesr   Útwisted.internet.test.test_mainr   Útwisted.python.reflectr   Útwisted.python.runtimer   Útwisted.trial.unittestr	   r   r   r)   r&   r   r$   r+   r   r   r   r   Ú<module>   s"   



$