o
    Óó·iÁ  ã                   @   sº  d 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m
Z
 G dd„ deƒZG dd	„ d	eƒZG d
d„ dƒZG dd„ deejƒZG dd„ deejƒZG dd„ dƒZG dd„ deejƒZG dd„ deejƒZG dd„ dƒZG dd„ deejƒZG dd„ deejƒZG dd„ dejƒZG dd„ dejƒZG d d!„ d!ejƒZed"d#ƒ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.d/„ Z!G d0d1„ d1ejƒZ"d2S )3aJ  
Definitions of test cases with various interesting error-related behaviors, to
be used by test modules to exercise different features of trial's test runner.

See the L{twisted.trial.test.test_tests} module docstring for details about how
this code is arranged.

Some of these tests are also used by L{twisted.trial._dist.test}.
é    )ÚskipIf)ÚdeferÚprotocolÚreactor)Ú
deferLater)ÚunittestÚutilc                   @   ó   e Zd ZdS )ÚFoolishErrorN©Ú__name__Ú
__module__Ú__qualname__© r   r   úbC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\twisted/trial/test/erroneous.pyr
      ó    r
   c                   @   s*   e Zd ZdZdeddfdd„Zdd„ ZdS )	Ú
LargeErrorzj
    An exception which has a string representation of at least a specified
    number of characters.
    ÚminSizeÚreturnNc                 C   s   t  | ¡ || _d S ©N)Ú	ExceptionÚ__init__r   )Úselfr   r   r   r   r   !   s   

zLargeError.__init__c                 C   s   d| j  }d|› d�S )NÚxzLargeError<I fail: ú>)r   )r   Zlarger   r   r   Ú__str__%   s   
zLargeError.__str__)r   r   r   Ú__doc__Úintr   r   r   r   r   r   r      s    r   c                   @   ó   e Zd Zdd„ Zdd„ ZdS )ÚFailureInSetUpMixinc                 C   ó   t dƒ‚)NzI am a broken setUp method©r
   ©r   r   r   r   ÚsetUp+   ó   zFailureInSetUpMixin.setUpc                 C   ó   d S r   r   r"   r   r   r   Ú	test_noop.   ó   zFailureInSetUpMixin.test_noopN)r   r   r   r#   r&   r   r   r   r   r   *   ó    r   c                   @   r	   )ÚSynchronousTestFailureInSetUpNr   r   r   r   r   r)   2   r   r)   c                   @   r	   )ÚAsynchronousTestFailureInSetUpNr   r   r   r   r   r*   6   r   r*   c                   @   r   )ÚFailureInTearDownMixinc                 C   r    )NzI am a broken tearDown methodr!   r"   r   r   r   ÚtearDown;   r$   zFailureInTearDownMixin.tearDownc                 C   r%   r   r   r"   r   r   r   r&   >   r'   z FailureInTearDownMixin.test_noopN)r   r   r   r,   r&   r   r   r   r   r+   :   r(   r+   c                   @   r	   )Ú SynchronousTestFailureInTearDownNr   r   r   r   r   r-   B   ó    r-   c                   @   r	   )Ú!AsynchronousTestFailureInTearDownNr   r   r   r   r   r/   H   r   r/   c                   @   s$   e Zd ZdZdZdd„ Zdd„ ZdS )ÚFailureButTearDownRunsMixinz7
    A test fails, but its L{tearDown} still runs.
    Fc                 C   s
   d| _ d S ©NT)ÚtornDownr"   r   r   r   r,   S   ó   
z$FailureButTearDownRunsMixin.tearDownc                 C   r    )z$
        A test that fails.
        zI am a broken testNr!   r"   r   r   r   Ú
test_failsV   s   z&FailureButTearDownRunsMixin.test_failsN)r   r   r   r   r2   r,   r4   r   r   r   r   r0   L   s
    r0   c                   @   r	   )Ú%SynchronousTestFailureButTearDownRunsNr   r   r   r   r   r5   ]   r.   r5   c                   @   r	   )Ú&AsynchronousTestFailureButTearDownRunsNr   r   r   r   r   r6   c   r.   r6   c                   @   ó$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestRegularFailc                 C   ó   |   d¡ d S )NúI fail©Úfailr"   r   r   r   Ú	test_failj   ó   zTestRegularFail.test_failc                 C   s   |   ¡  d S r   )Ú
subroutiner"   r   r   r   Útest_subfailm   ó   zTestRegularFail.test_subfailc                 C   r9   )NzI fail insider;   r"   r   r   r   r?   p   r>   zTestRegularFail.subroutineN)r   r   r   r=   r@   r?   r   r   r   r   r8   i   s    r8   c                   @   sZ   e Zd ZdZdZdejd fdd„Zdejd fdd„Zdd	d
„Z	ddd„Z
ddd„ZdS )ÚTestAsynchronousFailz?
    Test failures for L{unittest.TestCase} based classes.
    r:   r   Nc                 C   s   t td| jdƒS )zW
        A test which fails in the callback of the returned L{defer.Deferred}.
        r   zI fail laterN©r   r   r<   r"   r   r   r   r=   {   s   zTestAsynchronousFail.test_failc                 C   s   t td| jddd  ƒS )zw
        A test which fails in the callback of the returned L{defer.Deferred}
        with a very long string.
        r   zI fail later: r   é   NrC   r"   r   r   r   Útest_failGreaterThan64k�   s   z,TestAsynchronousFail.test_failGreaterThan64kc                 C   ó
   t | jƒ‚)zA
        A test which raises an exception synchronously.
        N)r   Útextr"   r   r   r   Útest_exceptionˆ   s   
