Ë
    ojÆQ  ã                  ó*  — 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ej2                  «      Z G d„ d«      Z G d„ d«      Z G d„ dej2                  «      Z G d„ dej2                  «      Zy)é    )ÚannotationsN)ÚCallable)Úhelper)ÚBLINKÚBOLDÚG0ÚG1ÚG2ÚG3ÚNORMALÚREVERSE_VIDEOÚ	UNDERLINEÚmodesÚprivateModes)Úfailure)ÚunittestéP   é   c                  ó  — e Zd Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Z	d$d„Z
d$d	„Zd$d
„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Zd$d„Z d$d„Z!d$d „Z"d$d!„Z#d$d"„Z$y#)%ÚBufferTestsc                ój   — t        j                  «       | _        | j                  j                  «        y ©N)r   ÚTerminalBufferÚtermÚconnectionMade©Úselfs    ú@/usr/lib/python3/dist-packages/twisted/conch/test/test_helper.pyÚsetUpzBufferTests.setUp   s"   € Ü×)Ñ)Ó+ˆŒ	Ø�	‰	× Ñ Õ"ó    c                óh  — | j                  | j                  j                  t        «       | j                  | j                  j                  t
        «       | j                  | j                  j                  «       dt
        dz
  z  «       | j                  | j                  j                  «       d«       y )Nó   
é   ©r   r   )ÚassertEqualr   ÚwidthÚWIDTHÚheightÚHEIGHTÚ	__bytes__ÚreportCursorPositionr   s    r   ÚtestInitialStatezBufferTests.testInitialState#   sw   € Ø×Ñ˜Ÿ™Ÿ™¬%Ô0Ø×Ñ˜Ÿ™×)Ñ)¬6Ô2Ø×Ñ˜Ÿ™×,Ñ,Ó.°¼À!¹Ñ0DÔEØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÕBr    c                ó�   — | j                  t        j                  dt        j                  di| j                  j                  «       y)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   s    r   Útest_initialPrivateModesz$BufferTests.test_initialPrivateModes)   s7   € ð
 	×ÑÜ×#Ñ# T¬<×+CÑ+CÀTÐJØ�I‰I×"Ñ"õ	
r    c                óN  — | j                   j                  d«       | j                   j                  d«       | j                  | j                   j	                  «       d«       | j                   j                  d«       | j                  | j                   j	                  «       d«       y)zQ
        C{""} moves the cursor to the first column in the current row.
        é   é   ©r2   r3   ó   ©r   r3   N)r   ÚcursorForwardÚ
