
    YfF                     >   d 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  G d de          Z G d	 d
e          Z e                                e                                            e                                e                                           dS )z/
Tests for implementations of L{IReactorTime}.
    )IReactorThreadsIReactorTime)ReactorBuilder)msg)platform)SkipTestc                   $    e Zd ZdZefZd Zd ZdS )TimeTestsBuilderzA
    Builder for defining tests relating to L{IReactorTime}.
    c                     |                                  }|                    d|j                   |                                 dS )z?
        The reactor can be stopped by a delayed call.
        r   N)buildReactor	callLaterstoprun)selfreactors     Q/var/www/html/env/lib/python3.11/site-packages/twisted/internet/test/test_time.pytest_delayedCallStopsReactorz-TimeTestsBuilder.test_delayedCallStopsReactor   s>     ##%%!W\***    c                    |                                  t          j                  rd nt          d                              ddz  dz   d           }fd fd                                            |                     |                                           |                     |	                                           d	S )
z
        Scheduling a delayed call at a point in the extreme future does not
        prevent normal reactor operation.
        c                 R    t          d|           |                     |           d S )Nz.Thread-based event-source scheduling %(event)r)formatevent)r   callFromThread)r   r   s     r   eventSourcez=TimeTestsBuilder.test_distantDelayedCall.<locals>.eventSource&   s;    KSX    &&u-----r   z=Do not know how to synthesize non-time event to stop the test         c                      d S N r    r   r   <lambda>z:TimeTestsBuilder.test_distantDelayedCall.<locals>.<lambda>2   s    D r   c                  N    t          d                                             d S )NzStopping the reactor)r   r   )r   s   r   r   z6TimeTestsBuilder.test_distantDelayedCall.<locals>.stop4   s#    &'''LLNNNNNr   c                                  S r   r    )r   r   r   s   r   r!   z:TimeTestsBuilder.test_distantDelayedCall.<locals>.<lambda><   s    [[$%?%? r   N)
r   r   
providedByr   r   r   
assertTrueactiveassertIngetDelayedCalls)r   delayedCallr   r   r   s     @@@r   test_distantDelayedCallz(TimeTestsBuilder.test_distantDelayedCall   s	   
 ##%%%g.. 	. . . . O  
 ''3
LLAA	 	 	 	 	 	G??????@@@ 	 	**,,---k7#:#:#<#<=====r   N)__name__
__module____qualname____doc__r   requiredInterfacesr   r*   r    r   r   r
   r
      sF          '  *> *> *> *> *>r   r
   c                   F    e Zd ZdZefZ ej                    rdndgZd Z	dS )GlibTimeTestsBuilderza
    Builder for defining tests relating to L{IReactorTime} for reactors based
    off glib.
    z,twisted.internet.gireactor.PortableGIReactorz$twisted.internet.gireactor.GIReactorc                     ddl m} |                                 g fd}fd                    |j        d|           |                     d           |                     dg           dS )	z
        A
        L{reactor.callLater<twisted.internet.interfaces.IReactorTime.callLater>}
        call scheduled from a C{gobject.timeout_add}
        call is run on time.
        r   )GObjectc                  4                         d            dS )Nr   )r   )callbackr   s   r   	gschedulez8GlibTimeTestsBuilder.test_timeout_add.<locals>.gschedulef   s    a***1r   c                  Z                         d                                             d S )NT)appendr   )r   results   r   r5   z7GlibTimeTestsBuilder.test_timeout_add.<locals>.callbackj   s&    MM$LLNNNNNr   
      TN)gi.repositoryr3   r   callWhenRunningtimeout_add
runReactorassertEqual)r   r3   r6   r5   r   r9   s      @@@r   test_timeout_addz%GlibTimeTestsBuilder.test_timeout_addY   s     	*)))))##%%	 	 	 	 	 		 	 	 	 	 	 	 3RCCC###$(((((r   N)
r+   r,   r-   r.   r   r/   r   	isWindows	_reactorsrA   r    r   r   r1   r1   K   s\         
 ' 8	4663I) ) ) ) )r   r1   N)r.   twisted.internet.interfacesr   r   #twisted.internet.test.reactormixinsr   twisted.python.logr   twisted.python.runtimer   twisted.trial.unittestr   r
   r1   globalsupdatemakeTestCaseClassesr    r   r   <module>rL      s    F E E E E E E E > > > > > > " " " " " " + + + + + + + + + + + +9> 9> 9> 9> 9>~ 9> 9> 9>x%) %) %) %) %)> %) %) %)P 		  !5577 8 8 8 		  %99;; < < < < <r   