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"   



$