cursorDownr%   r+   ÚinsertAtCursorr   s    r   Útest_carriageReturnzBufferTests.test_carriageReturn3   st   € ð 	�	‰	×Ñ Ô"Ø�	‰	×Ñ˜QÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	× Ñ  Ô'Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÕBr    c                ó  — | j                   j                  d«       | j                  | j                   j                  «       d«       | j                   j	                  d«       | j                  | j                   j                  «       d«       y)zV
        C{"
"} moves the cursor to the next row without changing the column.
        r2   )r2   r   r"   ©r2   r#   N)r   r7   r%   r+   r9   r   s    r   Útest_linefeedzBufferTests.test_linefeed=   sb   € ð 	�	‰	×Ñ Ô"Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	× Ñ  Ô'Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÕBr    c                óN  — | j                   j                  d«       | j                   j                  d«       | j                  | j                   j	                  «       d«       | j                   j                  d«       | j                  | j                   j	                  «       d«       y)z:
        C{write} transforms C{"
"} into C{"
"}.
        r2   r3   r4   r"   ©r   é   N)r   r7   r8   r%   r+   Úwriter   s    r   Útest_newlinezBufferTests.test_newlineF   sr   € ð 	�	‰	×Ñ Ô"Ø�	‰	×Ñ˜QÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	�‰˜ÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÕBr    c                óV  — | j                   j                  j                  «       }| j                   j                  t        j                  t        j
                  g«       d|t        j                  <   d|t        j
                  <   | j                  || j                   j                  «       y)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   Úexpecteds     r   Útest_setPrivateModesz BufferTests.test_setPrivateModesP   sy   € ð
 —9‘9×)Ñ)×.Ñ.Ó0ˆØ�	‰	×!Ñ!¤<×#6Ñ#6¼×8KÑ8KÐ"LÔMØ(,ˆ”×$Ñ$Ñ%Ø(,ˆ”×$Ñ$Ñ%Ø×Ñ˜ 4§9¡9×#9Ñ#9Õ:r    c                óN  — | j                   j                  j                  «       }| j                   j                  t        j                  t        j
                  g«       |t        j                  = |t        j
                  = | j                  || j                   j                  «       y)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   rD   ÚresetPrivateModesr.   r/   r%   rH   s     r   Útest_resetPrivateModesz"BufferTests.test_resetPrivateModes[   su   € ð
 —9‘9×)Ñ)×.Ñ.Ó0ˆØ�	‰	×#Ñ#¤\×%;Ñ%;¼\×=UÑ=UÐ$VÔWØ”\×+Ñ+Ð,Ø”\×-Ñ-Ð.Ø×Ñ˜ 4§9¡9×#9Ñ#9Õ:r    c                óº  — | j                   j                  d«       | j                  | j                   j                  «       d«       | j                   j                  «        | j                  | j                   j                  «       d«       | j                   j                  t        «       | j                  | j                   j                  «       dt        dz
  f«       y )Nr3   r6   r?   r   r#   )r   r8   r%   r+   r)   r   s    r   ÚtestCursorDownzBufferTests.testCursorDownf   s•   € Ø�	‰	×Ñ˜QÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	×ÑÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	×ÑœVÔ$Ø×Ñ˜Ÿ™×7Ñ7Ó9¸A¼vÈ¹z¸?ÕKr    c                óØ  — | j                   j                  d«       | j                  | j                   j                  «       d«       | j                   j	                  d«       | j                   j                  d«       | j                  | j                   j                  «       d«       | j                   j                  d«       | j                  | j                   j                  «       d«       y )Nr2   r$   é   r#   )r   é   rR   )r   ÚcursorUpr%   r+   r8   r   s    r   ÚtestCursorUpzBufferTests.testCursorUpn   s¡   € Ø�	‰	×Ñ˜1ÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBà�	‰	×Ñ˜RÔ Ø�	‰	×Ñ˜1ÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸7ÔCà�	‰	×Ñ˜2ÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÕBr    c                ó¶  — | j                   j                  d«       | j                  | j                   j                  «       d«       | j                   j                  d«       | j                  | j                   j                  «       d«       | j                   j                  t        «       | j                  | j                   j                  «       t        df«       y )Né   )rV   r   )r@   r   r   )r   r7   r%   r+   r'   r   s    r   ÚtestCursorForwardzBufferTests.testCursorForwardy   s“   € Ø�	‰	×Ñ Ô"Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	×Ñ Ô"Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	×Ñ¤Ô&Ø×Ñ˜Ÿ™×7Ñ7Ó9¼EÀ1¸:ÕFr    c                ób  — | j                   j                  d«       | j                   j                  d«       | j                  | j                   j	                  «       d«       | j                   j                  d«       | j                  | j                   j	                  «       d«       | j                   j                  d«       | j                  | j                   j	                  «       d«       | j                   j                  d«       | j                  | j                   j	                  «       d«       y )Né
   rV   )é   r   é   )r#   r   r#   r$   )r   r7   ÚcursorBackwardr%   r+   r   s    r   ÚtestCursorBackwardzBufferTests.testCursorBackward�   sÐ   € Ø�	‰	×Ñ Ô#Ø�	‰	× Ñ  Ô#Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	× Ñ  Ô#Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	× Ñ  Ô#Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	× Ñ  Ô#Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÕBr    c                ó�   — | j                   j                  dd«       | j                  | j                   j                  «       d«       y )Nr3   é	   )r3   r_   )r   ÚcursorPositionr%   r+   r   s    r   ÚtestCursorPositioningz!BufferTests.testCursorPositioningŒ   s3   € Ø�	‰	× Ñ   AÔ&Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÕBr    c                ó²   — d}| j                   j                  |«       | j                  | j                   j                  «       |dz   dt        dz
  z  z   «       y )Nó   Hello, world.r"   rV   )r   rA   r%   r*   r)   ©r   Úss     r   ÚtestSimpleWritingzBufferTests.testSimpleWriting�   sF   € ØˆØ�	‰	�‰˜ÔØ×Ñ˜Ÿ™×,Ñ,Ó.°°E±	¸EÄVÈaÁZÑ<PÑ0PÕQr    c                ó�  — d}| j                   j                  |«       | j                   j                  t        |«      «       | j                   j	                  t
        j                  g«       | j                   j                  d«       | j                  | j                   j                  «       d|dd  z   dz   dt        dz
  z  z   «       y )Ns   hello, world.ó   Hr#   r"   rV   )
r   rA   r\   ÚlenÚ
resetModesr   ÚIRMr%   r*   r)   rd   s     r   ÚtestOvertypezBufferTests.testOvertype•   s’   € ØˆØ�	‰	�‰˜ÔØ�	‰	× Ñ ¤ Q£Ô(Ø�	‰	×ÑœeŸi™i˜[Ô)Ø�	‰	�‰˜ÔØ×ÑØ�I‰I×ÑÓ! D¨1¨Q¨R¨5¡L°EÑ#9¸EÄVÈaÁZÑ<PÑ#Põ	
r    c                óŠ  — d}| j                   j                  |«       | j                   j                  t        |«      «       | j                   j	                  t
        j                  g«       | j                   j                  d«       | j                  | j                   j                  «       d|z   dz   dt        dz
  z  z   «       y )Ns   ello, world.rh   r"   rV   )
r   rA   r\   ri   ÚsetModesr   rk   r%   r*   r)   rd   s     r   Ú
testInsertzBufferTests.testInsertŸ   sŒ   € ØˆØ�	‰	�‰˜ÔØ�	‰	× Ñ ¤ Q£Ô(Ø�	‰	×ÑœEŸI™I˜;Ô'Ø�	‰	�‰˜ÔØ×ÑØ�I‰I×ÑÓ! D¨1¡H°Ñ#5¸ÄÈ!ÁÑ8LÑ#Lõ	
r    c                óX  — d}| j                   j                  d«       | j                   j                  d«       | j                   j                  |«       | j	                  | j                   j                  «       d| j                   j                  dz  z   |z   dz   dt        dz
  z  z   «       y )Nrc   r2   s   




