
    VhF                        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       j                  ej!                                 e       j                  ej!                                y)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y)TimeTestsBuilderzA
    Builder for defining tests relating to L{IReactorTime}.
    c                 |    | j                         }|j                  d|j                         |j                          y)z?
        The reactor can be stopped by a delayed call.
        r   N)buildReactor	callLaterstoprun)selfreactors     O/home/dcms/DCMS/lib/python3.12/site-packages/twisted/internet/test/test_time.pytest_delayedCallStopsReactorz-TimeTestsBuilder.test_delayedCallStopsReactor   s/     ##%!W\\*    c                 h   | j                         t        j                        rd nt        d      j	                  ddz  dz   d       }fd fd       j                          | j                  |j                                | j                  |j                                y	)
z
        Scheduling a delayed call at a point in the extreme future does not
        prevent normal reactor operation.
        c                 @    t        d|       | j                  |       y )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                       y N r    r   r   <lambda>z:TimeTestsBuilder.test_distantDelayedCall.<locals>.<lambda>2   s    r   c                  <    t        d        j                          y )NzStopping the reactor)r   r   )r   s   r   r   z6TimeTestsBuilder.test_distantDelayedCall.<locals>.stop4   s    &'LLNr   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
LA	 	G?@ 	 	**,-k7#:#:#<=r   N)__name__
__module____qualname____doc__r   requiredInterfacesr   r*   r    r   r   r
   r
      s     '*>r   r
   c                   H    e Zd ZdZefZ ej                         rdndgZd Z	y)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} | j                         g fd}fdj                  |j                  d|       | j                  d       | j                  dg       y)	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                  *    j                  d        y)Nr   )r   )callbackr   s   r   	gschedulez8GlibTimeTestsBuilder.test_timeout_add.<locals>.gschedulef   s    a*r   c                  H    j                  d        j                          y )NT)appendr   )r   results   r   r5   z7GlibTimeTestsBuilder.test_timeout_add.<locals>.callbackj   s    MM$LLNr   
      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_     	*##%		 	 3 3RC#$(r   N)
r+   r,   r-   r.   r   r/   r   	isWindows	_reactorsrA   r    r   r   r1   r1   K   s5    
 ' 8 	7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      sl    F > " + +9>~ 9>x%)> %)P 	  !557 8 	  %99; <r   