U
    
W[ø  ã                   @   sò   d Z ddlmZmZ ddlmZ ddlmZmZ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}.
é    )ÚdivisionÚabsolute_import)Úunittest)ÚdeferÚthreadsÚreactor)Úsuppress)ÚrunWithWarningsSuppressedc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚDeferredSetUpOKc                 C   s   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   s    
zDeferredSetUpOK.setUpc                 C   s
   d| _ d S ©NT)Ú_setUpCalled©r   Zignoredr   r   r   r      s    zDeferredSetUpOK._cb_setUpCalledc                 C   s   |   | j¡ d S ©N)Z
assertTruer   ©r   r   r   r   Útest_ok   s    zDeferredSetUpOK.test_okN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r
      s   r
   c                   @   s    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   ZFailTestr   r   r   r   r       s    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       s   r    c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚDeferredSetUpCallbackFailFc                 C   s   t  d¡}| | j¡ |S r   r   r   r   r   r   r   +   s    
zDeferredSetUpCallbackFail.setUpc                 C   s   |   d¡ d S )Nzdeliberate failure©r!   r   r   r   r   r   0   s    z)DeferredSetUpCallbackFail._cb_setUpCalledc                 C   s
   dt _d S r   )r$   r"   r   r   r   r   r   3   s    z!DeferredSetUpCallbackFail.test_okN)r   r   r   r"   r   r   r   r   r   r   r   r$   (   s   r$   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚDeferredSetUpErrorFc                 C   s   t  tdƒ¡S )Nzdeliberate error)r   r!   ÚRuntimeErrorr   r   r   r   r   :   s    zDeferredSetUpError.setUpc                 C   s
   dt _d S r   )r&   r"   r   r   r   r   r   =   s    zDeferredSetUpError.test_okNr#   r   r   r   r   r&   7   s   r&   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚDeferredSetUpNeverFireFc                 C   s   t  ¡ S r   ©r   ÚDeferredr   r   r   r   r   D   s    zDeferredSetUpNeverFire.setUpc                 C   s
   dt _d S r   )r(   r"   r   r   r   r   r   G   s    zDeferredSetUpNeverFire.test_okNr#   r   r   r   r   r(   A   s   r(   c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚDeferredSetUpSkipFc                 C   s   t  d¡}| | j¡ |S r   )r   r   r   Ú_cb1r   r   r   r   r   N   s    
zDeferredSetUpSkip.setUpc                 C   s   t  d¡‚d S )Nzskip me©r   ZSkipTestr   r   r   r   r,   S   s    zDeferredSetUpSkip._cb1c                 C   s
   dt _d S r   )r+   r"   r   r   r   r   r   V   s    zDeferredSetUpSkip.test_okN)r   r   r   r"   r   r,   r   r   r   r   r   r+   K   s   r+   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]   s    zDeferredTests._cb_failc                 C   s   t |ƒ‚d S r   )r'   r/   r   r   r   Ú	_cb_error`   s    zDeferredTests._cb_errorc                 C   s   t  |¡‚d S r   r-   r/   r   r   r   Ú_cb_skipc   s    zDeferredTests._cb_skipc                 C   s   d| j _d S r   ©Ú	__class__Útouchedr   r   r   r   Ú_touchClassf   s    zDeferredTests._touchClassc                 C   s   d| j _d S )NFr4   r   r   r   r   r   i   s    zDeferredTests.setUpc                 C   s
   t  d¡S )NZsuccess)r   r   r   r   r   r   Ú	test_passl   s    zDeferredTests.test_passc                 c   s   |   d ¡ d V  d S r   ©r7   r   r   r   r   Útest_passGeneratedo   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}.
        Nr9   r   r   r   r   Útest_passInlineCallbacksx   s    