r"   r[   )r   r8   r7   rA   r%   r*   Úfillr)   rd   s     r   ÚtestWritingInTheMiddlez"BufferTests.testWritingInTheMiddle©   s†   € ØˆØ�	‰	×Ñ˜QÔØ�	‰	×Ñ Ô"Ø�	‰	�‰˜ÔØ×ÑØ�I‰I×ÑÓ!Ø˜Ÿ™Ÿ™¨!Ñ+Ñ,¨qÑ0°5Ñ8¸5ÄFÈQÁJÑ;OÑOõ	
r    c                ó4  — d}| j                   j                  t        dz
  «       | j                   j                  |«       | j	                  | j                   j                  «       |d d j                  t        «      dz   |dd  z   dz   dt        dz
  z  z   «       y )Nrc   r2   r"   r3   )r   r7   r'   rA   r%   r*   Úrjustr)   rd   s     r   ÚtestWritingWrappedAtEndOfLinez)BufferTests.testWritingWrappedAtEndOfLine³   s€   € ØˆØ�	‰	×Ñ¤¨¡	Ô*Ø�	‰	�‰˜ÔØ×ÑØ�I‰I×ÑÓ!ØˆbˆqˆE�K‰KœÓ Ñ&¨¨1¨2¨Ñ.°Ñ6¸Ä&È1Á*Ñ9MÑMõ	
r    c                óÊ  — | j                   j                  «        | j                  | j                   j                  «       d«       | j                   j	                  t
        «       | j                  | j                   j                  «       dt
        dz
  f«       | j                   j                  «        | j                  | j                   j                  «       dt
        dz
  f«       y )N©r   r#   r   r#   )r   Úindexr%   r+   r8   r)   r   s    r   Ú	testIndexzBufferTests.testIndex¼   s—   € Ø�	‰	�‰ÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	×ÑœVÔ$Ø×Ñ˜Ÿ™×7Ñ7Ó9¸A¼vÈ¹z¸?ÔKØ�	‰	�‰ÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸A¼vÈ¹z¸?ÕKr    c                óž  — | j                   j                  «        | j                  | j                   j                  «       d«       | j                   j	                  d«       | j                  | j                   j                  «       d«       | j                   j                  «        | j                  | j                   j                  «       d«       y )Nr$   rV   ©r   rV   rw   )r   ÚreverseIndexr%   r+   r8   r   s    r   ÚtestReverseIndexzBufferTests.testReverseIndexÄ   s‹   € Ø�	‰	×ÑÔ Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	×Ñ˜QÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	×ÑÔ Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÕBr    c                óž  — | j                   j                  «        | j                  | j                   j                  «       d«       | j                   j	                  d«       | j                  | j                   j                  «       d«       | j                   j                  «        | j                  | j                   j                  «       d«       y)zm
        C{nextLine} positions the cursor at the beginning of the row below the
        current row.
        rw   r2   r<   r{   N)r   ÚnextLiner%   r+   r7   r   s    r   Útest_nextLinezBufferTests.test_nextLineÌ   s�   € ð
 	�	‰	×ÑÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	×Ñ Ô"Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	×ÑÔØ×Ñ˜Ÿ™×7Ñ7Ó9¸6ÕBr    c                ó@  — | j                   j                  d«       | j                   j                  d«       | j                  | j                   j	                  «       d«       | j                   j                  «        | j                   j                  d«       | j                   j                  d«       | j                  | j                   j	                  «       d«       | j                   j                  «        | j                  | j                   j	                  «       d«       y )Nr2   r[   )r[   r2   r3   )r@   é   )r   r8   r7   r%   r+   Ú
saveCursorr\   ÚrestoreCursorr   s    r   ÚtestSaveCursorzBufferTests.testSaveCursorØ   sÁ   € Ø�	‰	×Ñ˜QÔØ�	‰	×Ñ Ô"Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÔBØ�	‰	×ÑÔØ�	‰	×Ñ˜QÔØ�	‰	× Ñ  Ô#Ø×Ñ˜Ÿ™×7Ñ7Ó9¸7ÔCØ�	‰	×ÑÔ!Ø×Ñ˜Ÿ™×7Ñ7Ó9¸6ÕBr    c                óx  — | j                   j                  «        | j                   j                  d«       | j                   j                  dd«      }| j	                  |d   d«       | j	                  |d   j
                  t        «       | j                   j                  dd«      }| j	                  |d   d«       | j	                  |d   j
                  t        «       | j                   j                  «        | j                   j                  d«       | j                   j                  dd«      }| j	                  |d   d«       | j	                  |d   j
                  t        «       | j                   j                  d	d«      }| j	                  |d   d«       | j	                  |d   j
                  t        «       y )
Ns   Hir   rh   r#   ó   is   !!rV   ó   !r3   )
r   ÚsingleShift2rA   ÚgetCharacterr%   Úcharsetr
   r   ÚsingleShift3r   ©r   Úchs     r   ÚtestSingleShiftszBufferTests.testSingleShiftsã   sJ  € Ø�	‰	×ÑÔ Ø�	‰	�‰˜Ôà�Y‰Y×#Ñ# A qÓ)ˆØ×Ñ˜˜A™ Ô%Ø×Ñ˜˜A™Ÿ™¬Ô+à�Y‰Y×#Ñ# A qÓ)ˆØ×Ñ˜˜A™ Ô%Ø×Ñ˜˜A™Ÿ™¬Ô+à�	‰	×ÑÔ Ø�	‰	�‰˜Ôà�Y‰Y×#Ñ# A qÓ)ˆØ×Ñ˜˜A™ Ô%Ø×Ñ˜˜A™Ÿ™¬Ô+à�Y‰Y×#Ñ# A qÓ)ˆØ×Ñ˜˜A™ Ô%Ø×Ñ˜˜A™Ÿ™¬Õ+r    c           	     óX  — d}d}d}| j                   j                  d«       | j                   j                  «        | j                   j                  d«       | j                   j                  «        | j                   j                  d«       t        }d}|||fD ]�  }t        t        |«      «      D ]X  }| j                   j                  ||«      }| j                  |d   |||dz    «       | j                  |d   j                  |«       ŒZ |t        k(  xr t        xs t        }|dz  }Œ‘ y )	Ns   Hellos   Worlds   Bye!s   Hello
