o
    b#                     @   s   d Z ddlmZmZmZ ddlmZ ddlmZ ddl	m
Z G dd dejZG dd	 d	ejZG d
d dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZG dd dejZdS )zD
Tests for Deferred handling by L{twisted.trial.unittest.TestCase}.
    )deferreactorthreads)runWithWarningsSuppressed)unittest)suppressc                   @   s$   e Zd Zdd Zdd Zdd ZdS )DeferredSetUpOKc                 C      t d}|| j |S Nvaluer   succeedaddCallback_cb_setUpCalledselfd r   </usr/lib/python3/dist-packages/twisted/trial/test/detests.pysetUp      
zDeferredSetUpOK.setUpc                 C   s
   d| _ d S NT)_setUpCalledr   ignoredr   r   r   r         
zDeferredSetUpOK._cb_setUpCalledc                 C   s   |  | j d S N)
assertTruer   r   r   r   r   test_ok      zDeferredSetUpOK.test_okN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s    r   c                   @       e Zd ZdZdd Zdd ZdS )DeferredSetUpFailFc                 C   s   t tdS )Nzi fail)r   failr   FailTestr   r   r   r   r      r    zDeferredSetUpFail.setUpc                 C   s   dt _| d d S )NTzI should not get called)r%   
testCalledr&   r   r   r   r   r   "   s   zDeferredSetUpFail.test_okNr!   r"   r#   r(   r   r   r   r   r   r   r%          r%   c                   @   (   e Zd ZdZdd Zdd Zdd ZdS )	DeferredSetUpCallbackFailFc                 C   r	   r
   r   r   r   r   r   r   *   r   zDeferredSetUpCallbackFail.setUpc                 C   s   |  d d S )Nzdeliberate failurer&   r   r   r   r   r   /      z)DeferredSetUpCallbackFail._cb_setUpCalledc                 C   
   dt _d S r   )r,   r(   r   r   r   r   r   2   r   z!DeferredSetUpCallbackFail.test_okN)r!   r"   r#   r(   r   r   r   r   r   r   r   r,   '   
    r,   c                   @   r$   )DeferredSetUpErrorFc                 C   s   t tdS )Nzdeliberate error)r   r&   RuntimeErrorr   r   r   r   r   9   r.   zDeferredSetUpError.setUpc                 C   r/   r   )r1   r(   r   r   r   r   r   <   r   zDeferredSetUpError.test_okNr)   r   r   r   r   r1   6   r*   r1   c                   @   r$   )DeferredSetUpNeverFireFc                 C      t  S r   r   Deferredr   r   r   r   r   C      zDeferredSetUpNeverFire.setUpc                 C   r/   r   )r3   r(   r   r   r   r   r   F   r   zDeferredSetUpNeverFire.test_okNr)   r   r   r   r   r3   @   r*   r3   c                   @   r+   )	DeferredSetUpSkipFc                 C   r	   r
   )r   r   r   _cb1r   r   r   r   r   M   r   zDeferredSetUpSkip.setUpc                 C   s
   t d)Nzskip mer   SkipTestr   r   r   r   r9   R   r   zDeferredSetUpSkip._cb1c                 C   r/   r   )r8   r(   r   r   r   r   r   U   r   zDeferredSetUpSkip.test_okN)r!   r"   r#   r(   r   r9   r   r   r   r   r   r8   J   r0   r8   c                   @   s   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
eeddgeje
Z
ejdd Zdd Zdd Zdd Zdd Zdd Zdd Zd e_d!S )"DeferredTestsFc                 C   s   |  | d S r   r-   r   reasonr   r   r   _cb_fail\   r.   zDeferredTests._cb_failc                 C   s   t |r   )r2   r=   r   r   r   	_cb_error_   r7   zDeferredTests._cb_errorc                 C   s
   t |r   r:   r=   r   r   r   _cb_skipb   r   zDeferredTests._cb_skipc                 C      d| j _d S r   	__class__touchedr   r   r   r   _touchClasse      zDeferredTests._touchClassc                 C   rB   )NFrC   r   r   r   r   r   h   rG   zDeferredTests.setUpc                 C   s
   t dS )Nsuccess)r   r   r   r   r   r   	test_passk   r   zDeferredTests.test_passc                 c   s    |  d  d V  d S r   rF   r   r   r   r   test_passGeneratedn   s   

