
    YfC                     R    d Z ddlmZ ddlmZ ddlmZmZmZ  G d de          Z	dS )	z(
Tests for L{twisted._threads._memory}.
    )verifyObject)SynchronousTestCase   )AlreadyQuitIWorkercreateMemoryWorkerc                   *    e Zd ZdZddZddZddZdS )MemoryWorkerTestsz$
    Tests for L{MemoryWorker}.
    returnNc                    t                      \  }}t          t          |           g |                    fd           |                    fd           |                     g            |                      |            d           |                     dg           |                      |            d           |                     ddg           dS )z
        L{createMemoryWorker} creates an L{IWorker} and a callable that can
        perform work on it.  The performer returns C{True} if it accomplished
        useful work.
        c                  .                          d          S )N   appenddones   S/var/www/html/env/lib/python3.11/site-packages/twisted/_threads/test/test_memory.py<lambda>z?MemoryWorkerTests.test_createWorkerAndPerform.<locals>.<lambda>       $++a..     c                  .                          d          S )N   r   r   s   r   r   z?MemoryWorkerTests.test_createWorkerAndPerform.<locals>.<lambda>   r   r   Tr   r   N)r   r   r   doassertEqual)selfworker	performerr   s      @r   test_createWorkerAndPerformz-MemoryWorkerTests.test_createWorkerAndPerform   s     /00	Wf%%%		(((()))		(((()))r"""d+++s###d+++1v&&&&&r   c                    t                      \  }}g dfd}|                    |           |                                 |                     t          |j        |           |                     t          |j                    |             |                     dg           |                      |            d           dS )a  
        Calling C{quit} on the worker returned by L{createMemoryWorker} causes
        its C{do} and C{quit} methods to raise L{AlreadyQuit}; its C{perform}
        callable will start raising L{AlreadyQuit} when the work already
        provided to C{do} has been exhausted.
        r   Nc                  2                          d           d S )N   r   r   s   r   moreWorkz2MemoryWorkerTests.test_quitQuits.<locals>.moreWork.   s    KKNNNNNr   r!   Fr   N)r   r   quitassertRaisesr   r   )r   r   r   r"   r   s       @r   test_quitQuitsz MemoryWorkerTests.test_quitQuits$   s     /00		 	 	 	 	 	 			(+vy(;;;+v{333	s###e,,,,,r   c                 d    t                      \  }}|                      |            d           dS )z
        The C{perform} callable returned by L{createMemoryWorker} will return
        no result when there's no work to do yet.  Since there is no work to
        do, the performer returns C{False}.
        FN)r   r   )r   r   r   s      r   test_performWhenNothingToDoYetz0MemoryWorkerTests.test_performWhenNothingToDoYet9   s6     /00	e,,,,,r   r#   )__name__
__module____qualname____doc__r   r&   r(    r   r   r
   r
      sZ         ' ' ' '"- - - -*- - - - - -r   r
   N)
r,   zope.interface.verifyr   twisted.trial.unittestr    r   r   r   r
   r-   r   r   <module>r1      s     / . . . . . 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 72- 2- 2- 2- 2-+ 2- 2- 2- 2- 2-r   