s   World
s   Bye!
r   r#   )r   rA   ÚshiftOutÚshiftInr   Úrangeri   rŠ   r%   r‹   r	   )	r   Ús1Ús2Ús3ÚgÚhre   ÚirŽ   s	            r   ÚtestShiftingzBufferTests.testShiftingú   s   € ØˆØˆØˆØ�	‰	�‰˜
Ô#Ø�	‰	×ÑÔØ�	‰	�‰˜
Ô#Ø�	‰	×ÑÔØ�	‰	�‰˜	Ô"äˆØˆØ�b˜"�ò 	ˆAÜœ3˜q›6“]ò 3�Ø—Y‘Y×+Ñ+¨A¨qÓ1�Ø× Ñ   A¡¨¨!¨a°!©e¨Ô5Ø× Ñ   A¡§¡°Õ2ð3ð ”R‘’œBÒ$¤"ˆAØ�‰F‰Añ	r    c                ó:  — | j                   j                  t        t        t        t
        «       | j                   j                  d«       | j                   j                  t        «       | j                   j                  d«       | j                   j                  t        «       | j                   j                  d«       | j                   j                  t        «       | j                   j                  d«       | j                   j                  dd«      }| j                  |d   d«       | j                  |d   j                  «       | j                  |d   j                  «       | j                  |d   j                  «       | j                  |d   j                  «       | j                   j                  dd«      }| j                  |d   d«       | j                  |d   j                  «       | j                  |d   j                  «       | j                  |d   j                  «       | j                  |d   j                  «       | j                   j                  dd«      }| j                  |d   d«       | j                  |d   j                  «       | j                  |d   j                  «       | j                  |d   j                  «       | j                  |d   j                  «       | j                   j                  dd«      }| j                  |d   d«       | j                  |d   j                  «       | j                  |d   j                  «       | j                  |d   j                  «       | j                  |d   j                  «       y )	Nó   Wó   Xó   Yó   Zr   r#   rV   r3   )r   ÚselectGraphicRenditionr   r   r   r   rA   r   rŠ   r%   Ú