z&DeferredTests.test_passInlineCallbacksc                 C   s   t  |  d¡¡S )NzI fail)r   r!   ZfailureExceptionr   r   r   r   Ú	test_fail€   s    zDeferredTests.test_failc                 C   s   t  d¡}| | j¡ |S )Nr!   )r   r   r   r1   r   r   r   r   Útest_failureInCallbackƒ   s    
z$DeferredTests.test_failureInCallbackc                 C   s   t  d¡}| | j¡ |S )NÚerror©r   r   r   r2   r   r   r   r   Útest_errorInCallbackˆ   s    
z"DeferredTests.test_errorInCallbackc                 C   s&   t  d¡}| | j¡ | | j¡ |S )NÚskip)r   r   r   r3   r7   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>”   ó    z+DeferredTests.test_thread.<locals>.<lambda>)r   ZdeferToThreadr   r   r   r   Útest_thread“   s    zDeferredTests.test_threadc                 C   s   t  d¡}| | j¡ |S )NÚtodor@   r   r   r   r   Útest_expectedFailure–   s    
z"DeferredTests.test_expectedFailurezExpected failureN)r   r   r   r6   r1   r2   r3   r7   r   r8   r:   r	   ÚSUPPRESSr   ZdeferredGeneratorZinlineCallbacksr<   r=   r>   rA   rC   rF   rH   rG   r   r   r   r   r.   Z   s,   
 ý
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   s   t  ¡ }t d|jd¡ |S ©Nr   zhoorj!©r   r*   r   Z	callLaterÚcallbackr   r   r   r   r8       s    zTimeoutTests.test_passé   c                 C   s   t  ¡ }t d|jd¡ |S rK   rL   r   r   r   r   Útest_passDefault¦   s    zTimeoutTests.test_passDefaultc                 C   s   t  ¡ S r   r)   r   r   r   r   Útest_timeout¬   s    zTimeoutTests.test_timeoutgš™™™™™¹?c                 C   s   t  ¡ S r   r)   r   r   r   r   Útest_timeoutZero°   s    zTimeoutTests.test_timeoutZeror   c                 C   s   t  ¡ S r   r)   r   r   r   r   rH   ´   s    z!TimeoutTests.test_expectedFailurezi will get it right, eventuallyc                 C   s   t  ¡ S r   r)   r   r   r   r   rC   ¹   s    zTimeoutTests.test_skipc                    s"   ‡ fdd„}t  ¡ }| |¡ |S )Nc                    s   | ˆ j _| S r   )r5   ÚtimedOut)Úerrr   r   r   rR   ¿   s    z4TimeoutTests.test_errorPropagation.<locals>.timedOut)r   r*   Z
addErrback)r   rR   r   r   r   r   Útest_errorPropagation¾   s    
z"TimeoutTests.test_errorPropagationc                 C   s(   t  ¡ }dd„ }| |¡ | d¡ |S )Nc                 S   s   t  ¡ S r   r)   )Úrr   r   r   Ú	neverFireÉ   s    z;TimeoutTests.test_calledButNeverCallback.<locals>.neverFireé   )r   r*   r   rM   )r   r   rV   r   r   r   Útest_calledButNeverCallbackÇ   s
    

z(TimeoutTests.test_calledButNeverCallback)r   r   r   rR   r8   ÚtimeoutrO   rP   rQ   rH   rG   rC   rB   rT   rX   r   r   r   r   rJ      s$   rJ   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTestClassTimeoutAttributegš™™™™™É?c                 C   s   t  ¡ | _d S r   )r   r*   r   r   r   r   r   r   Ô   s    zTestClassTimeoutAttribute.setUpc                 C   s   d| _ | jS r   )ZmethodCalledr   r   r   r   r   Ú
testMethod×   s    z$TestClassTimeoutAttribute.testMethodN)r   r   r   rY   r   r[   r   r   r   r   rZ   Ñ   s   rZ   N)Ú__doc__Z
__future__r   r   Ztwisted.trialr   Ztwisted.internetr   r   r   Ztwisted.trial.utilr   rI   Ztwisted.python.utilr	   ZTestCaser
   r    r$   r&   r(   r+   r.   rJ   rZ   r   r   r   r   Ú<module>   s   

C4