o
    Òó·iÆ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   ZTerminalBufferÚtermÚconnectionMade©Úself© r   údC:\Users\psant\Downloads\PAF backend\school\venv\Lib\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.   r/   ó   ©r   r/   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   r3   r"   r(   r5   r   r   r   r   Útest_linefeed=   s   zBufferTests.test_linefeedc                 C  r-   )z:
        C{write} transforms C{"
"} into C{"
"}.
        r.   r/   r0   r   ©r   é   N)r   r3   r4   r"   r(   Úwriter   r   r   r   Útest_newlineF   r7   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   ÚcopyZsetPrivateModesZSCROLLZ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>   ZresetPrivateModesr*   r+   r"   r?   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 )Nr/   r2   r:   r   r    )r   r4   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   é   rE   )r   ZcursorUpr"   r(   r4   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é   )rG   r   )r;   r   r   )r   r3   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é
   rG   )é   r   é   )r    r   r    r!   )r   r3   ÚcursorBackwardr"   r(   r   r   r   r   ÚtestCursorBackward�   s   zBufferTests.testCursorBackwardc                 C  s$   | j  dd¡ |  | j  ¡ d¡ d S )Nr/   é	   )r/   rN   )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   rG   )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   rG   )
r   r<   rL   ÚlenZ
resetModesr   ÚIRMr"   r'   r&   rR   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.rU   r   rG   )
r   r<   rL   rV   ZsetModesr   rW   r"   r'   r&   rR   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 )NrQ   r.   s   




r   rK   )r   r4   r3   r<   r"   r'   Úfillr&   rR   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 )NrQ   r.   r   r/   )r   r3   r$   r<   r"   r'   Úrjustr&   rR   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(   r4   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!   rG   ©r   rG   r^   )r   ZreverseIndexr"   r(   r4   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.
        r^   r.   r8   ra   N)r   ZnextLiner"   r(   r3   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.   rK   )rK   r.   r/   )r;   é   )r   r4   r3   r"   r(   Z
saveCursorrL   Z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   rU   r    ó   is   !!rG   ó   !r/   )
r   ZsingleShift2r<   ÚgetCharacterr"   Úcharsetr	   r   Z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<   ZshiftOutZshiftInr   ÚrangerV   rh   r"   ri   r   )	r   Ús1Ús2Ús3ÚgÚhrS   Úirk   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    rG   r/   )r   ÚselectGraphicRenditionr   r   r   r   r<   r   rh   r"   Ú
assertTrueÚboldÚ	underlineÚblinkÚreverseVideoÚassertFalserj   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   ry   r   Z
FOREGROUNDÚREDZ
BACKGROUNDÚGREENr<   r   rm   rV   rh   r"   ri   r   r   r{   r|   r}   r~   Ú
foregroundZ
backgroundÚWHITEÚBLACK)r   rn   ro   rs   rk   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<   ÚjoinrO   Z	eraseLiner"   r'   r&   ©r   rn   ro   rp   r   r   r   ÚtestEraseLineT  s   
þzBufferTests.testEraseLinec                 C  sT   d}| j  |¡ | j  d¡ | j  ¡  |  | j  ¡ |d d… d dtd   ¡ d S )NrQ   r.   éûÿÿÿr   rG   )r   r<   rL   ZeraseToLineEndr"   r'   r&   rR   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 )NrQ   r.   éüÿÿÿr   rG   )	r   r<   rL   ZeraseToLineBeginningr"   r'   r\   rV   r&   rR   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<   Z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    r/   )r   r<   r‡   rO   ZeraseToDisplayEndr"   r'   r&   ©r   rn   ro   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    é   r/   )
r   r<   r‡   rO   ZeraseToDisplayBeginningr"   r'   r\   rV   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   rK   r    r;   )r   r<   r‡   rO   Z
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   rN   r    r/   )r   r<   r‡   rO   Z
deleteLiner"   r'   r&   rˆ   r   r   r   ÚtestLineDeletion›  s   
"ÿzBufferTests.testLineDeletionN©r   r   )%Ú__name__Ú
__module__Ú__qualname__r   r)   r,   r6   r9   r=   rA   rB   rC   rF   rH   rM   rP   rT   rX   rY   r[   r]   r`   rb   rc   re   rl   rt   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   Z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Ÿ   Z	schedulers   greeting puny earthlings
s   hello world
r   )r   Úexpectr�   ÚaddCallbackr³   r<   r   rz   r"   ÚgrouprV   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<   rz   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    rG   r   )	r   r¸   r¹   r³   r   r<   r"   rV   rº   ©r   r¼   Zd1Z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³   rz   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Â   rG   r   r    )r   r<   r¸   r¹   r³   r"   rV   rº   rÄ   r   r   r   ÚtestMultipleSynchronous  s   z#ExpectTests.testMultipleSynchronousÚresúfailure.Failurec                 C  s$   |   t|dƒ¡ |  |jtj¡ d S )NÚtype)rz   Úhasattrr"   rÊ   r   Z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"   rV   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.
        )ri   TF)r{   r|   r}   r~   rƒ   ©r{   N)r"   r   ZCharacterAttributer   ÚBLUEZ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   Z_FormattingStateZwantOneZflushWarningsÚtest_wantOneDeprecatedr"   rV   ÚDeprecationWarning)r   ZwarningsShownZ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   Ztwisted.conch.insultsr   Ztwisted.conch.insults.insultsr   r   r   r   r	   r
   r   r   r   r   r   Ztwisted.pythonr   Ztwisted.trialr   r$   r&   ZTestCaser   rœ   rž   rµ   rÐ   r   r   r   r   Ú<module>   s"   4   `