assertTrueÚboldÚ	underlineÚblinkÚreverseVideoÚassertFalser�   s     r   ÚtestGraphicRenditionz BufferTests.testGraphicRendition  s’  € Ø�	‰	×(Ñ(¬¬y¼%ÄÔOØ�	‰	�‰˜ÔØ�	‰	×(Ñ(¬Ô0Ø�	‰	�‰˜ÔØ�	‰	×(Ñ(¬Ô/Ø�	‰	�‰˜ÔØ�	‰	×(Ñ(¬Ô.Ø�	‰	�‰˜Ôà�Y‰Y×#Ñ# A qÓ)ˆØ×Ñ˜˜A™ Ô%Ø�‰˜˜1™Ÿ
™
Ô#Ø�‰˜˜1™Ÿ™Ô(Ø�‰˜˜1™Ÿ™Ô$Ø�‰˜˜1™×*Ñ*Ô+à�Y‰Y×#Ñ# A qÓ)ˆØ×Ñ˜˜A™ Ô%Ø×Ñ˜˜A™Ÿ™Ô$Ø×Ñ˜˜A™Ÿ™Ô)Ø×Ñ˜˜A™Ÿ™Ô%Ø×Ñ˜˜A™×+Ñ+Ô,à�Y‰Y×#Ñ# A qÓ)ˆØ×Ñ˜˜A™ Ô%Ø�‰˜˜1™Ÿ™Ô$Ø×Ñ˜˜A™Ÿ™Ô$Ø×Ñ˜˜A™Ÿ™Ô)Ø×Ñ˜˜A™×+Ñ+Ô,à�Y‰Y×#Ñ# A qÓ)ˆØ×Ñ˜˜A™ Ô%Ø�‰˜˜1™Ÿ™Ô$Ø�‰˜˜1™Ÿ
™
Ô#Ø×Ñ˜˜A™Ÿ™Ô)Ø×Ñ˜˜A™×+Ñ+Õ,r    c                ó’  — d}d}| j                   j                  t        j                  t        j                  z   t        j
                  t        j                  z   «       | j                   j                  |dz   «       | j                   j                  t        «       | j                   j                  |dz   «       t        t        |«      «      D �]/  }| j                   j                  |d«      }| j                  |d   |||dz    «       | j                  |d   j                  t        «       | j                  |d   j                   «       | j                  |d   j"                  «       | j                  |d   j$                  «       | j                  |d   j&                  «       | j                  |d   j(                  t        j                  «       | j                  |d   j*                  t        j                  «       �Œ2 t        t        |«      «      D �]/  }| j                   j                  |d«      }| j                  |d   |||dz    «       | j                  |d   j                  t        «       | j                  |d   j                   «       | j                  |d   j"                  «       | j                  |d   j$                  «       | j                  |d   j&                  «       | j                  |d   j(                  t        j,                  «       | j                  |d   j*                  t        j.                  «       �Œ2 y )Ns
   Merry xmass   Just kiddingr"   r   r#   )r   r    r   Ú
FOREGROUNDÚREDÚ
BACKGROUNDÚGREENrA   r   r“   ri   rŠ   r%   r‹   r   r¦   r¢   r£   r¤   r¥   Ú
foregroundÚ
backgroundÚWHITEÚBLACK)r   r”   r•   r™   rŽ   s        r   ÚtestColorAttributeszBufferTests.testColorAttributes4  sq  € ØˆØˆØ�	‰	×(Ñ(Ü×Ñ¤§
¡
Ñ*¬F×,=Ñ,=ÄÇÁÑ,Lô	
ð 	�	‰	�‰˜˜U™
Ô#Ø�	‰	×(Ñ(¬Ô0Ø�	‰	�‰˜˜U™
Ô#ä”s˜2“w“ó 		=ˆAØ—‘×'Ñ'¨¨1Ó-ˆBØ×Ñ˜R ™U B q¨1¨q©5 MÔ2Ø×Ñ˜R ™UŸ]™]¬BÔ/Ø×Ñ˜R ™UŸZ™ZÔ(Ø×Ñ˜R ™UŸ_™_Ô-Ø×Ñ˜R ™UŸ[™[Ô)Ø×Ñ˜R ™U×/Ñ/Ô0Ø×Ñ˜R ™U×-Ñ-¬v¯z©zÔ:Ø×Ñ˜R ™U×-Ñ-¬v¯|©|Ö<ð		=ô ”s˜2“w“ó 		=ˆAØ—‘×'Ñ'¨¨1Ó-ˆBØ×Ñ˜R ™U B q¨1¨q©5 MÔ2Ø×Ñ˜R ™UŸ]™]¬BÔ/Ø×Ñ˜R ™UŸZ™ZÔ(Ø×Ñ˜R ™UŸ_™_Ô-Ø×Ñ˜R ™UŸ[™[Ô)Ø×Ñ˜R ™U×/Ñ/Ô0Ø×Ñ˜R ™U×-Ñ-¬v¯|©|Ô<Ø×Ñ˜R ™U×-Ñ-¬v¯|©|Ö<ñ		=r    c                ób  — d}d}d}| j                   j                  dj                  |||f«      dz   «       | j                   j                  dd«       | j                   j	                  «        | j                  | j                   j                  «       |dz   dz   |z   dz   dt        dz
  z  z   «       y )Ns   line 1s   line 2s   line 3r"   r#   r@   )r   rA   Újoinr`   Ú	eraseLiner%   r*   r)   ©r   r”   r•   r–   s       r   ÚtestEraseLinezBufferTests.testEraseLineT  s›   € ØˆØˆØˆØ�	‰	�‰˜Ÿ
™
 B¨¨B <Ó0°5Ñ8Ô9Ø�	‰	× Ñ   AÔ&Ø�	‰	×ÑÔà×ÑØ�I‰I×ÑÓ!Ø�‰J˜Ñ Ñ# eÑ+¨e´vÀ±zÑ.BÑBõ	
r    c                ó"  — d}| j                   j                  |«       | j                   j                  d«       | j                   j                  «        | j	                  | j                   j                  «       |d d dz   dt        dz
  z  z   «       y )Nrc   r2   éûÿÿÿr"   rV   )r   rA   r\   ÚeraseToLineEndr%   r*   r)   rd   s     r   ÚtestEraseToLineEndzBufferTests.testEraseToLineEnda  so   € ØˆØ�	‰	�‰˜ÔØ�	‰	× Ñ  Ô#Ø�	‰	× Ñ Ô"Ø×Ñ˜Ÿ™×,Ñ,Ó.°°#°2°¸±ÀÌ&ÐSTÉ*ÑAUÑ0UÕVr    c                óR  — d}| j                   j                  |«       | j                   j                  d«       | j                   j                  «        | j	                  | j                   j                  «       |dd  j                  t        |«      «      dz   dt        dz
  z  z   «       y )Nrc   r2   éüÿÿÿr"   rV   )	r   rA   r\   ÚeraseToLineBeginningr%   r*   rt   ri   r)   rd   s     r   ÚtestEraseToLineBeginningz$BufferTests.testEraseToLineBeginningh  s€   € ØˆØ�	‰	�‰˜ÔØ�	‰	× Ñ  Ô#Ø�	‰	×&Ñ&Ô(Ø×ÑØ�I‰I×ÑÓ! 1 R S 6§<¡<´°A³Ó#7¸%Ñ#?À%Ì6ÐTUÉ:ÑBVÑ#Võ	
r    c                ó  — | j                   j                  d«       | j                   j                  d«       | j                   j                  «        | j                  | j                   j	                  «       dt
        dz
  z  «       y )Ns   Hello world
s   Goodbye world
r"   r#   )r   rA   ÚeraseDisplayr%   r*   r)   r   s    r   ÚtestEraseDisplayzBufferTests.testEraseDisplayq  sZ   € Ø�	‰	�‰Ð(Ô)Ø�	‰	�‰Ð*Ô+Ø�	‰	×ÑÔ à×Ñ˜Ÿ™×,Ñ,Ó.°¼À!¹Ñ0DÕEr    c                óX  — d}d}| j                   j                  dj                  ||df«      «       | j                   j                  dd«       | j                   j	                  «        | j                  | j                   j                  «       |dz   |d d z   dz   dt        dz
  z  z   «       y )Nó   Hello worldó   Goodbye worldr"   r    r2   r#   r3   )r   rA   r³   r`   ÚeraseToDisplayEndr%   r*   r)   ©r   r”   r•   s      r   ÚtestEraseToDisplayEndz!BufferTests.testEraseToDisplayEndx  s’   € ØˆØˆØ�	‰	�‰˜Ÿ
™
 B¨¨C =Ó1Ô2Ø�	‰	× Ñ   AÔ&Ø�	‰	×#Ñ#Ô%à×ÑØ�I‰I×ÑÓ! 2¨¡:°°2°A°Ñ#6¸Ñ#>ÀÌ&ÐSTÉ*ÑAUÑ#Uõ	
r    c           	     ó€  — d}d}| j                   j                  dj                  ||f«      «       | j                   j                  dd«       | j                   j	                  «        | j                  | j                   j                  «       d|dd  j                  t        |«      «      z   dz   dt        dz
  z  z   «       y )NrÃ   rÄ   r"   r2   r#   é   r3   )
