o
    ¼>hÆQ  ã                   @  sÖ   d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZ d dlmZ dZd	ZG d
d„ dejƒZG dd„ dƒZG dd„ dƒZG dd„ dejƒZG dd„ dejƒZdS )é    )ÚannotationsN)ÚCallable)Úhelper)ÚBLINKÚBOLDÚG0ÚG1ÚG2ÚG3ÚNORMALÚREVERSE_VIDEOÚ	UNDERLINEÚmodesÚprivateModes)Úfailure)ÚunittestéP   é   c                   @  s`  e Zd ZdHdd„ZdHdd„ZdHdd„ZdHd	d
„ZdHdd„ZdHdd„ZdHdd„Z	dHdd„Z
dHdd„ZdHdd„ZdHdd„ZdHdd„ZdHdd„ZdHdd„ZdHdd „ZdHd!d"„ZdHd#d$„ZdHd%d&„ZdHd'd(„ZdHd)d*„ZdHd+d,„ZdHd-d.„ZdHd/d0„ZdHd1d2„ZdHd3d4„ZdHd5d6„ZdHd7d8„ZdHd9d:„ZdHd;d<„ZdHd=d>„Z dHd?d@„Z!dHdAdB„Z"dHdCdD„Z#dHdEdF„Z$dGS )IÚBufferTestsÚreturnÚNonec                 C  s   t  ¡ | _| j ¡  d S ©N)r   ÚTerminalBufferÚtermÚconnectionMade©Úself© r   ú~/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/twisted/conch/test/test_helper.pyÚsetUp   s   
zBufferTests.setUpc                 C  sP   |   | jjt¡ |   | jjt¡ |   | j ¡ dtd  ¡ |   | j ¡ d¡ d S )Nó   
é   ©r   r   )ÚassertEqualr   ÚwidthÚWIDTHÚheightÚHEIGHTÚ	__bytes__ÚreportCursorPositionr   r   r   r   ÚtestInitialState#   s   zBufferTests.testInitialStatec                 C  s    |   tjdtjdi| jj¡ dS )zš
        Verify that only DEC Auto Wrap Mode (DECAWM) and DEC Text Cursor Enable
        Mode (DECTCEM) are initially in the Set Mode (SM) state.
        TN)r#   r   Ú	AUTO_WRAPÚCURSOR_MODEr   r   r   r   r   Útest_initialPrivateModes)   s   þz$BufferTests.test_initialPrivateModesc                 C  óL   | j  d¡ | j  d¡ |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ dS )zQ
        C{""} moves the cursor to the first column in the current row.
        é   é   ©r/   r0   ó   ©r   r0   N)r   ÚcursorForwardÚ
cursorDownr#   r)   ÚinsertAtCursorr   r   r   r   Útest_carriageReturn3   ó
   zBufferTests.test_carriageReturnc                 C  s@   | j  d¡ |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ dS )zV
        C{"
"} moves the cursor to the next row without changing the column.
        r/   )r/   r   r    ©r/   r!   N)r   r4   r#   r)   r6   r   r   r   r   Útest_linefeed=   s   zBufferTests.test_linefeedc                 C  r.   )z:
        C{write} transforms C{"
"} into C{"
"}.
        r/   r0   r1   r    ©r   é   N)r   r4   r5   r#   r)   Úwriter   r   r   r   Útest_newlineF   r8   zBufferTests.test_newlinec                 C  sH   | j j ¡ }| j  tjtjg¡ d|tj< d|tj< |  || j j¡ dS )z›
        Verify that L{helper.TerminalBuffer.setPrivateModes} changes the Set
        Mode (SM) state to "set" for the private modes it is passed.
        TN)r   r   ÚcopyÚsetPrivateModesÚSCROLLÚSCREENr#   ©r   Úexpectedr   r   r   Útest_setPrivateModesP   s
   

z BufferTests.test_setPrivateModesc                 C  sD   | j j ¡ }| j  tjtjg¡ |tj= |tj= |  || j j¡ dS )zŸ
        Verify that L{helper.TerminalBuffer.resetPrivateModes} changes the Set
        Mode (SM) state to "reset" for the private modes it is passed.
        N)r   r   r?   ÚresetPrivateModesr+   r,   r#   rC   r   r   r   Útest_resetPrivateModes[   s
   z"BufferTests.test_resetPrivateModesc                 C  sd   | j  d¡ |  | j  ¡ d¡ | j  ¡  |  | j  ¡ d¡ | j  t¡ |  | j  ¡ dtd f¡ d S )Nr0   r3   r;   r   r!   )r   r5   r#   r)   r'   r   r   r   r   ÚtestCursorDownf   s   
zBufferTests.testCursorDownc                 C  sj   | j  d¡ |  | j  ¡ d¡ | j  d¡ | j  d¡ |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ d S )Nr/   r"   é   r!   )r   é   rJ   )r   ÚcursorUpr#   r)   r5   r   r   r   r   ÚtestCursorUpn   s   zBufferTests.testCursorUpc                 C  sb   | j  d¡ |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ | j  t¡ |  | j  ¡ tdf¡ d S )Né   )rM   r   )r<   r   r   )r   r4   r#   r)   r%   r   r   r   r   ÚtestCursorForwardy   s   zBufferTests.testCursorForwardc                 C  sˆ   | j  d¡ | j  d¡ |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ d S )Né
   rM   )é   r   é   )r!   r   r!   r"   )r   r4   ÚcursorBackwardr#   r)   r   r   r   r   ÚtestCursorBackward   s   zBufferTests.testCursorBackwardc                 C  s$   | j  dd¡ |  | j  ¡ d¡ d S )Nr0   é	   )r0   rT   )r   ÚcursorPositionr#   r)   r   r   r   r   ÚtestCursorPositioningŒ   s   z!BufferTests.testCursorPositioningc                 C  s6   d}| j  |¡ |  | j  ¡ |d dtd   ¡ d S )Nó   Hello, world.r    rM   )r   r=   r#   r(   r'   ©r   Úsr   r   r   ÚtestSimpleWriting   s   &zBufferTests.testSimpleWritingc                 C  sn   d}| j  |¡ | j  t|ƒ¡ | j  tjg¡ | j  d¡ |  | j  ¡ d|dd …  d dt	d   ¡ d S )Ns   hello, world.ó   Hr!   r    rM   )
r   r=   rR   ÚlenÚ
resetModesr   ÚIRMr#   r(   r'   rX   r   r   r   ÚtestOvertype•   s   &ÿzBufferTests.testOvertypec                 C  sf   d}| j  |¡ | j  t|ƒ¡ | j  tjg¡ | j  d¡ |  | j  ¡ d| d dt	d   ¡ d S )Ns   ello, world.r[   r    rM   )
r   r=   rR   r\   ÚsetModesr   r^   r#   r(   r'   rX   r   r   r   Ú
testInsertŸ   s   ÿzBufferTests.testInsertc                 C  s^   d}| j  d¡ | j  d¡ | j  |¡ |  | j  ¡ d| j jd  | d dtd   ¡ d S )NrW   r/   s   




r    rQ   )r   r5   r4   r=   r#   r(   Úfillr'   rX   r   r   r   ÚtestWritingInTheMiddle©   s   "þz"BufferTests.testWritingInTheMiddlec                 C  sd   d}| j  td ¡ | j  |¡ |  | j  ¡ |d d…  t¡d |dd …  d dtd   ¡ d S )NrW   r/   r    r0   )r   r4   r%   r=   r#   r(   Úrjustr'   rX   r   r   r   ÚtestWritingWrappedAtEndOfLine³   s   0þz)BufferTests.testWritingWrappedAtEndOfLinec                 C  sj   | j  ¡  |  | j  ¡ d¡ | j  t¡ |  | j  ¡ dtd f¡ | j  ¡  |  | j  ¡ dtd f¡ d S )N©r   r!   r   r!   )r   Úindexr#   r)   r5   r'   r   r   r   r   Ú	testIndex¼   s   

zBufferTests.testIndexc                 C  sZ   | j  ¡  |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ | j  ¡  |  | j  ¡ d¡ d S )Nr"   rM   ©r   rM   rf   )r   ÚreverseIndexr#   r)   r5   r   r   r   r   ÚtestReverseIndexÄ   s   

zBufferTests.testReverseIndexc                 C  sZ   | j  ¡  |  | j  ¡ d¡ | j  d¡ |  | j  ¡ d¡ | j  ¡  |  | j  ¡ d¡ dS )zm
        C{nextLine} positions the cursor at the beginning of the row below the
        current row.
        rf   r/   r9   ri   N)r   ÚnextLiner#   r)   r4   r   r   r   r   Útest_nextLineÌ   s   

zBufferTests.test_nextLinec                 C  s~   | j  d¡ | j  d¡ |  | j  ¡ d¡ | j  ¡  | j  d¡ | j  d¡ |  | j  ¡ d¡ | j  ¡  |  | j  ¡ d¡ d S )Nr/   rQ   )rQ   r/   r0   )r<   é   )r   r5   r4   r#   r)   Ú
saveCursorrR   ÚrestoreCursorr   r   r   r   ÚtestSaveCursorØ   s   

zBufferTests.testSaveCursorc                 C  sð   | j  ¡  | j  d¡ | j  dd¡}|  |d d¡ |  |d jt¡ | j  dd¡}|  |d d¡ |  |d jt¡ | j  ¡  | j  d¡ | j  dd¡}|  |d d¡ |  |d jt	¡ | j  d	d¡}|  |d d¡ |  |d jt¡ d S )
Ns   Hir   r[   r!   ó   is   !!rM   ó   !r0   )
r   ÚsingleShift2r=   ÚgetCharacterr#   Úcharsetr	   r   ÚsingleShift3r
   ©r   Úchr   r   r   ÚtestSingleShiftsã   s    

zBufferTests.testSingleShiftsc           	   	   C  sÆ   d}d}d}| j  d¡ | j  ¡  | j  d¡ | j  ¡  | j  d¡ t}d}|||fD ]5}tt|ƒƒD ] }| j  ||¡}|  |d |||d … ¡ |  |d j	|¡ q3|tkrZt
p[t}|d7 }q+d S )	Ns   Hellos   Worlds   Bye!s   Hello
s   World
s   Bye!
r   r!   )r   r=   ÚshiftOutÚshiftInr   Úranger\   ru   r#   rv   r   )	r   Ús1Ús2Ús3ÚgÚhrY   Úiry   r   r   r   ÚtestShiftingú   s$   


úzBufferTests.testShiftingc                 C  sâ  | j  tttt¡ | j  d¡ | j  t¡ | j  d¡ | j  t¡ | j  d¡ | j  t¡ | j  d¡ | j  dd¡}|  	|d d¡ |  
|d j¡ |  
|d j¡ |  
|d j¡ |  
|d j¡ | j  dd¡}|  	|d d¡ |  |d j¡ |  |d j¡ |  |d j¡ |  |d j¡ | j  dd¡}|  	|d d¡ |  
|d j¡ |  |d j¡ |  |d j¡ |  |d j¡ | j  dd¡}|  	|d d¡ |  
|d j¡ |  
|d j¡ |  |d j¡ |  |d j¡ d S )	Nó   Wó   Xó   Yó   Zr   r!   rM   r0   )r   ÚselectGraphicRenditionr   r   r   r   r=   r   ru   r#   Ú
assertTrueÚboldÚ	underlineÚblinkÚreverseVideoÚassertFalserx   r   r   r   ÚtestGraphicRendition  s@   z BufferTests.testGraphicRenditionc                 C  sÂ  d}d}| j  tjtj tjtj ¡ | j  |d ¡ | j  t¡ | j  |d ¡ t	t
|ƒƒD ]T}| j  |d¡}|  |d |||d … ¡ |  |d jt¡ |  |d j¡ |  |d j¡ |  |d j¡ |  |d j¡ |  |d jtj¡ |  |d jtj¡ q/t	t
|ƒƒD ]T}| j  |d¡}|  |d |||d … ¡ |  |d jt¡ |  |d j¡ |  |d j¡ |  |d j¡ |  |d j¡ |  |d jtj¡ |  |d jtj¡ qŠd S )Ns
   Merry xmass   Just kiddingr    r   r!   )r   r‰   r   Ú
FOREGROUNDÚREDÚ
BACKGROUNDÚGREENr=   r   r}   r\   ru   r#   rv   r   r   r‹   rŒ   r   rŽ   Ú
foregroundÚ
backgroundÚWHITEÚBLACK)r   r~   r   rƒ   ry   r   r   r   ÚtestColorAttributes4  s:   ÿ÷zBufferTests.testColorAttributesc                 C  sr   d}d}d}| j  d |||f¡d ¡ | j  dd¡ | j  ¡  |  | j  ¡ |d d | d dtd   ¡ d S )Ns   line 1s   line 2s   line 3r    r!   r<   )r   r=   ÚjoinrU   Ú	eraseLiner#   r(   r'   ©r   r~   r   r€   r   r   r   ÚtestEraseLineT  s   
þzBufferTests.testEraseLinec                 C  sT   d}| j  |¡ | j  d¡ | j  ¡  |  | j  ¡ |d d… d dtd   ¡ d S )NrW   r/   éûÿÿÿr    rM   )r   r=   rR   ÚeraseToLineEndr#   r(   r'   rX   r   r   r   ÚtestEraseToLineEnda  s
   
.zBufferTests.testEraseToLineEndc                 C  s^   d}| j  |¡ | j  d¡ | j  ¡  |  | j  ¡ |dd …  t|ƒ¡d dtd   ¡ d S )NrW   r/   éüÿÿÿr    rM   )	r   r=   rR   ÚeraseToLineBeginningr#   r(   rd   r\   r'   rX   r   r   r   ÚtestEraseToLineBeginningh  s   
,ÿz$BufferTests.testEraseToLineBeginningc                 C  s@   | j  d¡ | j  d¡ | j  ¡  |  | j  ¡ dtd  ¡ d S )Ns   Hello world
s   Goodbye world
r    r!   )r   r=   ÚeraseDisplayr#   r(   r'   r   r   r   r   ÚtestEraseDisplayq  s   
zBufferTests.testEraseDisplayc                 C  sn   d}d}| j  d ||df¡¡ | j  dd¡ | j  ¡  |  | j  ¡ |d |d d…  d dtd   ¡ d S )Nó   Hello worldó   Goodbye worldr    ó    r/   r!   r0   )r   r=   rš   rU   ÚeraseToDisplayEndr#   r(   r'   ©r   r~   r   r   r   r   ÚtestEraseToDisplayEndx  s   
*ÿz!BufferTests.testEraseToDisplayEndc                 C  sr   d}d}| j  d ||f¡¡ | j  dd¡ | j  ¡  |  | j  ¡ d|dd …  t|ƒ¡ d dt	d   ¡ d S )Nr¦   r§   r    r/   r!   é   r0   )
r   r=   rš   rU   ÚeraseToDisplayBeginningr#   r(   rd   r\   r'   rª   r   r   r   ÚtestEraseToDisplayBeginningƒ  s   
(þz'BufferTests.testEraseToDisplayBeginningc                 C  sh   d}d}| j  d ||f¡¡ | j  dd¡ | j  ¡  |  | j  ¡ |d d | d dtd   ¡ d S )Nr¦   r§   r    rQ   r!   r<   )r   r=   rš   rU   Ú
insertLiner#   r(   r'   rª   r   r   r   ÚtestLineInsertion  s   
þzBufferTests.testLineInsertionc                 C  sj   d}d}d}| j  d |||f¡¡ | j  dd¡ | j  ¡  |  | j  ¡ |d | d dtd   ¡ d S )Nr¦   s   Middle wordsr§   r    rT   r!   r0   )r   r=   rš   rU   Ú
deleteLiner#   r(   r'   rœ   r   r   r   ÚtestLineDeletion›  s   
"ÿzBufferTests.testLineDeletionN©r   r   )%Ú__name__Ú
__module__Ú__qualname__r   r*   r-   r7   r:   r>   rE   rG   rH   rL   rN   rS   rV   rZ   r_   ra   rc   re   rh   rk   rm   rq   rz   r„   r   r™   r   r    r£   r¥   r«   r®   r°   r²   r   r   r   r   r      sF    







	
















	






&
 


	


r   c                   @  s<   e Zd ZdZdZddd„Zddd„Zddd„Zddd„ZdS )ÚFakeDelayedCallFÚfsÚFakeSchedulerÚtimeoutÚfloatÚfúCallable[..., None]Úaútuple[object, ...]Úkwúdict[str, object]r   r   c                 C  s"   || _ || _|| _|| _|| _d S r   )r¸   rº   r¼   r¾   rÀ   )r   r¸   rº   r¼   r¾   rÀ   r   r   r   Ú__init__¬  s
   
zFakeDelayedCall.__init__Úboolc                 C  s   | j p| j S r   )Ú	cancelledÚcalledr   r   r   r   Úactiveº  s   zFakeDelayedCall.activec                 C  s
   d| _ d S ©NT)rÄ   r   r   r   r   Úcancel½  ó   
zFakeDelayedCall.cancelc                 C  s   d| _ | j| ji | j¤Ž d S rÇ   )rÅ   r¼   r¾   rÀ   r   r   r   r   ÚcallÂ  s   zFakeDelayedCall.callN)r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   r   r   )r   rÃ   r³   )	r´   rµ   r¶   rÅ   rÄ   rÂ   rÆ   rÈ   rÊ   r   r   r   r   r·   ¨  s    


r·   c                   @  s    e Zd Zddd„Zddd„ZdS )r¹   r   r   c                 C  s
   g | _ d S r   )Úcallsr   r   r   r   rÂ   È  rÉ   zFakeScheduler.__init__rº   r»   r¼   r½   r¾   ÚobjectrÀ   r·   c                 O  s"   | j  t| ||||ƒ¡ | j d S )Néÿÿÿÿ)rË   Úappendr·   )r   rº   r¼   r¾   rÀ   r   r   r   Ú	callLaterË  s   
zFakeScheduler.callLaterNr³   )
rº   r»   r¼   r½   r¾   rÌ   rÀ   rÌ   r   r·   )r´   rµ   r¶   rÂ   rÏ   r   r   r   r   r¹   Ç  s    
r¹   c                   @  sf   e Zd Zddd„Zddd„Zddd„Zdd	d
„Zddd„Zddd„Zddd„Z	ddd„Z
ddd„ZdS )ÚExpectTestsr   r   c                 C  s    t  ¡ | _| j ¡  tƒ | _d S r   )r   ÚExpectableBufferr   r   r¹   r¸   r   r   r   r   r   Ó  s   

zExpectTests.setUpc                 C  s’   g }| j jdd| jd}| |j¡ | j  d¡ |  |¡ | j  d¡ |  |¡ |  |d  	¡ d¡ |  t
| jjƒd¡ |  | jjd  ¡ ¡ d S )Nó   hello worldr!   ©rº   Ú	schedulers   greeting puny earthlings
s   hello world
r   )r   Úexpectr¸   ÚaddCallbackrÎ   r=   r   rŠ   r#   Úgroupr\   rË   rÆ   ©r   ÚresultÚdr   r   r   ÚtestSimpleStringØ  s   

zExpectTests.testSimpleStringc                 C  s€   g }| j  d¡}| |j¡ |  |¡ | j  d¡ |  |¡ | j  d¡ |  |¡ | j  d¡ |  |¡ |  |d  ¡ d¡ d S )NrÒ   ó   hello s   worló   dr   )	r   rÕ   rÖ   rÎ   r   r=   rŠ   r#   r×   rØ   r   r   r   ÚtestBrokenUpStringå  s   



zExpectTests.testBrokenUpStringc                 C  s¸   g }| j  d¡}| |j¡ | j  d¡}| |j¡ |  |¡ | j  d¡ |  |¡ | j  d¡ |  t|ƒd¡ | j  d¡ |  t|ƒd¡ |  |d  ¡ d¡ |  |d  ¡ d¡ d S )NrÜ   ó   worlds   helloó    r!   rM   r   )	r   rÕ   rÖ   rÎ   r   r=   r#   r\   r×   ©r   rÙ   Úd1Úd2r   r   r   ÚtestMultipleó  s   

zExpectTests.testMultiplec                 C  sJ   | j  d¡ g }| j  d¡}| |j¡ |  |¡ |  |d  ¡ d¡ d S )NrÒ   r   )r   r=   rÕ   rÖ   rÎ   rŠ   r#   r×   rØ   r   r   r   ÚtestSynchronous  s   
zExpectTests.testSynchronousc                 C  s|   | j  d¡ g }| j  d¡}| |j¡ | j  d¡}| |j¡ |  t|ƒd¡ |  |d  ¡ d¡ |  |d  ¡ d¡ d S )Ns   goodbye worlds   byerß   rM   r   r!   )r   r=   rÕ   rÖ   rÎ   r#   r\   r×   rá   r   r   r   ÚtestMultipleSynchronous  s   z#ExpectTests.testMultipleSynchronousÚresúfailure.Failurec                 C  s$   |   t|dƒ¡ |  |jtj¡ d S )NÚtype)rŠ   Úhasattrr#   ré   r   ÚExpectationTimeout)r   rç   r   r   r   Ú_cbTestTimeoutFailure  s   z!ExpectTests._cbTestTimeoutFailurec                 C  s4   | j jdd| jd}| | j¡ | jjd  ¡  d S )NrÒ   r!   rÓ   r   )r   rÕ   r¸   ÚaddBothrì   rË   rÊ   )r   rÚ   r   r   r   ÚtestTimeoutFailure  s   zExpectTests.testTimeoutFailurec                 C  s€   | j  d¡ g }| j jdd| jd}| | j¡ | j  d¡}| |j¡ | jjd  	¡  |  
t|ƒd¡ |  
|d  ¡ d¡ d S )Ns   not zoomtasticrÒ   r!   rÓ   s   zoomr   )r   r=   rÕ   r¸   rí   rì   rÖ   rÎ   rË   rÊ   r#   r\   r×   rá   r   r   r   ÚtestOverlappingTimeout#  s   z"ExpectTests.testOverlappingTimeoutNr³   )rç   rè   r   r   )r´   rµ   r¶   r   rÛ   rÞ   rä   rå   ræ   rì   rî   rï   r   r   r   r   rÐ   Ò  s    





	

rÐ   c                   @  s$   e Zd ZdZd	dd„Zd	dd„ZdS )
ÚCharacterAttributeTestszG
    Tests for L{twisted.conch.insults.helper.CharacterAttribute}.
    r   r   c              
   C  s”   |   t ¡ t ¡ ¡ |   t ¡ tjtd¡ |   tjddddtjdtjddddtjd¡ |  t ¡ tjtd¡ |  tjddtjdd¡ dS )z±
        L{CharacterAttribute}s must have matching character attribute values
        (bold, blink, underline, etc) with the same values to be considered
        equal.
        )rv   TF)r‹   rŒ   r   rŽ   r•   ©r‹   N)r#   r   ÚCharacterAttributer   ÚBLUEÚassertNotEqualr   r   r   r   r   Útest_equality7  s4   ÿûûøÿÿz%CharacterAttributeTests.test_equalityc                 C  sb   t  ¡ jdd |  | jg¡}|  t|ƒd¡ |  |d d t¡ d}|  |d d d| ¡ d	S )
z~
        L{twisted.conch.insults.helper.CharacterAttribute.wantOne} emits
        a deprecation warning when invoked.
        Trñ   r!   r   Úcategoryz5twisted.conch.insults.helper._FormattingState.wantOneÚmessagez#%s was deprecated in Twisted 13.1.0N)r   Ú_FormattingStateÚwantOneÚflushWarningsÚtest_wantOneDeprecatedr#   r\   ÚDeprecationWarning)r   ÚwarningsShownÚdeprecatedClassr   r   r   rû   \  s   
þz.CharacterAttributeTests.test_wantOneDeprecatedNr³   )r´   rµ   r¶   Ú__doc__rõ   rû   r   r   r   r   rð   2  s    
%rð   )Ú
__future__r   ÚreÚtypingr   Útwisted.conch.insultsr   Útwisted.conch.insults.insultsr   r   r   r   r	   r
   r   r   r   r   r   Útwisted.pythonr   Útwisted.trialr   r%   r'   ÚTestCaser   r·   r¹   rÐ   rð   r   r   r   r   Ú<module>   s"   4   `