
    Vh                       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e      Z G d de      Z G d de      Zy)z(
Tests for L{twisted.internet.default}.
    )annotationsN)Callable)default)_getInstallFunctioninstall)IReactorCore)	NoReactor)requireModule)Platform)SynchronousTestCaseposixotherlinux2ntwin32darwinc                  (    e Zd ZdZddZddZddZy)PollReactorTestsz
    Tests for the cases of L{twisted.internet.default._getInstallFunction}
    in which it picks the poll(2) or epoll(7)-based reactors.
    c                    t        t        d      r| j                  |j                  d       y| j                  |j                  d       y)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   s     R/home/dcms/DCMS/lib/python3.12/site-packages/twisted/internet/test/test_default.pyassertIsPollzPollReactorTests.assertIsPoll!   s<    
 66"W//1OPW//1QR    c                D    t        t              }| j                  |       y)z
        L{_getInstallFunction} chooses the poll reactor on arbitrary Unix
        platforms, falling back to select(2) if it is unavailable.
        N)r   unixr   r   s     r   	test_unixzPollReactorTests.test_unix+   s    
 &d+'"r    c                    t        t              }t        d      | j                  |       y| j	                  |j
                  d       y)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   s     r   
test_linuxzPollReactorTests.test_linux3   s?    
 &e,89Ag&W//1PQr    N)r   zCallable[..., object]returnNoner'   r(   )__name__r   __qualname____doc__r   r#   r&    r    r   r   r      s    
S#	Rr    r   c                       e Zd ZdZddZddZy)SelectReactorTestsz
    Tests for the cases of L{twisted.internet.default._getInstallFunction}
    in which it picks the select(2)-based reactor.
    c                Z    t        t              }| j                  |j                  d       y)zM
        L{_getInstallFunction} chooses the select reactor on macOS.
        r   N)r   osxr   r   r   s     r   test_osxzSelectReactorTests.test_osxE   s%     &c*++-MNr    c                Z    t        t              }| j                  |j                  d       y)zO
        L{_getInstallFunction} chooses the select reactor on Windows.
        r   N)r   windowsr   r   r   s     r   test_windowszSelectReactorTests.test_windowsL   s%     &g.++-MNr    Nr)   )r*   r   r+   r,   r2   r5   r-   r    r   r/   r/   ?   s    
OOr    r/   c                       e Zd ZdZddZddZy)InstallationTestsz7
    Tests for actual installation of the reactor.
    c                    t               5  t                | j                  dt        j                         ddd       y# 1 sw Y   yxY w)z0
        L{install} installs a reactor.
        ztwisted.internet.reactorN)r	   r   assertInsysmodules)r   s    r   test_installzInstallationTests.test_installY   s:     [ 	CIMM4ckkB	C 	C 	Cs	   +?Ac                    g dfd}| j                  t        d|       t               5  ddlm} | j                  t        j                  |             | j                  dg       ddd       y# 1 sw Y   yxY w)zr
        Importing L{twisted.internet.reactor} installs the default reactor if
        none is installed.
        c                 :     j                  d       t               S )NT)appendr   )	installeds   r   	installerz1InstallationTests.test_reactor.<locals>.installerh   s    T"9r    r   r   )reactorTN)r'   object)	patchr   r	   twisted.internetrB   
assertTruer   
providedByr   )r   rA   rB   r@   s      @r   test_reactorzInstallationTests.test_reactora   sg    
 !#		 	

7Iy1[ 	00OOL33G<=Y/		0 	0 	0s   >A22A;Nr)   )r*   r   r+   r,   r<   rH   r-   r    r   r7   r7   T   s    C0r    r7   )r,   
__future__r   r   r:   typingr   rE   r   twisted.internet.defaultr   r   twisted.internet.interfacesr   twisted.internet.test.test_mainr	   twisted.python.reflectr
   twisted.python.runtimer   twisted.trial.unittestr   r"   r%   r4   r1   r   r/   r7   r-   r    r   <module>rQ      s    #  
  $ A 4 5 0 + 6!(#
4
!w!!R* !RHO, O*0+ 0r    