r   rA   r³   r`   ÚeraseToDisplayBeginningr%   r*   rt   ri   r)   rÆ   s      r   ÚtestEraseToDisplayBeginningz'BufferTests.testEraseToDisplayBeginningƒ  s™   € ØˆØˆØ�	‰	�‰˜Ÿ
™
 B¨ 8Ó,Ô-Ø�	‰	× Ñ   AÔ&Ø�	‰	×)Ñ)Ô+à×ÑØ�I‰I×ÑÓ!Ø�B�q�r�F—L‘L¤ R£Ó)Ñ)¨EÑ1°E¼VÀa¹ZÑ4HÑHõ	
r    c                óV  — d}d}| j                   j                  dj                  ||f«      «       | j                   j                  dd«       | j                   j	                  «        | j                  | j                   j                  «       |dz   dz   |z   dz   dt        dz
  z  z   «       y )NrÃ   rÄ   r"   r[   r#   r@   )r   rA   r³   r`   Ú
insertLiner%   r*   r)   rÆ   s      r   ÚtestLineInsertionzBufferTests.testLineInsertion�  s�   € ØˆØˆØ�	‰	�‰˜Ÿ
™
 B¨ 8Ó,Ô-Ø�	‰	× Ñ   AÔ&Ø�	‰	×ÑÔà×ÑØ�I‰I×ÑÓ!Ø�‰J˜Ñ Ñ# eÑ+¨e´vÀ±zÑ.BÑBõ	
r    c                óV  — d}d}d}| j                   j                  dj                  |||f«      «       | j                   j                  dd«       | j                   j	                  «        | j                  | j                   j                  «       |dz   |z   dz   dt        dz
  z  z   «       y )NrÃ   s   Middle wordsrÄ   r"   r_   r#   r3   )r   rA   r³   r`   Ú
deleteLiner%   r*   r)   rµ   s       r   ÚtestLineDeletionzBufferTests.testLineDeletion›  s�   € ØˆØˆØˆØ�	‰	�‰˜Ÿ
™
 B¨¨B <Ó0Ô1Ø�	‰	× Ñ   AÔ&Ø�	‰	×ÑÔà×ÑØ�I‰I×ÑÓ! 2¨¡:°¡?°UÑ#:¸UÄfÈqÁjÑ=QÑ#Qõ	
r    N©ÚreturnÚNone)%Ú__name__Ú
__module__Ú__qualname__r   r,   r0   r:   r=   rB   rJ   rM   rO   rT   rW   r]   ra   rf   rl   ro   rr   ru   ry   r}   r€   r…   r�   rš   r§   r±   r¶   rº   r¾   rÁ   rÇ   rË   rÎ   rÑ   © r    r   r   r      s¾   „ ó#óCó
óCóCóCó	;ó	;óLó	CóGó	CóCóRó

ó
ó
ó
óLóCó
Có	Có,ó.ó($-óL=ó@
óWó
óFó	
ó

ó

ô

r    r   c                  óL   — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zd	d„Zd	d„Zy)
ÚFakeDelayedCallFc                óJ   — || _         || _        || _        || _        || _        y r   )ÚfsÚtimeoutÚfÚaÚkw)r   rÜ   rÝ   rÞ   rß   rà   s         r   Ú__init__zFakeDelayedCall.__init__¬  s'   € ð ˆŒØˆŒØˆŒØˆŒØˆ�r    c                ó8   — | j                   xs | j                   S r   )Ú	cancelledÚcalledr   s    r   ÚactivezFakeDelayedCall.activeº  s   € Ø—N‘NÒ1 d§k¡kÐ2Ð2r    c                ó   — d| _         y ©NT)rã   r   s    r   ÚcancelzFakeDelayedCall.cancel½  s	   € Øˆ�r    c                ó^   — d| _          | j                  | j                  i | j                  ¤Ž y rç   )rä   rÞ   rß   rà   r   s    r   ÚcallzFakeDelayedCall.callÂ  s$   € ØˆŒØˆ�‰�—‘Ð"˜$Ÿ'™'Ó"r    N)rÜ   ÚFakeSchedulerrÝ   ÚfloatrÞ   úCallable[..., None]rß   ztuple[object, ...]rà   zdict[str, object]rÓ   rÔ   )rÓ   ÚboolrÒ   )	rÕ   rÖ   r×   rä   rã   rá   rå   rè   rê   rØ   r    r   rÚ   rÚ   ¨  sZ   „ Ø€FØ€Iðàðð ðð ð	ð
 ðð ðð 