z DeferredTests.test_passGeneratedz7twisted.internet.defer.deferredGenerator was deprecated)messagec                 c   s    |  d dV  dS )zL
        Test case that is decorated with L{defer.inlineCallbacks}.
        NrJ   r   r   r   r   test_passInlineCallbacks|   s   

z&DeferredTests.test_passInlineCallbacksc                 C   s   t | dS )NzI fail)r   r&   failureExceptionr   r   r   r   	test_fail   r    zDeferredTests.test_failc                 C   r	   )Nr&   )r   r   r   r?   r   r   r   r   test_failureInCallback   r   z$DeferredTests.test_failureInCallbackc                 C   r	   )Nerrorr   r   r   r@   r   r   r   r   test_errorInCallback   r   z"DeferredTests.test_errorInCallbackc                 C   s&   t d}|| j || j |S )Nskip)r   r   r   rA   rF   r   r   r   r   	test_skip   s   
zDeferredTests.test_skipc                 C   s   t dd S )Nc                   S   s   d S r   r   r   r   r   r   <lambda>   s    z+DeferredTests.test_thread.<locals>.<lambda>)r   deferToThreadr   r   r   r   test_thread   r.   zDeferredTests.test_threadc                 C   r	   )NtodorR   r   r   r   r   test_expectedFailure   r   z"DeferredTests.test_expectedFailurezExpected failureN)r!   r"   r#   rE   r?   r@   rA   rF   r   rI   rK   r   SUPPRESSr   deferredGeneratorinlineCallbacksrM   rO   rP   rS   rU   rX   rZ   rY   r   r   r   r   r<   Y   s4    


r<   c                   @   s   e Zd ZdZdd Zde_dd Zdd Zd	e_d
d Zde_dd Z	d	e	_de	_
dd Zd	e_de_dd Zd	e_dd Zd	e_dS )TimeoutTestsNc                 C      t  }td|jd |S Nr   zhoorj!r   r6   r   	callLatercallbackr   r   r   r   rI      s   zTimeoutTests.test_pass   c                 C   r_   r`   ra   r   r   r   r   test_passDefault   s   zTimeoutTests.test_passDefaultc                 C   r4   r   r5   r   r   r   r   test_timeout   r7   zTimeoutTests.test_timeoutg?c                 C   r4   r   r5   r   r   r   r   test_timeoutZero   r7   zTimeoutTests.test_timeoutZeror   c                 C   r4   r   r5   r   r   r   r   rZ      r7   z!TimeoutTests.test_expectedFailurezi will get it right, eventuallyc                 C   r4   r   r5   r   r   r   r   rU      r7   zTimeoutTests.test_skipc                    s"    fdd}t  }|| |S )Nc                    s   |  j _| S r   )rD   timedOut)errr   r   r   rh      s   z4TimeoutTests.test_errorPropagation.<locals>.timedOut)r   r6   
addErrback)r   rh   r   r   r   r   test_errorPropagation   s   
z"TimeoutTests.test_errorPropagationc                 C   s(   t  }dd }|| |d |S )Nc                 S   r4   r   r5   )rr   r   r   	neverFire   r7   z;TimeoutTests.test_calledButNeverCallback.<locals>.neverFire   )r   r6   r   rc   )r   r   rm   r   r   r   test_calledButNeverCallback   s
   

z(TimeoutTests.test_calledButNeverCallback)r!   r"   r#   rh   rI   timeoutre   rf   rg   rZ   rY   rU   rT   rk   ro   r   r   r   r   r^      s&    	

r^   c                   @   r$   )TestClassTimeoutAttributeg?c                 C   s   t  | _d S r   )r   r6   r   r   r   r   r   r      r.   zTestClassTimeoutAttribute.setUpc                 C   s   d| _ | jS r   )methodCalledr   r   r   r   r   
testMethod   s   z$TestClassTimeoutAttribute.testMethodN)r!   r"   r#   rp   r   rs   r   r   r   r   rq      r*   rq   N)__doc__twisted.internetr   r   r   twisted.python.utilr   twisted.trialr   twisted.trial.utilr   r[   TestCaser   r%   r,   r1   r3   r8   r<   r^   rq   r   r   r   r   <module>   s   

I>