ó
    Ö›‘hs}  ã                   ó8  • S SK r S SKJrJr  S SKJrJr  S SKJrJ	r	J
r
JrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S	 rS
 rS rS r \!" 5       r"S r#S r$\$" SS/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S Q/\ RJ                  " S!5      S"9r&\$" S#SSS$/SS%/S&S'/S(S)/SS*/S+S,/S-S./S/S0/S1S2/S3S/S4S5/S6S7/S8S9/S:S;/S<S=/S>S?//\ RJ                  " S@5      S"9r' " SA SB5      r( " SC SD5      r)SEr* " SF SG\)5      r+C* " SH SI\+\RX                  5      r- " SJ SK\+\RX                  5      r. " SL SM\+\RX                  5      r/ " SN SO\+\RX                  5      r0 " SP SQ\RX                  \)5      r1 " SR SS\RX                  5      r2g)Té    N)ÚOptionalÚType)ÚValueConstantÚValues)ÚBLINKÚCS_ALTERNATEÚCS_ALTERNATE_SPECIALÚ
CS_DRAWINGÚCS_UKÚCS_USÚG0ÚG1Ú	UNDERLINEÚClientProtocolÚServerProtocolÚmodesÚprivateModes)ÚProtocol)ÚStringTransport)Ú	iterbytes)Úunittestc                 ó(   • [         [        U ]  U5      $ ©N)ÚsuperÚMockÚ__getattribute__)ÚmockÚnames     ÚcC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/conch/test/test_insults.pyÚ_getattrr       s   € Ü”�tÑ-¨dÓ3Ð3ó    c                 ó   • [        U S5      $ )NÚoccurrences©r    ©r   s    r   r#   r#   #   s   € Ü�D˜-Ó(Ð(r!   c                 ó   • [        U S5      $ )NÚmethodsr$   r%   s    r   r'   r'   '   s   € Ü�D˜)Ó$Ð$r!   c                 ó8   • [        U 5      R                  U5        g r   )r#   Úappend)r   Úobjs     r   Ú_appendr+   +   s   € Ü�Ó×Ñ˜SÕ!r!   c                 ó8   • [        [        U S-  U-  /5      5      $ )aÙ  
Return the byte in 7- or 8-bit code table identified by C{column}
and C{row}.

"An 8-bit code table consists of 256 positions arranged in 16
columns and 16 rows.  The columns and rows are numbered 00 to 15."

"A 7-bit code table consists of 128 positions arranged in 8
columns and 16 rows.  The columns are numbered 00 to 07 and the
rows 00 to 15 (see figure 1)."

p.5 of "Standard ECMA-35: Character Code Structure and Extension
Techniques", 6th Edition (December 1994).
é   )ÚbytesÚ	bytearray)ÚcolumnÚrows     r   Ú_ecmaCodeTableCoordinater2   2   s    € ô" ”˜V q™[¨CÑ/Ð0Ó1Ó2Ð2r!   c                 óì   • [        U5       VVVV s0 s H;  u  pE[        U5        H&  u  p`U (       d  M  U [        [        Xa-   U5      5      _M(     M=     nnnnn X7S'   [        W [        4U5      $ s  sn nnnf )NÚ__doc__)Ú	enumerater   r2   Útyper   )r   Ú	colOffsetÚnamesÚdocÚjr1   ÚiÚattrss           r   Ú_makeControlFunctionSymbolsr=   F   sx   € ô   Ô&öâ&‰FˆAÜ  —~‰GˆAÜó 	HˆŒmÔ4°Q±]ÀAÓFÓGÒGá%ñ 	Ù&ð 
ó ð ˆ)ÑÜ�”v�i Ó'Ð'ùõs
   ‘A.
³ A.
ÚCSFinalByter-   )ÚICHÚDCHÚHPA)ÚCUUÚSSEÚHPR)ÚCUDÚCPRÚREP)ÚCUFÚSUÚDA)ÚCUBÚSDÚVPA)ÚCNLÚNPÚVPR)ÚCPLÚPPÚHVP)ÚCHAÚCTCÚTBC)ÚCUPÚECHÚSM)ÚCHTÚCVTÚMC)ÚEDÚCBTÚHPB)ÚELÚSRSÚVPB)ÚILÚPTXÚRM)ÚDLÚSDSÚSGR)ÚEFÚSIMDÚDSR)ÚEANÚDAQaW  
    Symbolic constants for all control sequence final bytes
    that do not imply intermediate bytes.  This happens to cover
    movement control sequences.

    See page 11 of "Standard ECMA 48: Control Functions for Coded
    Character Sets", 5th Edition (June 1991).

    Each L{ValueConstant} maps a control sequence name to L{bytes}
    )r7   r8   r9   Ú
C1SevenBitÚDCSÚPU1ÚBPHÚPU2ÚNBHÚSTSÚCCHÚNELÚMWÚSSAÚSPAÚESAÚEPAÚHTSÚSOSÚHTJÚVTSÚSCIÚPLDÚCSIÚPLUÚSTÚRIÚOSCÚSS2ÚPMÚSS3ÚAPCa   
    Symbolic constants for all 7 bit versions of the C1 control functions

    See page 9 "Standard ECMA 48: Control Functions for Coded
    Character Sets", 5th Edition (June 1991).

    Each L{ValueConstant} maps a control sequence name to L{bytes}
    c                   ó2   • \ rS rSr\rS\4S jrS rS rSr	g)r   éœ   Nc                 óH   • / U l         Uc  0 nXl        U[        La  X l        gg)zi
@param methods: Mapping of names to return values
@param callReturnValue: object __call__ should return
N)r#   r'   ÚdefaultÚcallReturnValue)Úselfr'   r�   s      r   Ú__init__ÚMock.__init__Ÿ   s.   € ð
 ˆÔØ‰?ØˆGØŒØ¤'Ò)Ø#2Õ ð *r!   c                 ób   • [        U S5      nU[        L a
  [        5       n[        U SX1U45        U$ )Nr�   Ú__call__)r    rŽ   r   r+   )r�   ÚaÚkwÚreturnValues       r   r”   ÚMock.__call__«   s5   € Ü˜tÐ%6Ó7ˆØœ'Ò!Ü›&ˆKä��z ;°2Ð6Ô7ØÐr!   c                 ón   • [        U S5      nX;   a  [        X!   S9nO