óó3óô
#r    rÚ   c                  ó0   — e Zd Zdd„Z	 	 	 	 	 	 	 	 	 	 dd„Zy)rë   c                ó   — g | _         y r   )Úcallsr   s    r   rá   zFakeScheduler.__init__È  s	   € Ø,.ˆ�
r    c           	     óp   — | j                   j                  t        | ||||«      «       | j                   d   S )Néÿÿÿÿ)rñ   ÚappendrÚ   )r   rÝ   rÞ   rß   rà   s        r   Ú	callLaterzFakeScheduler.callLaterË  s1   € ð 	�
‰
×Ñœ/¨$°¸¸A¸rÓBÔCØ�z‰z˜"‰~Ðr    NrÒ   )
rÝ   rì   rÞ   rí   rß   Úobjectrà   rö   rÓ   rÚ   )rÕ   rÖ   r×   rá   rõ   rØ   r    r   rë   rë   Ç  s4   „ ó/ðØðØ!4ðØ:@ðØHNðà	ôr    rë   c                  óT   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd	„Zy
)ÚExpectTestsc                óˆ   — t        j                  «       | _        | j                  j                  «        t	        «       | _        y r   )r   ÚExpectableBufferr   r   rë   rÜ   r   s    r   r   zExpectTests.setUpÓ  s+   € Ü×+Ñ+Ó-ˆŒ	Ø�	‰	× Ñ Ô"Ü“/ˆ�r    c                óN  — g }| j                   j                  dd| j                  ¬«      }|j                  |j                  «       | j                   j                  d«       | j                  |«       | j                   j                  d«       | j                  |«       | j                  |d   j                  «       d«       | j                  t        | j                  j                  «      d«       | j                  | j                  j                  d   j                  «       «       y )Nó   hello worldr#   ©rÝ   Ú	schedulers   greeting puny earthlings
s   hello world
r   )r   ÚexpectrÜ   ÚaddCallbackrô   rA   r¦   r¡   r%   Úgroupri   rñ   rå   ©r   ÚresultÚds      r   ÚtestSimpleStringzExpectTests.testSimpleStringØ  sÎ   € Ø(*ˆØ�I‰I×Ñ˜^°QÀ$Ç'Á'ÐÓJˆØ	�‰�f—m‘mÔ$à�	‰	�‰Ð5Ô6Ø×Ñ˜Ô Ø�	‰	�‰Ð(Ô)Ø�‰˜ÔØ×Ñ˜ ™Ÿ™Ó*¨NÔ;Ø×Ñœ˜TŸW™WŸ]™]Ó+¨QÔ/Ø×Ñ˜Ÿ™Ÿ™ qÑ)×0Ñ0Ó2Õ3r    c                óä  — g }| j                   j                  d«      }|j                  |j                  «       | j	                  |«       | j                   j                  d«       | j	                  |«       | j                   j                  d«       | j	                  |«       | j                   j                  d«       | j                  |«       | j                  |d   j                  «       d«       y )Nrü   ó   hello s   worló   dr   )	r   rÿ   r   rô   r¦   rA   r¡   r%   r  r  s      r   ÚtestBrokenUpStringzExpectTests.testBrokenUpStringå  s¬   € Ø(*ˆØ�I‰I×Ñ˜^Ó,ˆØ	�‰�f—m‘mÔ$à×Ñ˜Ô Ø�	‰	�‰˜	Ô"Ø×Ñ˜Ô Ø�	‰	�‰˜Ô Ø×Ñ˜Ô Ø�	‰	�‰˜ÔØ�‰˜ÔØ×Ñ˜ ™Ÿ™Ó*¨NÕ;r    c                ó¾  — g }| j                   j                  d«      }|j                  |j                  «       | j                   j                  d«      }|j                  |j                  «       | j	                  |«       | j                   j                  d«       | j	                  |«       | j                   j                  d«       | j                  t        |«      d«       | j                   j                  d«       | j                  t        |«      d«       | j                  |d   j                  «       d«       | j                  |d   j                  «       d«       y )Nr  ó   worlds   helloó    r#   rV   r   )	r   rÿ   r   rô   r¦   rA   r%   ri   r  ©r   r  Úd1Úd2s       r   ÚtestMultiplezExpectTests.testMultipleó  sù   € Ø(*ˆØ�Y‰Y×Ñ˜iÓ(ˆØ
�‰�v—}‘}Ô%Ø�Y‰Y×Ñ˜hÓ'ˆØ
�‰�v—}‘}Ô%à×Ñ˜Ô Ø�	‰	�‰˜Ô!Ø×Ñ˜Ô Ø�	‰	�‰˜ÔØ×Ñœ˜V› aÔ(Ø�	‰	�‰˜Ô!Ø×Ñœ˜V› aÔ(Ø×Ñ˜ ™Ÿ™Ó*¨IÔ6Ø×Ñ˜ ™Ÿ™Ó*¨HÕ5r    c                ó  — | j                   j                  d«       g }| j                   j                  d«      }|j                  |j                  «       | j                  |«       | j                  |d   j                  «       d«       y )Nrü   r   )r   rA   rÿ   r   rô   r¡   r%   r  r  s      r   ÚtestSynchronouszExpectTests.testSynchronous  sb   € Ø�	‰	�‰˜Ô'à(*ˆØ�I‰I×Ñ˜^Ó,ˆØ	�‰�f—m‘mÔ$Ø�‰˜ÔØ×Ñ˜ ™Ÿ™Ó*¨NÕ;r    c                óØ  — | j                   j                  d«       g }| j                   j                  d«      }|j                  |j                  «       | j                   j                  d«      }|j                  |j                  «       | j                  t        |«      d«       | j                  |d   j                  «       d«       | j                  |d   j                  «       d«       y )Ns   goodbye worlds   byer  rV   r   r#   )r   rA   rÿ   r   rô   r%   ri   r  r  s       r   ÚtestMultipleSynchronousz#ExpectTests.testMultipleSynchronous  sª   € Ø�	‰	�‰Ð(Ô)à(*ˆØ�Y‰Y×Ñ˜fÓ%ˆØ
�‰�v—}‘}Ô%Ø�Y‰Y×Ñ˜hÓ'ˆØ
�‰�v—}‘}Ô%à×Ñœ˜V› aÔ(Ø×Ñ˜ ™Ÿ™Ó*¨FÔ3Ø×Ñ˜ ™Ÿ™Ó*¨HÕ5r    c                óŽ   — | j                  t        |d«      «       | j                  |j                  t        j
                  «       y )NÚtype)r¡   Úhasattrr%   r  r   ÚExpectationTimeout)r   Úress     r   Ú_cbTestTimeoutFailurez!ExpectTests._cbTestTimeoutFailure  s/   € Ø�‰œ  VÓ,Ô-Ø×Ñ˜Ÿ™¤6×#<Ñ#<Õ=r    c                óØ   — | j                   j                  dd| j                  ¬«      }|j                  | j                  «       | j                  j
                  d   j                  «        y )Nrü   r#   rý   r   )r   rÿ   rÜ   ÚaddBothr  rñ   rê   )r   r  s     r   ÚtestTimeoutFailurezExpectTests.testTimeoutFailure  sL   € Ø�I‰I×Ñ˜^°QÀ$Ç'Á'ÐÓJˆØ	�	‰	�$×,Ñ,Ô-Ø�‰�‰�aÑ×ÑÕr    c                óú  — | j                   j                  d«       g }| j                   j                  dd| j                  ¬«      }|j	                  | j
                  «       | j                   j                  d«      }|j                  |j                  «       | j                  j                  d   j                  «        | j                  t        |«      d«       | j                  |d   j                  «       d«       y )Ns   not zoomtasticrü   r#   rý   s   zoomr   )r   rA   rÿ   rÜ   r  r  r   rô   rñ   rê   r%   ri   r  r  s       r   ÚtestOverlappingTimeoutz"ExpectTests.testOverlappingTimeout#  sµ   € Ø�	‰	�‰Ð)Ô*à(*ˆØ�Y‰Y×Ñ˜n°aÀ4Ç7Á7ÐÓKˆØ