z#TestAsynchronousFail.test_exceptionc                 C   r    )zk
        A test which raises an exception with a long string representation
        synchronously.
        rD   N)r   r"   r   r   r   Útest_exceptionGreaterThan64kŽ   s   z1TestAsynchronousFail.test_exceptionGreaterThan64kc                 C   s   t dd ƒ‚)z‡
        A test which synchronously raises an exception with a long string
        representation including non-ascii content.
        u   â˜ƒi €  N)r   r"   r   r   r   Ú#test_exceptionGreaterThan64kEncoded•   s   	z8TestAsynchronousFail.test_exceptionGreaterThan64kEncoded)r   N)r   r   r   r   rG   r   ÚDeferredr=   rE   rH   rI   rJ   r   r   r   r   rB   t   s    

rB   c                   @   s   e Zd ZdZdZdd„ ZdS )Ú	ErrorTestz�
    A test case which has a L{test_foo} which will raise an error.

    @ivar ran: boolean indicating whether L{test_foo} has been run.
    Fc                 C   s   d| _ dd  dS )zJ
        Set C{self.ran} to True and raise a C{ZeroDivisionError}
        Té   r   N)Úranr"   r   r   r   Útest_fooª   s   zErrorTest.test_fooN)r   r   r   r   rN   rO   r   r   r   r   rL   ¡   s    rL   Tzskipping this testc                   @   r	   )ÚTestSkipTestCaseNr   r   r   r   r   rP   ²   s    rP   c                   @   s2   e Zd ZdZdd„ Zdd„ Zejded�ge_dS )	ÚDelayedCallzsomething blew upc                 C   rF   r   )ÚRuntimeErrorÚhiddenExceptionMsgr"   r   r   r   Úgoº   r3   zDelayedCall.goc                 C   s&   t  d| j¡ t  d¡ |  d¡ dS )a®  
        What happens if an error is raised in a DelayedCall and an error is
        also raised in the test?

        L{test_reporter.ErrorReportingTests.testHiddenException} checks that
        both errors get reported.

        Note that this behaviour is deprecated. A B{real} test would return a
        Deferred that got triggered by the callLater. This would guarantee the
        delayed call error gets reported.
        r   g{®Gáz„?z/Deliberate failure to mask the hidden exceptionN)r   Ú	callLaterrT   Ziterater<   r"   r   r   r   ÚtestHiddenException½   s   
zDelayedCall.testHiddenExceptionz!reactor\.iterate cannot be used.*)ÚmessageÚcategoryN)	r   r   r   rS   rT   rV   r   ÚsuppressÚDeprecationWarningr   r   r   r   rQ   ·   s    ÿ
ÿrQ   c                   @   ó   e Zd Zdd„ ZdS )ÚReactorCleanupTestsc                 C   s   dd„ }t  d|¡ d S )Nc                   S   s   t dƒ d S )Nzfoo!)Úprintr   r   r   r   Ú_Ö   rA   z8ReactorCleanupTests.test_leftoverPendingCalls.<locals>._g     ˆÃ@)r   rU   )r   r^   r   r   r   Útest_leftoverPendingCallsÕ   s   z-ReactorCleanupTests.test_leftoverPendingCallsN)r   r   r   r_   r   r   r   r   r\   Ô   ó    r\   c                   @   r[   )ÚSocketOpenTestc                 C   s    t  ¡ }t j|_ t d|¡ d S )Nr   )r   ÚFactoryÚProtocolr   Z	listenTCP)r   Úfr   r   r   Útest_socketsLeftOpenÝ   s   z#SocketOpenTest.test_socketsLeftOpenN)r   r   r   re   r   r   r   r   ra   Ü   r`   ra   c                   @   r7   )ÚTimingOutDeferredc                 C   r%   r   r   r"   r   r   r   Ú
test_alphaä   r'   zTimingOutDeferred.test_alphac                 C   s   d| _ t ¡ }|S r1   )ZmethodCalledr   rK   )r   Údr   r   r   Útest_deferredThatNeverFiresç   s   z-TimingOutDeferred.test_deferredThatNeverFiresc                 C   r%   r   r   r"   r   r   r   Ú
test_omegaì   r'   zTimingOutDeferred.test_omegaN)r   r   r   rg   ri   rj   r   r   r   r   rf   ã   s    rf   c                 C   s   dS )zci will raise an unexpected exception...
    ... *CAUSE THAT'S THE KINDA GUY I AM*

    >>> 1/0
    Nr   r"   r   r   r   ÚunexpectedExceptionð   s    rk   c                   @   s&   e Zd ZU dZdZeed< dd„ ZdS )ÚEventuallyFailingTestCasez>
    A test suite that fails after it is run a few times.
    r   Únc                 C   s*   |  j d7  _ | j dkr|  d¡ dS dS )zK
        Run successfully a few times and then fail forever after.
        rM   é   zeventually failingN)rm   r<   r"   r   r   r   Útest_itÿ   s   
ÿz!EventuallyFailingTestCase.test_itN)r   r   r   r   rm   r   Ú__annotations__ro   r   r   r   r   rl   ø   s   
 rl   N)#r   r   r   Ztwisted.internetr   r   r   Ztwisted.internet.taskr   Ztwisted.trialr   r   r
   r   r   ZSynchronousTestCaser)   ZTestCaser*   r+   r-   r/   r0   r5   r6   r8   rB   rL   rP   rQ   r\   ra   rf   rk   rl   r   r   r   r   Ú<module>   sB   
ÿ
ÿ
ÿ-