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>