�
‰
�4×-Ñ-Ô.Ø�Y‰Y×Ñ˜gÓ&ˆØ
�‰�v—}‘}Ô%à�‰�‰�aÑ×ÑÔà×Ñœ˜V› aÔ(Ø×Ñ˜ ™Ÿ™Ó*¨GÕ4r    NrÒ   )r  zfailure.FailurerÓ   rÔ   )rÕ   rÖ   r×   r   r  r	  r  r  r  r  r  r  rØ   r    r   rø   rø   Ò  s/   „ ó"ó
4ó<ó6ó"<ó6ó>ó ô
5r    rø   c                  ó    — e Zd ZdZdd„Zdd„Zy)ÚCharacterAttributeTestszG
    Tests for L{twisted.conch.insults.helper.CharacterAttribute}.
    c           
     ó�  — | j                  t        j                  «       t        j                  «       «       | j                  t        j                  «       t        j                  t        ¬«      «       | j                  t        j                  ddddt        j                  ¬«      t        j                  ddddt        j                  ¬«      «       | j                  t        j                  «       t        j                  t        ¬«      «       | j                  t        j                  d¬«      t        j                  d¬«      «       y)z±
        L{CharacterAttribute}s must have matching character attribute values
        (bold, blink, underline, etc) with the same values to be considered
        equal.
        )r‹   TF)r¢   r£   r¤   r¥   r­   ©r¢   N)r%   r   ÚCharacterAttributer   ÚBLUEÚassertNotEqualr	   r   s    r   Útest_equalityz%CharacterAttributeTests.test_equality7  sö   € ð 	×Ñœ×2Ñ2Ó4´f×6OÑ6OÓ6QÔRà×ÑÜ×%Ñ%Ó'¬×)BÑ)BÌ2Ô)Nô	
ð 	×ÑÜ×%Ñ%ØØØØ!Ü!Ÿ;™;ôô ×%Ñ%ØØØØ!Ü!Ÿ;™;ôô	
ð" 	×ÑÜ×%Ñ%Ó'¬×)BÑ)BÌ2Ô)Nô	
ð 	×ÑÜ×%Ñ%¨4Ô0´&×2KÑ2KÐQVÔ2Wõ	
r    c                ó,  — t        j                  «       j                  d¬«       | j                  | j                  g«      }| j                  t        |«      d«       | j                  |d   d   t        «       d}| j                  |d   d   d|z  «       y	)
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%   ri   ÚDeprecationWarning)r   ÚwarningsShownÚdeprecatedClasss      r   r.  z.CharacterAttributeTests.test_wantOneDeprecated\  s�   € ô 	×ÑÓ!×)Ñ)¨tÐ)Ô4à×*Ñ*¨D×,GÑ,GÐ+HÓIˆØ×Ñœ˜]Ó+¨QÔ/Ø×Ñ˜ qÑ)¨*Ñ5Ô7IÔJØQˆØ×ÑØ˜!Ñ˜YÑ'Ø1°_ÑEõ	
r    NrÒ   )rÕ   rÖ   r×   Ú__doc__r'  r.  rØ   r    r   r!  r!  2  s   „ ñó#
ôJ
r    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   ú<module>r;     s‰   ðõ #ã 	Ý å (÷÷ ÷ ñ õ #Ý "à
€Ø	€ôG
�(×#Ñ#ô G
÷T#ñ #÷>ñ ô]5�(×#Ñ#ô ]5ô@9
˜h×/Ñ/õ 9
r    