o
    >h                     @  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otherlinux2ntwin32darwinc                   @  s.   e Zd ZdZdddZddd	Z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.
    r   Callable[..., object]returnNonec                 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   /var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-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_linux3   s   zPollReactorTests.test_linuxN)r   r   r   r   r   r   )__name__r   __qualname____doc__r    r"   r$   r   r   r   r   r      s
    


r   c                   @  $   e Zd ZdZd	ddZ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     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      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_windowsL   r.   zSelectReactorTests.test_windowsNr%   )r&   r   r'   r(   r-   r0   r   r   r   r   r*   ?   s    
r*   c                   @  r)   )
InstallationTestsz7
    Tests for actual installation of the reactor.
    r   r   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_installY   s   "zInstallationTests.test_installc                   sv   g  d
 fdd}|  td| t  ddlm} | t| |  dg W d	   d	S 1 s4w   Y  d	S )zr
        Importing L{twisted.internet.reactor} installs the default reactor if
        none is installed.
        r   objectc                     s     d t S )NT)appendr   r   	installedr   r   	installerh   s   
z1InstallationTests.test_reactor.<locals>.installerr   r   )reactorTN)r   r6   )	patchr   r   twisted.internetr;   
assertTruer   
providedByr   )r   r:   r;   r   r8   r   test_reactora   s   "zInstallationTests.test_reactorNr%   )r&   r   r'   r(   r5   r@   r   r   r   r   r1   T   s    
r1   )r(   
__future__r   r   r3   typingr   r=   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*   r1   r   r   r   r   <module>   s&   



$