[        5       n[        XU45        U$ )Nr'   )r�   )r    r   r+   )r�   r   r'   Ú	attrValues       r   r   ÚMock.__getattribute__³   s9   € Ü˜4 Ó+ˆØ‹?Ü¨W©]Ñ;‰Iä›ˆIä�˜YÐ'Ô(ØÐr!   )r�   r'   r#   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__rŽ   r�   r‘   r”   r   Ú__static_attributes__© r!   r   r   r   œ   s   † Ø€Oà#°Wô 
3òõr!   r   c                   ó"   • \ rS rSrS0 4S jrSrg)Ú	MockMixiné¾   r¡   c                 ó   • Uu  pVU R                  XR5        U R                  [        [        U5      5      S5        [        U5      u  u  pxpšU R                  US5        U R                  X“5        U R                  X¤5        U$ )Né   r”   )ÚassertEqualÚlenr#   )r�   Ú
occurrenceÚ
methodNameÚexpectedPositionalArgsÚexpectedKeywordArgsÚattrr   ÚcallÚresultÚargsr–   s              r   Ú
assertCallÚMockMixin.assertCall¿   sv   € ð  ‰
ˆØ×Ñ˜Ô*Ø×Ñœœ[¨Ó.Ó/°Ô3Ü%0°Ó%6Ñ"Ñ	!ˆ$˜Ø×Ñ˜˜zÔ*Ø×Ñ˜Ô6Ø×Ñ˜Ô1Øˆr!   N)rœ   r�   rž   rŸ   r±   r    r¡   r!   r   r£   r£   ¾   s   † à=?ÐUW÷
r!   r£   a“  def testByte%(groupName)s(self):
    transport = StringTransport()
    proto = Mock()
    parser = self.protocolFactory(lambda: proto)
    parser.factory = self
    parser.makeConnection(transport)

    bytes = self.TEST_BYTES
    while bytes:
        chunk = bytes[:%(bytesPer)d]
        bytes = bytes[%(bytesPer)d:]
        parser.dataReceived(chunk)

    self.verifyResults(transport, proto, parser)
c                   ón   • \ rS rSr% Sr\\\      \S'   S H  u  r	r
\" \\	\
S.-  5        M     C	C
S rSrg)ÚByteGroupingsMixinéÞ   NÚprotocolFactory))ÚPairsé   )ÚTriplesé   )ÚQuadsr-   )ÚQuintsé   )ÚSexesé   )Ú	groupNameÚbytesPerc                 ó’   • U R                  [        U5      R                  S5      SU45      nU R                  [        U5      / 5        g )Nr   ÚmakeConnection)r±   r#   Úpopr§   )r�   Ú	transportÚprotoÚparserr¯   s        r   ÚverifyResultsÚ ByteGroupingsMixin.verifyResultsë   s<   € Ø—‘¤¨UÓ!3×!7Ñ!7¸Ó!:Ð<LÈvÈiÓXˆØ×Ñœ VÓ,¨bÕ1r!   r¡   )rœ   r�   rž   rŸ   r¶   r   r   r   Ú__annotations__ÚwordÚnÚexecÚ_byteGroupingTestTemplaterÈ   r    r¡   r!   r   r´   r´   Þ   sF   ‡ Ø04€O�X˜d 8™nÑ-Ó4ó‰ˆˆañ 	Ð&°tÈÑ)KÑKÖLñð 	ˆaõ2r!   r´   c                   ó"   • \ rS rSr\rSrS rSrg)ÚServerArrowKeysTestséó   s   [A[B[C[Dc                 ó^  • [         R                  XX#5        UR                  UR                  UR                  UR
                  4 HK  nU R                  [        U5      R                  S5      SUS 45      nU R                  [        U5      / 5        MM     U R                  [        U5      5        g )Nr   ÚkeystrokeReceived)r´   rÈ   ÚUP_ARROWÚ
DOWN_ARROWÚRIGHT_ARROWÚ
LEFT_ARROWr±   r#   rÄ   r§   ÚassertFalse)r�   rÅ   rÆ   rÇ   Úarrowr¯   s         r   rÈ   Ú"ServerArrowKeysTests.verifyResultsù   sš   € Ü×(Ñ(¨¸%ÔHð �O‰OØ×ÑØ×ÑØ×Ñó	
ˆEð —_‘_Ü˜EÓ"×&Ñ& qÓ)Ð+>ÀÈÀóˆFð ×Ñœ[¨Ó0°"Ö5ñ
ð 	×Ñœ UÓ+Õ,r!   r¡   N©	rœ   r�   rž   rŸ   r   r¶   Ú
TEST_BYTESrÈ   r    r¡   r!   r   rÐ   rÐ   ó   s   † Ø$€Oð -€Jõ-r!   rÐ   c                   ó"   • \ rS rSr\rSrS rSrg)ÚPrintableCharactersTestsi	  s   abc123ABC!@#abc123c                 óê  • [         R                  XX#5        [        S5       HK  nU R                  [	        U5      R                  S5      SUS 45      nU R                  [	        U5      / 5        MM     [        S5       HT  nU R                  [	        U5      R                  S5      SXCR                  45      nU R                  [	        U5      / 5        MV     [	        U5      nU R                  Xf< S35        g )Ns   abc123ABC!@#r   rÓ   s   abc123z should have been [])	r´   rÈ   r   r±   r#   rÄ   r§   ÚALTrØ   )r�   rÅ   rÆ   rÇ   Úcharr¯   Úoccss          r   rÈ   Ú&PrintableCharactersTests.verifyResults  sÙ   € Ü×(Ñ(¨¸%ÔHä˜oÖ.ˆDØ—_‘_Ü˜EÓ"×&Ñ& qÓ)Ð+>ÀÀtÀóˆFð ×Ñœ[¨Ó0°"Ö5ñ	 /ô ˜iÖ(ˆDØ—_‘_Ü˜EÓ"×&Ñ& qÓ)Ð+>ÀÇzÁzÐ@RóˆFð ×Ñœ[¨Ó0°"Ö5ñ	 )ô ˜5Ó!ˆØ×Ñ˜¡Ð)=Ð>Õ?r!   r¡   NrÛ   r¡   r!   r   rÞ   rÞ   	  s   † Ø$€Oð
 ?€Jõ@r!   rÞ   c                   ó†   • \ rS rSrSr\r/ rS H  r\R                  S\-   5        M     SR                  \5      rCCS rSrg)	ÚServerFunctionKeysTestsi$  z9Test for parsing and dispatching function keys (F1 - F12))s   OPs   OQs   ORs   OSs   15~s   17~s   18~s   19~s   20~s   21~s   23~s   24~ó   [r!   c                 ó:  • [         R                  XX#5        [        SS5       H[  n[        USU4-  5      nU R	                  [        U5      R                  S5      SUS 45      nU R                  [        U5      / 5        M]     U R                  [        U5      5        g )Nr¦   é   zF%dr   rÓ   )	r´   rÈ   ÚrangeÚgetattrr±   r#   rÄ   r§   rØ   )r�   rÅ   rÆ   rÇ   ÚfuncNumÚfuncArgr¯   s          r   rÈ   Ú%ServerFunctionKeysTests.verifyResults<  s‹   € Ü×(Ñ(¨¸%ÔHÜ˜Q –|ˆGÜ˜f e¨w¨jÑ&8Ó9ˆGØ—_‘_Ü˜EÓ"×&Ñ& qÓ)Ð+>ÀÈ$ÀóˆFð ×Ñœ[¨Ó0°"Ö5ñ $ð 	×Ñœ UÓ+Õ,r!   r¡   N)rœ   r�   rž   rŸ   r4   r   r¶   ÚbyteListÚ	byteCodesr)   ÚjoinrÜ   rÈ   r    r¡   r!   r   rå   rå   $  sH   † ÙCà$€Oà€Hóˆ	ð 	�‰˜ 9Ñ,Ö-ñð —‘˜(Ó#€JØ�)õ-r!   rå   c                   óX   • \ rS rSr\rSrSrSrSr	\\-   \-   \	-   \-   \	-   r
CCCC	S rSrg)	ÚClientCursorMovementTestsiG  s   [2Bs   [4Cs   [As   [2Dc                 ó  • [         R                  XX#5        S HO  u  pEU R                  [        U5      R	                  S5      SU-   U45      nU R                  [        U5      / 5        MQ     U R                  [        U5      5        g )N))ÚDownr¸   )ÚForwardr-   ©ÚUpr¦   ©ÚBackwardr¸   rö   rø   r   Úcursor)r´   rÈ   r±   r#   rÄ   r§   rØ   )r�   rÅ   rÆ   rÇ   ÚmethodÚcountr¯   s          r   rÈ   Ú'ClientCursorMovementTests.verifyResultsR  sz   € Ü×(Ñ(¨¸%ÔHó
‰MˆFð —_‘_Ü˜EÓ"×&Ñ& qÓ)¨8°fÑ+<¸u¸hóˆFð ×Ñœ[¨Ó0°"Ö5ñ
ð 	×Ñœ UÓ+Õ,r!   r¡   N)rœ   r�   rž   rŸ   r   r¶   Úd2Úr4Úu1Úl2rÜ   rÈ   r    r¡   r!   r   rò   rò   G  sE   † Ø$€Oà	€BØ	€BØ	€BØ	€Bà�b‘˜2‘ Ñ" RÑ'¨"Ñ,€JØ
ˆB��Bõ-r!   rò   c                   ó˜   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)ÚClientControlSequencesTestsid  c                 óŠ  ^ • [        5       T l        [        5       T l        [	        U 4S j5      T l        T T R
                  l        T R
                  R                  T R                  5        T R                  [        T R                  5      R                  S5      ST R
                  45      nT R                  [        U5      5        g )Nc                  ó   >• T R                   $ r   )rÆ   ©r�   s   €r   Ú<lambda>Ú3ClientControlSequencesTests.setUp.<locals>.<lambda>h  s	   ø€ ¨T¯ZªZr!   r   rÃ   )r   rÅ   r   rÆ   r   rÇ   ÚfactoryrÃ   r±   r#   rÄ   rØ   )r�   r¯   s   ` r   ÚsetUpÚ!ClientControlSequencesTests.setUpe  sŠ   ø€ Ü(Ó*ˆŒÜ“VˆŒ
Ü$Ô%7Ó8ˆŒØ"ˆ�‰ÔØ�‰×"Ñ" 4§>¡>Ô2Ø—‘Ü˜Ÿ
™
Ó#×'Ñ'¨Ó*Ð,<¸t¿{¹{¸nó
ˆð 	×Ñœ VÓ,Õ-r!   c                 óh  • U R                   R                  SR                  S [        S5       5       5      5        [	        U R
                  5      nS HL  nS HC  nU R                  UR                  S5      SU-   U45      nU R                  [	        U5      5        ME     MN     U R                  U5        g )Nr!   c              3   óF   #   • U  H  nS   H  nSU-   U-   v •  M     M     g7f))r!   ó   2s   20s   200ræ   Nr¡   )Ú.0ÚchrÌ   s      r   Ú	<genexpr>ÚBClientControlSequencesTests.testSimpleCardinals.<locals>.<genexpr>r  s-   é € ð â,�BÜ3�Að ˜1‘˜rÖ!á3ñ "Ú,ùs   ‚!s   BACD)rô   r÷   rõ   rù   )r¦   r¸   é   éÈ   r   rú   )	rÇ   ÚdataReceivedrð   r   r#   rÆ   r±   rÄ   rØ   )r�   râ   Úmethrü   r¯   s        r   ÚtestSimpleCardinalsÚ/ClientControlSequencesTests.testSimpleCardinalsp  s™   € Ø�‰× Ñ Ø�H‰Hñ ä# GÔ,óó ô	
ô ˜4Ÿ:™:Ó&ˆã9ˆDÛ(�ØŸ™¨¯©°!«°hÀ±oÈÀxÓP�Ø× Ñ ¤¨VÓ!4Ö5ó )ñ :ð 	×Ñ˜Õr!   c                 óv  • U R                   R                  S5        [        U R                  5      nU R	                  UR                  S5      SS5      nU R                  [        U5      5        U R	                  UR                  S5      SS5      nU R                  [        U5      5        U R                  U5        g )Ns
   [5;22r[rr   ÚsetScrollRegion)r½   é   )NN©rÇ   r  r#   rÆ   r±   rÄ   rØ   ©r�   râ   r¯   s      r   ÚtestScrollRegionÚ,ClientControlSequencesTests.testScrollRegion€  s�   € Ø�‰× Ñ Ð!4Ô5Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£Ð.?ÀÓIˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£Ð.?ÀÓNˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Õr!   c                 ób  • U R                   R                  S5        [        U R                  5      nU R	                  UR                  S5      SS5      nU R                  [        U5      5        U R	                  UR                  S5      SS5      nU R                  [        U5      5        U R	                  UR                  S5      S5      nU R                  [        U5      5        U R	                  UR                  S5      S5      nU R                  [        U5      5        U R                  U5        g )Ns   #3#4#5#6r   ÚdoubleHeightLine)T)FÚsingleWidthLineÚdoubleWidthLiner  r  s      r   ÚtestHeightAndWidthÚ.ClientControlSequencesTests.testHeightAndWidth‹  så   € Ø�‰× Ñ Ð!<Ô=Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£Ð.@À'ÓJˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£Ð.@À(ÓKˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£Ð.?Ó@ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£Ð.?Ó@ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Õr!   c                 ó4  • U R                   R                  SR                  [        S5       VVs/ s H4  nSR                  [        S5       Vs/ s H  nSU-   U-   PM     sn5      PM6     snn5      5        [	        U R
                  5      n[        [        4 Hb  n[        [        [        [        [        4 H@  nU R                  UR                  S5      SXT45      nU R                  [	        U5      5        MB     Md     U R                  U5        g s  snf s  snnf )Nr!   s   ()s   AB012ó   r   ÚselectCharacterSet)rÇ   r  rð   r   r#   rÆ   r   r   r   r   r
   r   r	   r±   rÄ   rØ   )r�   ÚgrÌ   râ   ÚwhichÚcharsetr¯   s          r   ÚtestCharacterSetÚ,ClientControlSequencesTests.testCharacterSetœ  sõ   € Ø�‰× Ñ Ø�H‰Hô ' uÔ-ôâ-˜ð —H‘H´yÀÔ7JÓKÒ7J°!˜g¨™k¨AœoÑ7JÑKÖLÙ-òóô	
ô ˜4Ÿ:™:Ó&ˆäœ"“XˆEäÜÜÜÜ$ó�ð Ÿ™Ø—H‘H˜Q“KÐ!5¸Ð7Gó�ð × Ñ ¤¨VÓ!4Ö5óñ ð 	×Ñ˜Õùò' Lùós   ¯DÁDÁDÄDc                 ór  • U R                   R                  S5        [        U R                  5      nU R	                  UR                  S5      S5      nU R                  [        U5      5        U R	                  UR                  S5      S5      nU R                  [        U5      5        U R                  U5        g )Ns   r   ÚshiftInÚshiftOutr  r  s      r   ÚtestShiftingÚ(ClientControlSequencesTests.testShiftingµ  s†   € Ø�‰× Ñ  Ô-Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£¨iÓ8ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£¨jÓ9ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Õr!   c                 ór  • U R                   R                  S5        [        U R                  5      nU R	                  UR                  S5      S5      nU R                  [        U5      5        U R	                  UR                  S5      S5      nU R                  [        U5      5        U R                  U5        g )Ns   NOr   ÚsingleShift2ÚsingleShift3r  r  s      r   ÚtestSingleShiftsÚ,ClientControlSequencesTests.testSingleShiftsÀ  s†   € Ø�‰× Ñ  Ô/Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£¨nÓ=ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£¨nÓ=ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Õr!   c                 ór  • U R                   R                  S5        [        U R                  5      nU R	                  UR                  S5      S5      nU R                  [        U5      5        U R	                  UR                  S5      S5      nU R                  [        U5      5        U R                  U5        g )Ns   =>r   ÚapplicationKeypadModeÚnumericKeypadModer  r  s      r   ÚtestKeypadModeÚ*ClientControlSequencesTests.testKeypadModeË  sˆ   € Ø�‰× Ñ  Ô/Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£Ð.EÓFˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£Ð.AÓBˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Õr!   c                 ór  • U R                   R                  S5        [        U R                  5      nU R	                  UR                  S5      S5      nU R                  [        U5      5        U R	                  UR                  S5      S5      nU R                  [        U5      5        U R                  U5        g )Ns   78r   Ú
saveCursorÚrestoreCursorr  r  s      r   Ú
testCursorÚ&ClientControlSequencesTests.testCursorÖ  s†   € Ø�‰× Ñ  Ô/Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£¨lÓ;ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£¨oÓ>ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Õr!   c                 óü   • U R                   R                  S5        [        U R                  5      nU R	                  UR                  S5      S5      nU R                  [        U5      5        U R                  U5        g )Ns   cr   Úresetr  r  s      r   Ú	testResetÚ%ClientControlSequencesTests.testResetá  s[   € Ø�‰× Ñ  Ô*Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£¨gÓ6ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Õr!   c                 óè  • U R                   R                  S5        [        U R                  5      nU R	                  UR                  S5      S5      nU R                  [        U5      5        U R	                  UR                  S5      S5      nU R                  [        U5      5        U R	                  UR                  S5      S5      nU R                  [        U5      5        U R                  U5        g )Ns   DMEr   ÚindexÚreverseIndexÚnextLiner  r  s      r   Ú	testIndexÚ%ClientControlSequencesTests.testIndexé  s²   € Ø�‰× Ñ Ð!3Ô4Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£¨gÓ6ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£¨nÓ=ˆØ×Ñœ VÓ,Ô-à—‘ §¡¨!£¨jÓ9ˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Õr!   c           	      óˆ  • U R                   R                  SSR                  S [        R                  [        R
                  [        R                  4 5       5      -   S-   5        U R                   R                  SSR                  S [        R                  [        R
                  [        R                  4 5       5      -   S-   5        [        U R                  5      nU R                  UR                  S5      S[        R                  [        R
                  [        R                  /45      nU R                  [        U5      5        U R                  UR                  S5      S	[        R                  [        R
                  [        R                  /45      nU R                  [        U5      5        U R                  U5        g )
Nræ   ó   ;c              3   ó.   #   • U  H  nS U4-  v •  M     g7f©s   %dNr¡   ©r  Úms     r   r  Ú8ClientControlSequencesTests.testModes.<locals>.<genexpr>ú  ó   é € ÐPÒ.O¨˜  žÒ.Oùó   ‚ó   hc              3   ó.   #   • U  H  nS U4-  v •  M     g7frO  r¡   rP  s     r   r  rR  ÿ  rS  rT  ó   lr   ÚsetModesÚ
resetModes)rÇ   r  rð   r   ÚKAMÚIRMÚLNMr#   rÆ   r±   rÄ   rØ   r  s      r   Ú	testModesÚ%ClientControlSequencesTests.testModes÷  sB  € Ø�‰× Ñ ØØ�i‰iÑP¬u¯y©y¼%¿)¹)ÄUÇYÁYÑ.OÓPÓPñQàñô	
ð
 	�‰× Ñ ØØ�i‰iÑP¬u¯y©y¼%¿)¹)ÄUÇYÁYÑ.OÓPÓPñQàñô	
ô
 ˜4Ÿ:™:Ó&ˆà—‘Ø�H‰H�Q‹K˜¤u§y¡y´%·)±)¼U¿Y¹YÐ&GÐ%Ió
ˆð 	×Ñœ VÓ,Ô-à—‘Ø�H‰H�Q‹K˜¬¯©´E·I±I¼u¿y¹yÐ(IÐ'Kó
ˆð 	×Ñœ VÓ,Ô-Ø×Ñ˜Õr!   c                 ó†  • U R                   R                  S5        [        U R                  5      nS H>  nU R	                  UR                  S5      U5      nU R                  [        U5      5        M@     U R	                  UR                  S5      SS5      nU R                  [        U5      5        U R                  U5        g )Ns   [K[1K[2K[J[1J[2J[3P)ÚeraseToLineEndÚeraseToLineBeginningÚ	eraseLineÚeraseToDisplayEndÚeraseToDisplayBeginningÚeraseDisplayr   ÚdeleteCharacter)rº   r  )r�   râ   r  r¯   s       r   ÚtestErasureÚ'ClientControlSequencesTests.testErasure  sš   € Ø�‰× Ñ Ð!SÔTÜ˜4Ÿ:™:Ó&ˆó
ˆDð —_‘_ T§X¡X¨a£[°$Ó7ˆFØ×Ñœ[¨Ó0Ö1ñ
ð —‘ §¡¨!£Ð.?ÀÓFˆØ×Ñœ VÓ,Ô-Ø×Ñ˜Õr!   c                 ó  • U R                   R                  S5        [        U R                  5      nS H@  nU R	                  UR                  S5      SU45      nU R                  [        U5      5        MB     U R                  U5        g )Ns   [M[3M©r¦   rº   r   Ú
deleteLiner  ©r�   râ   Úargr¯   s       r   ÚtestLineDeletionÚ,ClientControlSequencesTests.testLineDeletion"  ól   € Ø�‰× Ñ Ð!1Ô2Ü˜4Ÿ:™:Ó&ˆãˆCØ—_‘_ T§X¡X¨a£[°,ÀÀÓGˆFØ×Ñœ[¨Ó0Ö1ñ ð 	×Ñ˜Õr!   c                 ó  • U R                   R                  S5        [        U R                  5      nS H@  nU R	                  UR                  S5      SU45      nU R                  [        U5      5        MB     U R                  U5        g )Ns   [L[3Lrj  r   Ú
insertLiner  rl  s       r   ÚtestLineInsertionÚ-ClientControlSequencesTests.testLineInsertion+  rp  r!   c                 óN  • S[        U R                  5      S'   U R                  R                  S5        U R	                  U R
                  R                  5       S5        [        U R                  5      nU R                  UR                  S5      S5      nU R	                  US5        g )N)r¿   é   ÚreportCursorPositions   [6ns   [7;8Rr   )
r'   rÆ   rÇ   r  r§   rÅ   Úvaluer#   r±   rÄ   r  s      r   ÚtestCursorPositionÚ.ClientControlSequencesTests.testCursorPosition4  s~   € Ø6<Œ�—
‘
ÓÐ2Ñ3Ø�‰× Ñ  Ô,Ø×Ñ˜Ÿ™×-Ñ-Ó/°Ô>Ü˜4Ÿ:™:Ó&ˆà—‘ §¡¨!£Ð.DÓEˆð 	×Ñ˜ Õ(r!   c                 ó"  • [        U R                  5      nU R                  R                  S5        U R	                  UR                  S5      SS5        U R                  R                  S5        U R	                  UR                  S5      SS5        g)zŽ
Contiguous non-control bytes are passed to a single call to the
C{write} method of the terminal to which the L{ClientProtocol} is
connected.
ó   ar   Úwrite)r|  ó   bc)r~  N)r#   rÆ   rÇ   r  r±   rÄ   )r�   râ   s     r   Útest_applicationDataBytesÚ5ClientControlSequencesTests.test_applicationDataBytes?  sf   € ô ˜4Ÿ:™:Ó&ˆØ�‰× Ñ  Ô&Ø�‰˜Ÿ™ › W¨gÔ6Ø�‰× Ñ  Ô'Ø�‰˜Ÿ™ › W¨hÕ7r!   c                 ó  • [        U R                  5      nU R                  R                  U5        U(       a:  U R                  " UR                  S5      /UR                  S5      Q76   U(       a  M:  U R                  USU< 35        g )Nr   zNo other calls should happen: )r#   rÆ   rÇ   r  r±   rÄ   rØ   )r�   ÚdataÚcallsrâ   s       r   Ú_applicationDataTestÚ0ClientControlSequencesTests._applicationDataTestK  se   € Ü˜4Ÿ:™:Ó&ˆØ�‰× Ñ  Ô&ÞØ�OŠO˜DŸH™H Q›KÐ7¨%¯)©)°A«,Ó7÷ ˆeà×Ñ˜Ð!?À¹xÐHÕIr!   c                 ó,   • U R                  SSS/5        g)z‹
Application data bytes followed by a shift-in command are passed to a
call to C{write} before the terminal's C{shiftIn} method is called.
s   ab©r}  )s   ab)r/  N©r„  r  s    r   Ú test_shiftInAfterApplicationDataÚ<ClientControlSequencesTests.test_shiftInAfterApplicationDataR  s   € ð
 	×!Ñ! )Ð.AÀ<Ð-PÕQr!   c                 ó,   • U R                  SSS/5        g)z�
Application data bytes followed by a shift-out command are passed to a
call to C{write} before the terminal's C{shiftOut} method is called.
s   abr‡  )r0  Nrˆ  r  s    r   Ú!test_shiftOutAfterApplicationDataÚ=ClientControlSequencesTests.test_shiftOutAfterApplicationDataY  s   € ð
 	×!Ñ! )Ð.AÀ=Ð-QÕRr!   c                 ó,   • U R                  SSS/5        g)z™
Application data bytes followed by a cursor-backward command are passed
to a call to C{write} before the terminal's C{cursorBackward} method is
called.
s   abr‡  )ÚcursorBackwardNrˆ  r  s    r   Ú'test_cursorBackwardAfterApplicationDataÚCClientControlSequencesTests.test_cursorBackwardAfterApplicationData`  s   € ð 	×!Ñ! )Ð.AÐCVÐ-WÕXr!   c                 ó\   • U R                  SSS/5        U R                  SSSS/44/5        g)z˜
Application data bytes followed by an escape character are passed to a
call to C{write} before the terminal's handler method for the escape is
called.
s   abDr‡  )rG  s   ab[4hrX  r-   Nrˆ  r  s    r   Útest_escapeAfterApplicationDataÚ;ClientControlSequencesTests.test_escapeAfterApplicationDatah  s>   € ð 	×!Ñ! *Ð/BÀJÐ.OÔPð 	×!Ñ!ØÐ.°¸q¸c¸VÐ0DÐEõ	
r!   )rÇ   rÆ   rÅ   N)rœ   r�   rž   rŸ   r
  r  r  r$  r,  r1  r6  r;  r@  rD  rJ  r]  rg  rn  rs  ry  r  r„  r‰  rŒ  r�  r“  r    r¡   r!   r   r  r  d  st   † ò	.òò 	òò"ò2	ò	ò	ò	òòòò0ò&òò	)ò
8òJòRòSòYõ
r!   r  c                   óü   • \ rS rSrSr\" SS5      r\\" SS5      -   rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S%r'g&)'ÚServerProtocolOutputTestsiz  z\
Tests for the bytes L{ServerProtocol} writes to its transport when its
methods are called.
r¦   é   r½   c                 óŠ   • [        5       U l        [        5       U l        U R                  R	                  U R                  5        g r   )r   Úprotocolr   rÅ   rÃ   r  s    r   r
  ÚServerProtocolOutputTests.setUp†  s,   € Ü&Ó(ˆŒÜ(Ó*ˆŒØ�‰×$Ñ$ T§^¡^Õ4r!   c                 óÞ   • U R                   R                  S5        U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)zi
L{ServerProtocol.cursorUp} writes the control sequence
ending with L{CSFinalByte.CUU} to its transport.
r¦   ó   1N)r™  ÚcursorUpr§   rÅ   rx  r‚   r>   rB   r  s    r   Útest_cursorUpÚ'ServerProtocolOutputTests.test_cursorUp‹  sM   € ð
 	�‰×Ñ˜qÔ!Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¡O´k·o±o×6KÑ6KÑ$Kõ	
r!   c                 óÞ   • U R                   R                  S5        U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)zk
L{ServerProtocol.cursorDown} writes the control sequence
ending with L{CSFinalByte.CUD} to its transport.
r¦   rœ  N)r™  Ú
cursorDownr§   rÅ   rx  r‚   r>   rE   r  s    r   Útest_cursorDownÚ)ServerProtocolOutputTests.test_cursorDown•  sM   € ð
 	�‰× Ñ  Ô#Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¡O´k·o±o×6KÑ6KÑ$Kõ	
r!   c                 óÞ   • U R                   R                  S5        U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)zn
L{ServerProtocol.cursorForward} writes the control sequence
ending with L{CSFinalByte.CUF} to its transport.
r¦   rœ  N)r™  ÚcursorForwardr§   rÅ   rx  r‚   r>   rH   r  s    r   Útest_cursorForwardÚ,ServerProtocolOutputTests.test_cursorForwardŸ  sM   € ð
 	�‰×#Ñ# AÔ&Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¡O´k·o±o×6KÑ6KÑ$Kõ	
r!   c                 óÞ   • U R                   R                  S5        U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)zo
L{ServerProtocol.cursorBackward} writes the control sequence
ending with L{CSFinalByte.CUB} to its transport.
r¦   rœ  N)r™  r�  r§   rÅ   rx  r‚   r>   rK   r  s    r   Útest_cursorBackwardÚ-ServerProtocolOutputTests.test_cursorBackward©  sM   € ð
 	�‰×$Ñ$ QÔ'Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¡O´k·o±o×6KÑ6KÑ$Kõ	
r!   c                 óà   • U R                   R                  SS5        U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)z•
L{ServerProtocol.cursorPosition} writes a control sequence
ending with L{CSFinalByte.CUP} and containing the expected
coordinates to its transport.
r   s   1;1N)r™  ÚcursorPositionr§   rÅ   rx  r‚   r>   rW   r  s    r   Útest_cursorPositionÚ-ServerProtocolOutputTests.test_cursorPosition³  sP   € ð 	�‰×$Ñ$ Q¨Ô*Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨vÑ$5¼¿¹×8MÑ8MÑ$Mõ	
r!   c                 óÖ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  [        R                  R                  -   5        g)z‘
L{ServerProtocol.cursorHome} writes a control sequence ending
with L{CSFinalByte.CUP} and no parameters, so that the client
defaults to (1, 1).
N)r™  Ú
cursorHomer§   rÅ   rx  r‚   r>   rW   r  s    r   Útest_cursorHomeÚ)ServerProtocolOutputTests.test_cursorHome¾  sD   € ð 	�‰× Ñ Ô"Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼K¿O¹O×<QÑ<QÑ1QÕRr!   c                 óº   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  [        SS5      -   5        g)z”
L{ServerProtocol.index} writes the control sequence ending in
the 8-bit code table coordinates 4, 4.

Note that ECMA48 5th Edition removes C{IND}.
r-   N)r™  rG  r§   rÅ   rx  ÚESCr2   r  s    r   Ú
test_indexÚ$ServerProtocolOutputTests.test_indexÇ  sE   € ð 	�‰×ÑÔØ×ÑØ�N‰N× Ñ Ó" D§H¡HÔ/GÈÈ1Ó/MÑ$Mõ	
r!   c                 óÖ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  [        R                  R                  -   5        g)z\
L{ServerProtocol.reverseIndex} writes the control sequence
ending in the L{C1SevenBit.RI}.
N)r™  rH  r§   rÅ   rx  r´  rn   r…   r  s    r   Útest_reverseIndexÚ+ServerProtocolOutputTests.test_reverseIndexÓ  sD   € ð
 	�‰×"Ñ"Ô$Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼J¿M¹M×<OÑ<OÑ1OÕPr!   c                 óŒ   • U R                   R                  5         U R                  U R                  R	                  5       S5        g)zM
        L{ServerProtocol.nextLine} writes C{"
"} to its transport.
        s   
N)r™  rI  r§   rÅ   rx  r  s    r   Útest_nextLineÚ'ServerProtocolOutputTests.test_nextLineÛ  s1   € ð 	�‰×ÑÔ Ø×Ñ˜Ÿ™×-Ñ-Ó/°Õ9r!   c                 óh  • [         R                  [         R                  [         R                  /nU R                  R                  U5        U R                  U R                  R                  5       U R                  SR                  S U 5       5      -   [        R                  R                  -   5        g)zz
L{ServerProtocol.setModes} writes a control sequence
containing the requested modes and ending in the
L{CSFinalByte.SM}.
rM  c              3   ó.   #   • U  H  nS U4-  v •  M     g7frO  r¡   rP  s     r   r  Ú:ServerProtocolOutputTests.test_setModes.<locals>.<genexpr>ð  ó   é € Ð9ªj¨˜  žªjùrT  N)r   rZ  r[  r\  r™  rX  r§   rÅ   rx  r‚   rð   r>   rY   ©r�   Ú
modesToSets     r   Útest_setModesÚ'ServerProtocolOutputTests.test_setModeså  s|   € ô —i‘i¤§¡¬E¯I©IÐ6ˆ
Ø�‰×Ñ˜zÔ*Ø×ÑØ�N‰N× Ñ Ó"Ø�H‰HØ�i‰iÑ9©jÓ9Ó9ñ:ä�n‰n×"Ñ"ñ#õ	
r!   c                 óh  • [         R                  [         R                  [         R                  /nU R                  R                  U5        U R                  U R                  R                  5       U R                  SR                  S U 5       5      -   [        R                  R                  -   5        g)zŠ
L{ServerProtocol.setPrivatesModes} writes a control sequence
containing the requested private modes and ending in the
L{CSFinalByte.SM}.
rM  c              3   ó.   #   • U  H  nS U4-  v •  M     g7frO  r¡   rP  s     r   r  ÚAServerProtocolOutputTests.test_setPrivateModes.<locals>.<genexpr>  s   é € Ð@Ò.?¨˜  žÒ.?ùrT  N)r   ÚERRORÚCOLUMNÚORIGINr™  rX  r§   rÅ   rx  r‚   rð   r>   rY   )r�   ÚprivateModesToSets     r   Útest_setPrivateModesÚ.ServerProtocolOutputTests.test_setPrivateModesô  sŒ   € ô ×ÑÜ×ÑÜ×Ñð
Ðð
 	�‰×ÑÐ0Ô1Ø×ÑØ�N‰N× Ñ Ó"Ø�H‰HØ�i‰iÑ@Ñ.?Ó@Ó@ñAä�n‰n×"Ñ"ñ#õ	
r!   c                 óh  • [         R                  [         R                  [         R                  /nU R                  R                  U5        U R                  U R                  R                  5       U R                  SR                  S U 5       5      -   [        R                  R                  -   5        g)z[
L{ServerProtocol.resetModes} writes the control sequence
ending in the L{CSFinalByte.RM}.
rM  c              3   ó.   #   • U  H  nS U4-  v •  M     g7frO  r¡   rP  s     r   r  Ú<ServerProtocolOutputTests.test_resetModes.<locals>.<genexpr>  rÀ  rT  N)r   rZ  r[  r\  r™  rY  r§   rÅ   rx  r‚   rð   r>   re   rÁ  s     r   Útest_resetModesÚ)ServerProtocolOutputTests.test_resetModes  s|   € ô
 —i‘i¤§¡¬E¯I©IÐ6ˆ
Ø�‰× Ñ  Ô,Ø×ÑØ�N‰N× Ñ Ó"Ø�H‰HØ�i‰iÑ9©jÓ9Ó9ñ:ä�n‰n×"Ñ"ñ#õ	
r!   c                 óÖ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  [        R                  R                  -   5        g)zX
L{ServerProtocol.singleShift2} writes an escape sequence
followed by L{C1SevenBit.SS2}
N)r™  r4  r§   rÅ   rx  r´  rn   r‡   r  s    r   Útest_singleShift2Ú+ServerProtocolOutputTests.test_singleShift2  óD   € ð
 	�‰×"Ñ"Ô$Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼J¿N¹N×<PÑ<PÑ1PÕQr!   c                 óÖ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  [        R                  R                  -   5        g)zX
L{ServerProtocol.singleShift3} writes an escape sequence
followed by L{C1SevenBit.SS3}
N)r™  r5  r§   rÅ   rx  r´  rn   r‰   r  s    r   Útest_singleShift3Ú+ServerProtocolOutputTests.test_singleShift3  rÖ  r!   c                 ó.  • U R                   R                  [        [        5      [        [        5      5        U R                  U R                  R                  5       U R                  S[        [        4-  -   [        R                  R                  -   5        g)z‹
L{ServerProtocol.selectGraphicRendition} writes a control
sequence containing the requested attributes and ending with
L{CSFinalByte.SGR}
s   %d;%dN)r™  ÚselectGraphicRenditionÚstrr   r   r§   rÅ   rx  r‚   r>   rh   r  s    r   Útest_selectGraphicRenditionÚ5ServerProtocolOutputTests.test_selectGraphicRendition%  sc   € ð 	�‰×,Ñ,¬S´«Z¼¼Y»ÔHØ×ÑØ�N‰N× Ñ Ó"Ø�H‰H�x¤5¬)Ð"4Ñ4Ñ4´{·±×7LÑ7LÑLõ	
r!   c                 óÖ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  [        R                  R                  -   5        g)zb
L{ServerProtocol.horizontalTabulationSet} writes the escape
sequence ending in L{C1SevenBit.HTS}
N)r™  ÚhorizontalTabulationSetr§   rÅ   rx  r´  rn   r|   r  s    r   Útest_horizontalTabulationSetÚ6ServerProtocolOutputTests.test_horizontalTabulationSet1  sD   € ð
 	�‰×-Ñ-Ô/Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼J¿N¹N×<PÑ<PÑ1PÕQr!   c                 óÖ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  [        R                  R                  -   5        g)zç
L{ServerProtocol.eraseToLineEnd} writes the control sequence
sequence ending in L{CSFinalByte.EL} and no parameters,
forcing the client to default to 0 (from the active present
position's current location to the end of the line.)
N)r™  r`  r§   rÅ   rx  r‚   r>   r`   r  s    r   Útest_eraseToLineEndÚ-ServerProtocolOutputTests.test_eraseToLineEnd9  sD   € ð 	�‰×$Ñ$Ô&Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼K¿N¹N×<PÑ<PÑ1PÕQr!   c                 óÜ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)zá
L{ServerProtocol.eraseToLineBeginning} writes the control
sequence sequence ending in L{CSFinalByte.EL} and a parameter
of 1 (from the beginning of the line up to and include the
active present position's current location.)
rœ  N)r™  ra  r§   rÅ   rx  r‚   r>   r`   r  s    r   Útest_eraseToLineBeginningÚ3ServerProtocolOutputTests.test_eraseToLineBeginningC  sH   € ð 	�‰×*Ñ*Ô,Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸D±Ä;Ç>Á>×CWÑCWÑ1WÕXr!   c                 óÜ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)z†
L{ServerProtocol.eraseLine} writes the control
sequence sequence ending in L{CSFinalByte.EL} and a parameter
of 2 (the entire line.)
r  N)r™  rb  r§   rÅ   rx  r‚   r>   r`   r  s    r   Útest_eraseLineÚ(ServerProtocolOutputTests.test_eraseLineM  sH   € ð 	�‰×ÑÔ!Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸D±Ä;Ç>Á>×CWÑCWÑ1WÕXr!   c                 óÖ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  [        R                  R                  -   5        g)zê
L{ServerProtocol.eraseToDisplayEnd} writes the control
sequence sequence ending in L{CSFinalByte.ED} and no parameters,
forcing the client to default to 0 (from the active present
position's current location to the end of the page.)
N)r™  rc  r§   rÅ   rx  r‚   r>   r]   r  s    r   Útest_eraseToDisplayEndÚ0ServerProtocolOutputTests.test_eraseToDisplayEndV  sD   € ð 	�‰×'Ñ'Ô)Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¼K¿N¹N×<PÑ<PÑ1PÕQr!   c                 óÜ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)zà
L{ServerProtocol.eraseToDisplayBeginning} writes the control
sequence sequence ending in L{CSFinalByte.ED} a parameter of 1
(from the beginning of the page up to and include the active
present position's current location.)
rœ  N)r™  rd  r§   rÅ   rx  r‚   r>   r]   r  s    r   Útest_eraseToDisplayBeginningÚ6ServerProtocolOutputTests.test_eraseToDisplayBeginning`  sH   € ð 	�‰×-Ñ-Ô/Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸D±Ä;Ç>Á>×CWÑCWÑ1WÕXr!   c                 óÜ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)z„
L{ServerProtocol.eraseDisplay} writes the control sequence
sequence ending in L{CSFinalByte.ED} a parameter of 2 (the
entire page)
r  N)r™  re  r§   rÅ   rx  r‚   r>   r]   r  s    r   Útest_eraseToDisplayÚ-ServerProtocolOutputTests.test_eraseToDisplayj  sH   € ð 	�‰×"Ñ"Ô$Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸D±Ä;Ç>Á>×CWÑCWÑ1WÕXr!   c                 óÞ   • U R                   R                  S5        U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)zŽ
L{ServerProtocol.deleteCharacter} writes the control sequence
containing the number of characters to delete and ending in
L{CSFinalByte.DCH}
r-   ó   4N)r™  rf  r§   rÅ   rx  r‚   r>   r@   r  s    r   Útest_deleteCharacterÚ.ServerProtocolOutputTests.test_deleteCharacters  sM   € ð 	�‰×%Ñ% aÔ(Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¡O´k·o±o×6KÑ6KÑ$Kõ	
r!   c                 óÞ   • U R                   R                  S5        U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)zƒ
L{ServerProtocol.insertLine} writes the control sequence
containing the number of lines to insert and ending in
L{CSFinalByte.IL}
r½   ó   5N)r™  rr  r§   rÅ   rx  r‚   r>   rc   r  s    r   Útest_insertLineÚ)ServerProtocolOutputTests.test_insertLine~  óJ   € ð 	�‰× Ñ  Ô#Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸D±Ä;Ç>Á>×CWÑCWÑ1WÕXr!   c                 óÞ   • U R                   R                  S5        U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)zƒ
L{ServerProtocol.deleteLine} writes the control sequence
containing the number of lines to delete and ending in
L{CSFinalByte.DL}
r¿   ó   6N)r™  rk  r§   rÅ   rx  r‚   r>   rf   r  s    r   Útest_deleteLineÚ)ServerProtocolOutputTests.test_deleteLine‡  rý  r!   c                 ó¬   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  S-   S-   5        g)z–
With no arguments, L{ServerProtocol.setScrollRegion} writes a
control sequence with no parameters, but a parameter
separator, and ending in C{b'r'}.
rM  ó   rN©r™  r  r§   rÅ   rx  r‚   r  s    r   Útest_setScrollRegionNoArgsÚ4ServerProtocolOutputTests.test_setScrollRegionNoArgs�  s>   € ð 	�‰×%Ñ%Ô'Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸D±À4Ñ1GÕHr!   c                 óª   • U R                   R                  SS9  U R                  U R                  R	                  5       U R
                  S-   S-   5        g)z­
With just a value for its C{first} argument,
L{ServerProtocol.setScrollRegion} writes a control sequence with
that parameter, a parameter separator, and finally a C{b'r'}.
r¦   )Úfirsts   1;r  Nr  r  s    r   Útest_setScrollRegionJustFirstÚ7ServerProtocolOutputTests.test_setScrollRegionJustFirst™  sD   € ð 	�‰×%Ñ%¨AÐ%Ñ.Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸EÑ1AÀDÑ1HÕIr!   c                 óª   • U R                   R                  SS9  U R                  U R                  R	                  5       U R
                  S-   S-   5        g)z¬
With just a value for its C{last} argument,
L{ServerProtocol.setScrollRegion} writes a control sequence with
a parameter separator, that parameter, and finally a C{b'r'}.
r¦   )Úlasts   ;1r  Nr  r  s    r   Útest_setScrollRegionJustLastÚ6ServerProtocolOutputTests.test_setScrollRegionJustLast¢  sD   € ð 	�‰×%Ñ%¨1Ð%Ñ-Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸EÑ1AÀDÑ1HÕIr!   c                 ó¬   • U R                   R                  SSS9  U R                  U R                  R	                  5       U R
                  S-   S-   5        g)z¾
When given both C{first} and C{last}
L{ServerProtocol.setScrollRegion} writes a control sequence with
the first parameter, a parameter separator, the last
parameter, and finally a C{b'r'}.
r¦   r¸   )r  r  s   1;2r  Nr  r  s    r   Ú test_setScrollRegionFirstAndLastÚ:ServerProtocolOutputTests.test_setScrollRegionFirstAndLast«  sF   € ð 	�‰×%Ñ%¨A°AÐ%Ñ6Ø×Ñ˜Ÿ™×-Ñ-Ó/°·±¸FÑ1BÀTÑ1IÕJr!   c                 óÜ   • U R                   R                  5         U R                  U R                  R	                  5       U R
                  S-   [        R                  R                  -   5        g)zµ
L{ServerProtocol.reportCursorPosition} writes a control
sequence ending in L{CSFinalByte.DSR} with a parameter of 6
(the Device Status Report returns the current active
position.)
rÿ  N)r™  rw  r§   rÅ   rx  r‚   r>   rk   r  s    r   Útest_reportCursorPositionÚ3ServerProtocolOutputTests.test_reportCursorPositionµ  sK   € ð 	�‰×*Ñ*Ô,Ø×ÑØ�N‰N× Ñ Ó" D§H¡H¨t¡O´k·o±o×6KÑ6KÑ$Kõ	
r!   )r™  rÅ   N)(rœ   r�   rž   rŸ   r4   r2   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  r	  r  r  r  r    r¡   r!   r   r–  r–  z  sÓ   † ññ # 1 bÓ
)€CØ
Ñ(¨¨BÓ/Ñ
/€Cò5ò

ò
ò
ò
ò	
òSò

òQò:ò
ò
ò&
òRòRò

òRòRòYòYòRòYòYò	
òYòYòIòJòJòKõ

r!   r–  )3ÚtextwrapÚtypingr   r   Ú
constantlyr   r   Útwisted.conch.insults.insultsr   r   r	   r
   r   r   r   r   r   r   r   r   r   Útwisted.internet.protocolr   Útwisted.internet.testingr   Útwisted.python.compatr   Útwisted.trialr   r    r#   r'   r+   ÚobjectrŽ   r2   r=   Údedentr>   rn   r   r£   rÎ   r´   ÚTestCaserÐ   rÞ   rå   rò   r  r–  r¡   r!   r   Ú<module>r      s  ðó
 ß !ç ,÷÷ ÷ õ õ /Ý 4Ý +Ý "ò4ò)ò%ò"ñ ‹(€ò3ò((ñ *ØØò 	ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚð#ð& 	�Šð		ó	ñ-"€ñJ )ØØà	ˆuˆØ	ˆuˆØ	�ˆØ	�ˆØ	ˆuˆØ	�ˆØ	�ˆØ	�ˆØ	�ˆØ	�ˆØ	�ˆØ	�ˆØ	�ˆØ	ˆuˆØ	�ˆØ	�ˆð!ð$ 	�Šð	ó		ñ+€
÷Dñ ÷Dñ ðÐ ô$2˜ô 2ð$ ô-Ð-¨x×/@Ñ/@ô -ô,@Ð1°8×3DÑ3Dô @ô6 -Ð0°(×2CÑ2Cô  -ôF-Ð 2°H×4EÑ4Eô -ô:P
 (×"3Ñ"3°Yô P
ôlE
 × 1Ñ 1õ E
r!   