
    /hh                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r
JrJrJrJrJrJr  S SKJr  \
" S5        \" S5      r\" S5        \" S5         S SKrS rS	 rS
 r\R2                  R5                  S5      rSr\R:                  \R<                  4SSS/r\R@                  " \(       + =(       d    \S:H  S\-  5      \R@                  " \RB                  S:H  S5       " S S\RD                  5      5       5       r# " S S\RD                  5      r$ " S S\RD                  5      r%S r& " S S\RD                  5      r'\(S:X  a  \RR                  " 5         gg! \ a     GNf = f)    N)	MagicMock)requiresverboseSaveSignalscpython_onlycheck_disallow_instantiationMISSING_C_DOCSTRINGS
gc_collect)import_modulecurseszcurses.asciizcurses.textpadc                 R    [         R                  " [        [        U 5      SU -  5      $ )Nzrequires curses.%s)unittest
skipUnlesshasattrr   )names    9/opt/python-3.13.8/usr/lib/python3.13/test/test_curses.pyrequires_curses_funcr      s&    wvt43d:< <    c                    ^  U 4S jnU$ )Nc                 J   >^  [         R                  " T 5      UU 4S j5       nU$ )Nc                    > [        U R                  T5      (       d  [        R                  " ST-  5      eT" U /UQ70 UD6  g )Nzrequires curses.window.%s)r   stdscrr   SkipTest)selfargskwargsr   tests      r   wrapped:requires_curses_window_meth.<locals>.deco.<locals>.wrapped#   s=    4;;--''(Cd(JKK'''r   	functoolswraps)r   r   r   s   ` r   deco)requires_curses_window_meth.<locals>.deco"   s%    			( 
	( r    )r   r#   s   ` r   requires_curses_window_methr&   !   s     Kr   c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                    > [         R                  " 5       (       d  U R                  S5        [         R                  " 5         T" U /UQ70 UD6  g )Nrequires colors support)r   
has_colorsskipTeststart_color)r   r   r   r   s      r   r    requires_colors.<locals>.wrapped-   s=      ""MM34T#D#F#r   r    )r   r   s   ` r   requires_colorsr.   ,   s%    __T$ $
 Nr   TERMi  r   r   r2   )   r   unknownz*$TERM=%r, calling initscr() may cause exitcygwinz!cygwin's curses mostly just hangsc                   >   \ rS rSr\S 5       rS r\" S5      S 5       r\" S5      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5      S 5       rS rS rS r\" S5      S 5       r\" S5      S 5       rS rS  r S! r!S" r"S# r#S$ r$S% r%S& r&S' r'\" S(5      S) 5       r(S* r)S+ r*S, r+S- r,\" S.5      S/ 5       r-\" S05      S1 5       r.\" S25      S3 5       r/S4 r0S5 r1S6 r2S7 r3S8 r4\5S9 5       r6\5S: 5       r7S; r8\5S< 5       r9\5S= 5       r:\5S> 5       r;\" S?5      \5S@ 5       5       r<SA r=\" SB5      SC 5       r>\" SD5      SE 5       r?\" SF5      SG 5       r@\" SF5      SH 5       rA\" SF5      SI 5       rB\C\" SF5      SJ 5       5       rD\" SK5      SL 5       rE\" SM5      SN 5       rF\" SO5      SP 5       rGSQ rHSR rI\" SS5      \JR                  " \L" \MSTSU5      SV:  SW5      SX 5       5       rNSY rO\JR                  " \PSZ5      S[ 5       rQ\" S5      S\ 5       rRS]rSg^)_
TestCurses?   c                     [         (       a   [        S[         3[        R                  SS9  [        R
                  R                  5       n[        R                  " US9  g )NzTERM=Tfileflush)fd)	r   printtermsysstderr
__stdout__filenor   	setupterm)cls	stdout_fds     r   
setUpClassTestCurses.setUpClassE   s?    7E$.szz> NN))+	I&r   c                    SU l         [        R                  U l        [        R                  R	                  5       n[        R                  R                  5       (       d  [
        R                  " U5      nU R                  [
        R                  U5        U R                  [
        R                  X!5        [        R                  R                  5       (       a&  [        R                  n[        R                  U l        O. [        SSSS9nU R                  UR                  5        S U l        [
        R                  " UR	                  5       U5        [        5       U l        U R                   R#                  5         U R                  U R                   R$                  5        [&        (       a]  U R                  bP  [        R(                  R+                  5         [        R,                  R+                  5         [/        U R                  SS9  [0        R2                  " 5       U l        U R                   (       aS  [0        R6                  " 5         U R                  [0        R8                  5        U R                  [0        R:                  5        U R4                  R=                  5         g ! [         a     [        R                  " SSS9nSU l          GNf = f)	NTz/dev/ttywbr   )	buffering)moderK   Fr:   )isattyr@   rB   outputrC   osdup
addCleanupclosedup2
__stderr__openOSErrortempfileTemporaryFiler   save_signalssaverestorer   rA   r<   stdoutr>   r   initscrr   savettyendwinresettyerase)r   rF   dup_fdtmps       r   setUpTestCurses.setUpN   s   nnNN))+	~~$$&& VVI&FOOBHHf-OOBGGV7~~$$&&nn!nn	(z41=C 		*"GGCJJL),'M ))1127t{{.JJJJt{{$/nn&;;NNOOFMM*OOFNN+1  (
 #00daHC"'DK(s   >J &K	K	filterc                 .    [         R                  " 5         g N)r   rf   r   s    r   test_filterTestCurses.test_filter~   s     	r   use_envc                 \    [         R                  " S5        [         R                  " S5        g )NFT)r   rl   ri   s    r   test_use_envTestCurses.test_use_env   s     	utr   c                 	   [         R                  " SS5      nU R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        [         R                  " SSSS5      nU R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S	5        UR                  S
S5      nU R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        UR                  SSS
S5      nU R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        UR                  SS
5      nU R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        UR                  SSSS
5      nU R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        UR                  SS5        U R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S	5        U R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        UR                  SS5        U R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        UR                  SS5        U R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        g )N   
   r0   r1   )rq   rr   r3      )rs   rq   )rr   r3         )rt   ru      rs   )	      )      )rs   rt   )r{            )r}   r~   r   rw   )r   rw   )rs   rw   )
r   newwinassertEqualgetbegyxgetparyxgetmaxyxsubwinderwinmvwinmvderwin)r   winwin2win3s       r   test_create_windowsTestCurses.test_create_windows   sm   mmAr"021mmBAq)022zz!Q&1&1'2zz!RA&&1&1'2zz!Q&1&1'2zz!RA&&1&1'2		!Q022&1&1'2&1&1'2a&1&1'2a&1&1'2r   c                     [         R                  " SS5      nUR                  SS5      nA[        5         A[        5         g )Nrq   rr   rt   ru   )r   r   r   r
   )r   r   r   s      r   test_subwindows_references%TestCurses.test_subwindows_references   s2    mmAr"zz!Qr   c                 l   U R                   nUR                  SSSS5      nUR                  SS5        UR                  SS5        U R                  UR	                  5       S5        U R                  UR	                  5       S5        UR                  5         U R                  UR	                  5       S	5        g )
Nrr   r3   rs   rq   rw   rz   rv   )rs   rz   )rz   rx   )r   r   mover   getyx	cursyncup)r   r   r   s      r   test_move_cursorTestCurses.test_move_cursor   s    mmBAq)AqA0f-0r   c                    U R                   nUR                  5         U R                  UR                  5       S5        UR	                  5         U R                  UR                  5       S5        UR                  5         U R                  UR                  5       S5        UR	                  5         U R                  UR                  5       S5        UR                  5         U R                  UR                  5       S5        UR                  SS5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  5       S5        UR                  SSS5        U R                  UR                  S5      S5        UR                  SSSS5      nUR                  SSS	S
5      nUR	                  5         UR                  5         UR                  5         U R                  UR                  5       S5        U R                  UR                  5       S5        UR	                  5         UR                  5         UR                  5         UR                  5         U R                  UR                  5       S5        [        US5      (       a  [        R                  R                  S5      (       d  UR                  5         UR                  5         S He  nUR                  U5        UR!                  S5        U R                  UR                  5       U5        U R                  UR                  5       U5        Mg     g g g )NFTrq   rs   r}   rw   rr   r3   rt   ru   syncoksunos)FTa)r   refreshassertIsis_wintouchedtouchwin
untouchwin	touchlineis_linetouchedr   syncupsyncdownr   r@   platform
startswithr   addch)r   r   r   r   r   s        r   test_refresh_controlTestCurses.test_refresh_control   s   f**,e4f**,d3f**,e4f**,d3f**,e4 	Af++A.5f++A.5f**,d3Au%f++A.6 mmBAq)zz!RA&c'')40f**,d3 	d((*D1 68$$S\\-D-DW-M-MNN'F#

3c//16:f224f=	 ( .N$r   c                    U R                   nUR                  nUR                  5         UR                  SS5        UR	                  S5        UR	                  S5        UR	                  S5        Sn UR	                  U5        UR	                  S[        R                  5        UR	                  SSS5        UR	                  SSS[        R                  5        U R                  UR                  5       S	5        UR                  5         UR                  SS5        UR!                  S5        UR!                  S5        UR!                  S5        U R                  [
        [        45         UR!                  S
5        S S S 5        UR!                  S[        R                  5        U R                  UR                  5       S5        g ! [
         a%    U R                  [
        UR                  U5         GNn[         a:    UR                  U5      nU R                  [        U5      S[        U5      5         GNf = f! , (       d  f       N= f)Nr   A   AA      €rw   rs   rt   Tu   ĔF)r   encodingr   r   r   UnicodeEncodeErrorassertRaisesencodeOverflowErrorassertNotEquallenreprr   A_BOLDr   r   echochar)r   r   r   cencodeds        r   test_output_character TestCurses.test_output_character  s   ??AqSTR	@LLO 	S&--(Q3Q3.f**,d3 	Aq 2MBC OOH% D 	V]]+f**,e41 " 	F0!((HE 	@hhx(GGag?	@ DCs$   1G 'H6+H30?H32H36
Ic           	         U R                   nUR                  nUR                  UR                  4 H  nU R	                  UR
                  5         UR                  SS5        U" S5        U" S5        Sn U" U5        U" S[        R                  5        U" SSS5        U" SSS[        R                  5        S S S 5        M     UR                  UR                  4 H  nU R	                  UR
                  5         UR                  SS5        U" SS5        U" S	S5        S
n U" US5        U" SS5        U" SS[        R                  5        U" SSSS5        U" SSSS[        R                  5        S S S 5        M     g ! [         a%    U R                  [        UR                  U5         GN.f = f! , (       d  f       GM  = f! [         a$    U R                  [        UR                  U5         Nf = f! , (       d  f       GM(  = f)Nr   abcds   abcdu   àßçđrw   rs   rt   1234s   1234u   ١٢٣٤rq   )r   r   addstrinsstrsubTest__qualname__r   r   r   r   r   r   addnstrinsnstr)r   r   r   funcss        r   test_output_stringTestCurses.test_output_string(  s   ??]]FMM2Dd//0Aq!VWNG VV]]+Q6"Q66==1 10 3 ^^V^^4Dd//0Aq!VQWa .NAJ VQVQ.Q61%Q61fmm4 10 5 * N%%&8!((HMN 10, * N%%&8!((HMN 10sa   %F/5E==:F/9'G3!	G*AG3=+F,(F/+F,,F//
F?	+G0-G3/G00G33
H	c                    U R                   nS H  nU R                  US9   U R                  [        UR                  U5        U R                  [        UR
                  US5        U R                  [        UR                  U5        U R                  [        UR                  US5        S S S 5        M     g ! , (       d  f       M  = f)N)za s   a )argrw   )r   r   r   
ValueErrorr   r   r   r   )r   r   r   s      r   &test_output_string_embedded_null_chars1TestCurses.test_output_string_embedded_null_charsJ  s    "C#&!!*fmmSA!!*fnnc1E!!*fmmSA!!*fnnc1E	 '& #&&s   BB55
C	c                    U R                   nUR                  SSS[        R                  5        UR	                  SS5        U R                  UR                  5       S[        R                  -  5        U R                  UR                  SS5      S[        R                  -  5        UR	                  SS5        U R                  UR                  5       S S S5        U R                  UR                  S5      S S S	5        U R                  UR                  SS
5      S S S5        U R                  UR                  SS
S5      S5        U R                  [        UR                  S5        U R                  [        UR                  SS
S5        g )Nr   rw   ABCDr   rt   C   r}   s    ABCD s    ABrs   rz   s   BCD )
r   r   r   r   r   r   inchinstrr   r   r   r   s     r   test_read_from_window TestCurses.test_read_from_windowT  s+   aFFMM2AqV]](:;Q*B,>?Aq+Y7a!,f5a+BQ/9aA.8*fllB7*fllAq"=r   c                    [         R                  " SSSS5      nSS S S2    H  n[         R                  " U5        M     U R                  UR	                  SS5      S5        U R                  UR                  5       S	5        U R                  UR	                  SS
5      S5        U R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR                  5       S5        U R                  UR	                  5       S5        U R                  UR	                  5       S5        g )Nrq   r|   rs   zspam
r2   rt   rw   s   )rt   rw   rz   p   )rt   rz   a   m   rr   )r   r   ungetchr   getchr   r   r   r   s      r   
test_getchTestCurses.test_getchd  s    mmAr1a( $B$ANN1  1a'2f-1a'2f-g.f-g.h/r   c                    [         R                  " SSSS5      n[         R                  " 5         U R                  [         R                  5        U R                  [        UR                  S5        U R                  [        UR                  SSS5        SS S S2    H  n[         R                  " U5        M     U R                  UR                  SSS5      S	5        U R                  UR                  SS
5      S5        U R                  UR                  SSS5      S5        U R                  UR                  SS
5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS
5      S5        U R                  UR                  S5      S5        U R                  UR                  SS
5      S5        U R                  UR                  5       S5        U R                  UR                  SS
5      S5        g )Nrq   r|   rs   iprt   zLorem
ipsum
dolor
sit
amet
r2   rw   s   Lor   s    Lo         rr   s   ipsums    Lo  ipsum  s   dolors        dolor  s   sis   si   dolor  s   amets   amet dolor  )r   r   echorQ   noechor   r   getstrr   r   r   r   s      r   test_getstrTestCurses.test_getstrs  s   mmAr1a(&*cjj$7*cjj!Q= 4DbD9ANN1 :Aq!,e41a/:Aq"-x81a/:Aq)841a/:A.1a/:w/1a/:r   c                 v   [         R                  " SSSS5      n[        U5        UR                  SS5        UR	                  5         U R                  UR                  SS5      R                  5       S5        U R                  UR                  SS5      R                  5       S5        UR                  SS	5        UR                  5         U R                  UR                  SS5      R                  5       S
5        U R                  UR                  SS5      R                  5       S5        UR                  UR                  4 Hu  n[        U5        U" 5         U R                  UR                  SS5      R                  5       S5        U R                  UR                  SS5      R                  5       S5        Mw     g )Nrq   r3   rs   r   r{   s   Lorem iprw      dolor sit amet,rt   s   Lorr   )r   r   lorem_ipsumr   clrtoeolr   r   rstripclrtobotra   clear)r   r   r   s      r   
test_clearTestCurses.test_clear  sA   mmAr1a(CA1a//1;?1a//13EFA1a//16:1a//137YY		*DFSYYq!_335s;SYYq!_335s;	 +r   c                    [         R                  " SSSS5      n[        U5        UR                  SS5        UR	                  5         U R                  UR                  SS5      S5        UR	                  SS5        U R                  UR                  SS5      S5        UR                  SS5        UR                  5         U R                  UR                  SS5      S5        U R                  UR                  SS5      S	5        U R                  UR                  SS5      S
5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        UR                  SS5        UR                  5         U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S	5        UR                  5         [        U5        UR                  SS5        UR                  S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        UR                  5         [        U5        UR                  SS5        UR                  S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S
5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        g )Nrq   r3   rs   r   s   Loem ipsum     ru   s   Loem ipum      rw   s   consectetur       adipiscing elitrt   s   sed do eiusmod rz                     s   Lorem ipsum    r   r   )r   r   r   r   delchr   r   deletelninsertlnr   insdellnr   r   s     r   test_insert_deleteTestCurses.test_insert_delete  s   mmAr1a(CA		1a*<=		!Q1a*<=A1a*<=1a*<=1a*<=1a*<=1a*<=A1a*<=1a*<=1a*<=		CAQ1a*<=1a*<=1a*<=1a*<=		CAR1a*<=1a*<=1a*<=1a*<=r   c                 H   [         R                  " SSSS5      n[        U5        UR                  S5        UR	                  5         U R                  UR                  SS5      S5        UR	                  S5        U R                  UR                  SS5      S5        UR	                  S5        U R                  UR                  SS5      S	5        U R                  UR                  SS5      S	5        U R                  UR                  S
S5      S5        UR                  S5        g )Nrq   r3   rs   Tr   r   r   r   rt   F)r   r   r   scrollokscrollr   r   r   s     r   test_scrollTestCurses.test_scroll  s    mmAr1a(CT

1a*<=

11a*<=

21a*<=1a*<=1a*<=Ur   c                 0   [         R                  " SSSS5      nUR                  [         R                  5        UR	                  [         R                  5        UR                  [         R                  5        UR                  5         UR                  5         g )Nrq   r3   rs   )r   r   attronr   attroffattrsetstandoutstandendr   s     r   test_attributesTestCurses.test_attributes  sX    mmAr1a(

6==!FMM"FMM"r   chgatc                 @   [         R                  " SSSS5      nUR                  SSS5        UR                  SSS5        UR                  SS5        UR	                  [         R
                  5        U R                  UR                  SS	5      S
5        U R                  UR                  SS5      S[         R
                  -  5        U R                  UR                  SS5      S[         R
                  -  5        UR                  SS5        UR	                  S[         R                  5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S[         R                  -  5        U R                  UR                  SS5      S[         R                  -  5        U R                  UR                  SS5      S5        UR	                  SS[         R                  5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S[         R                  -  5        U R                  UR                  SS5      S[         R                  -  5        UR	                  SSS	[         R
                  5        U R                  UR                  SS5      S[         R                  -  5        U R                  UR                  SS5      S[         R
                  -  5        U R                  UR                  SS5      S[         R
                  -  5        U R                  UR                  SS5      S[         R                  -  5        U R                  UR                  SS5      S[         R                  -  5        g )Nrq   r3   rs   r   Lorem ipsumrt   zdolor sit ametr{   ru   r   r          rw   L   o   e   rz   r   l   r   rr   r   r~   )
r   r   r   r   r  A_BLINKr   r   r   A_UNDERLINEr   s     r   
test_chgatTestCurses.test_chgat  s   mmAr1a(

1a'

1a)*A		&..!!Q1!Q6>>)AB!R'FNN*BCA		!V]]#!Q1!Q6==)@A!Q6==)@A!Q1		!Q**+!Q1!Q63E3E)EF!R'F4F4F*FG		!Q6>>*!Q63E3E)EF!Q6>>)AB!R'FNN*BC!R'F4F4F*FG!R'F4F4F*FGr   c                    [         R                  " SSSS5      nUR                  SSS5        U R                  UR	                  5       S5        UR                  S5        U R                  UR	                  5       S5        UR                  S	5        U R                  UR	                  5       S
5        UR                  S5        U R                  UR	                  5       S5        UR                  S5        U R                  UR	                  5       S5        UR                  S[         R                  5        U R                  UR	                  5       S
[         R                  -  5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        UR                  S5        UR                  S5        U R                  UR	                  5       S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        UR                  S[         R                  5        U R                  UR	                  5       S
[         R                  -  5        U R                  UR                  SS5      S[         R                  -  5        U R                  UR                  SS5      S
[         R                  -  5        g )Nrq   r3   rs   r   r	  )r   r  __      ##   r   r  #r  )
r   r   r   assertIngetbkgdbkgdsetr   	A_REVERSEr   bkgdr   s     r   test_backgroundTestCurses.test_background  s   mmAr1a(

1a'ckkmW- 	C0D0B+A+C))*&2B2B(BC!Q1!Q1A 	0!Q1!Q1f&&'&2B2B(BC!Q63C3C)CD!Q63C3C)CDr   c           	          [         R                  " SSSS5      n[        U5        [         R                  " SSSS5      n[        S5       H  nUR	                  USS	5        M     UR                  U5        U R                  UR                  SS5      S
5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        UR                  U5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        UR                  USSSSSS5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        UR                  USSSSSS5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        g )Nrq      rt   rz   ru      r}   r   _________________s   sectetur_________rw   s   piscing_elit,____rs   s   _do_eiusmod______s   _________________s   sectetur       __s   piscing elit,  __s    do eiusmod    __r~   s   __r_sit_amet_____s   __ectetur________s   __r sit amet_____s   __ectetur   _____)	r   r   r   ranger   overlayr   r   	overwrite)r   srcwindstwinis       r   test_overlayTestCurses.test_overlay  s&   q"a+Fq"a+qAMM!Q'  	va+-ABa+-ABa+-ABa+-AB a+-ABa+-ABa+-ABa+-ABvq!Q1b1a+-ABa+-ABa+-ABAq!Q3a+-ABa+-ABa+-ABr   c                     [         R                  " SSSS5      nUR                  5         UR                  SS5        UR	                  5         UR                  5         [         R                  " 5         g )Nrq   r3   rs   rw   )r   r   noutrefreshredrawln	redrawwinr   doupdater   s     r   test_refreshTestCurses.test_refresh<  sJ    mmAr1a(Qr   resizec                     [         R                  " SSSS5      nUR                  SS5        U R                  UR	                  5       S5        UR                  SS5        U R                  UR	                  5       S5        g )Nrq   r3   rs   rz      )rz   r7  )rq   r3   )r   r   r5  r   r   r   s     r   test_resizeTestCurses.test_resizeD  s^    mmAr1a(

1b1

1b1r   enclosec                    [         R                  " SSSS5      nU R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS5      S5        U R                  UR                  SS	5      S5        U R                  UR                  S
S	5      S5        U R                  UR                  SS5      S5        g )Nrq   r3   rs   Trw   Frz   r}      ru   r7  )r   r   r   r:  r   s     r   test_encloseTestCurses.test_encloseL  s    mmAr1a(ckk!Q'.ckk!Q'/ckk!Q'/ckk!R($/ckk!R(%0ckk!R(%0r   c                    [         R                  " SSSS5      nUR                  SSS5        [        R                  " 5        nUR                  U5        AUR                  S5        [         R                  " U5      nU R                  UR                  5       S5        U R                  UR                  5       S5        U R                  UR                  SS5      S	5        S S S 5        g ! , (       d  f       g = f)
Nrq   r|   rw   rs   r	  r   rv   )rq   r|   s    Lorem ipsum)r   r   r   rW   rX   putwinseekgetwinr   r   r   r   )r   r   fs      r   test_putwinTestCurses.test_putwinV  s    mmAr1a(

1a'##%JJqMFF1I--"CS\\^V4S\\^W5SYYq!_o> &%%s   BC''
C5c                 x	   [         R                  " SSSS5      nUR                  SSSSSS	S
S5        U R                  UR	                  SS5      S5        U R                  UR	                  SS5      S5        U R                  UR	                  SS5      S5        UR                  SSSSSSSS5        UR                  SSSSSSS S!5        U R                  [        UR                  SSSSS/ S S!5
        U R                  [        UR                  SSSSSSS S!S"5        U R                  [        UR                  SSSSSSS S!S"5        UR                  SSSSSSS 5        UR                  SSSSSS5        UR                  SSSSS5        UR                  SSSS5        UR                  SSS5        UR                  SS5        UR                  S5        UR                  5         UR                  S#S$5        U R                  UR	                  SSS%5      S&5        U R                  UR	                  SS5      S'5        U R                  UR	                  SSS%5      S&5        UR                  S(S)5        UR                  SS5        U R                  [        UR                  SSS5        U R                  [        UR                  S5        UR                  5         UR                  SS5        UR                  SS5        U R                  UR	                  SSS*5      S+5        UR                  SS5        UR                  S,S5        UR                  SS[         R                  5        UR                  SSSS5        UR                  SSSS[         R                  5        UR                  SS5        UR                  S-S.5        UR                  S/S.5        UR                  S0S.5        UR                  S-S.[         R                  5        UR                  SSS-S.5        UR                  SSS1S[         R                  5        U R                  UR                  SS5      S2[         R                  -  5        U R                  UR                  SS5      S2[         R                  -  5        U R                  UR                  S.S5      S05        g )3Nrq   rr   rs   |!-r  +\r  /r   s
   +--------\rw   s
   |        !rz   s
   #________/   |   !   -   _   +   \r     /r   B   r   D   E   F   G   H   I   :~r{   s   ~~~~~~~~s
   :        :   :   ~ru   s    ----- -   r   rt      ar   ;;   )r   r   borderr   r   r   	TypeErrorboxr   hliner   vline
A_STANDOUTr   r   s     r   test_borders_and_lines!TestCurses.test_borders_and_linesb  s   mmAr1a(

3S#c3	(1a.91a-81a-8

4tTd	,

2r2rr2r	#)SZZb"b"b"b	:)SZZb"b"b"b"	>)SZZb"b"b"b"	>

2r2r2r2.

2r2r2r*

2r2r2&

2r2r"

2r2

2r

2

S1a+[91aM:1a+[9dB)SWWb"b9)SWWb1	A		#q1a+Z8		$		"a		#q&--(		!QQ		!QQ.A		#q		$		"a		#q&++,		!QQ		!QQ 1 12!Q63D3D)DE!Q63D3D)DE!Q1r   c                 >   U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        [        R                  S5        U R                  [        [        R                  S	5        U R                  [        [        R                  S
5        U R                  [        [        R                  S5        U R                  [
        [        R                  S5        g )Nr   r   r      
s   ^J
rr   r   s   AB AB            )r   r   unctrlr   rd  r   ri   s    r   test_unctrlTestCurses.test_unctrl  s   t,d3s+T2r*D1u-u5t,e4r*E2)V]]C8)V]]E:)V]]B7)V]]D9->r   c                 z   U R                   (       d  U R                  S5        U R                  [        R                  " 5       S5        [        R
                  " 5         U R                  [        R                  " 5       S5        [        R                  " 5         U R                  [        R                  " 5       S5        g )Nrequires terminalFT)rM   r+   r   r   isendwinr_   r2  ri   s    r   test_endwinTestCurses.test_endwin  sh    {{MM-.foo'/foo'.foo'/r   c                    U R                  [        R                  " S5      [        5        U R	                  [        R                  " S5      S5        U R	                  [        R                  " S5      S5        U R                  [        R
                  " S5      [        5        U R	                  [        R
                  " S5      S5        U R	                  [        R
                  " S5      S5        U R                  [        R                  " S5      [        [        S 5      45        U R                  [        R                  " S5      5        U R                  [        R                  " S5      5        [        R                  " S5      nUbp  U R                  U[        5        [        R                  " US5        [        R                  " US5      nU R                  U[        5        [        R                  " U5        [        R                  " S5        g )	Nhccolsr2   crr   cudrs   s   abc
)assertIsInstancer   	tigetflagintr   tigetnumtigetstrbytestypeassertIsNonetparmputp)r   r}  cud_2s      r   test_terminfoTestCurses.test_terminfo  sW   f..t4c:))&126))$/4foof5s;.3.3food3eT$Z5HI&//$/0&//&12ooe$?!!#u-LLa LLa(E!!%/KKHr   c                 (   [         R                  " S5        [         R                  " 5         [         R                  " 5         U R	                  [         R
                  " 5       S5        [         R                  " S5        [         R                  " SS5        g )Nrw   Fd   2   )r   delay_outputflushinpr2  r   rv  napmsnewpadri   s    r   test_misc_module_funcs!TestCurses.test_misc_module_funcs  sS    Afoo'/Sb"r   c                    U R                  [        R                  " 5       [        5        U R                  [        R                  " 5       [        5        U R                  [        R
                  " 5       [        5        U R                  [        R                  " 5       [        5        U R                  [        R                  " 5       [        5        U R                  [        R                  " 5       [        5        [        R                  " 5       nU R                  U[        5        U R                  [        U5      S5        [        R                  " 5       nU R                  U[        5        U R                  [        U5      S5        g )Nrw   )r~  r   termnamer  longnamebaudrater  has_icboolhas_il	termattrskillcharr   r   	erasechar)r   r   s     r   test_env_queriesTestCurses.test_env_queries  s    foo/7foo/7foo/5fmmot4fmmot4f..0#6OOa'Q#a'Q#r   c                    U R                   nUR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        [	        US5      (       a"  UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  S5        UR                  SS5        [        R                  " 5         [        R                  " S5        [        R                  " S5        [        R                  " 5         g )NTFimmedokrq   rr   )r   clearokidcokidlokr   r  leaveokr   	setscrregr   nonlnlr   s     r   test_output_optionsTestCurses.test_output_options  s    tuTUUT69%%NN4 NN5!tuB		$		%		r   c                 (   U R                   nU R                  (       a  [        R                  " 5         [        R                  " 5         [        R                  " S5        [        R                  " S5        [        R
                  " S5        [        R
                  " S5        [        R                  " 5         [        R                  " S5        [        R                  " S5        [        R                  " 5         [        R                  " 5         [        R                  " 5         [        R                  " S5        [        R                  " S5        [        R                  " S5        [        R                  " S5        UR                  S5        UR                  S5        [        R                  " S5        [        R                  " S5        UR                  S5        UR                  S5        [        R                  " 5         [        R                  " S5        [        R                  " S5        [        R                  " 5         UR!                  S5        UR!                  S5        UR#                  S5        UR#                  S5        UR#                  S5        g )NFT   rw   r2   r   rq   )r   rM   r   nocbreakcbreak	intrflushrawnorawr   r   	halfdelaykeypadmetanodelay	noqiflushqiflush	notimeouttimeoutr   s     r   test_input_optionsTestCurses.test_input_options  s   ;;OOMMOMM% MM$T"U#JJLJJuJJtLLNEDdeDEtuturqqr   	typeaheadc                     [         R                  " [        R                  R	                  5       5        [         R                  " S5        g )Nr2   )r   r  r@   	__stdin__rC   ri   s    r   test_typeaheadTestCurses.test_typeahead/  s+    --/0r   c                     U R                   (       d  U R                  S5        [        R                  " 5         [        R                  " 5         g )Nru  )rM   r+   r   def_prog_modereset_prog_moderi   s    r   test_prog_modeTestCurses.test_prog_mode4  s.    {{MM-. r   c                    [         R                  " S5      c  [         R                  " S5      b  [         R                  " 5         g  [         R                  " 5         g ! [         R                   a    U R	                  S5         g f = f)Nbelflashzbeep() failed)r   r  beeperrorr+   ri   s    r   	test_beepTestCurses.test_beep:  sV    OOE".w'3KKM/<< /o./   A %BBc                    [         R                  " S5      c  [         R                  " S5      b  [         R                  " 5         g  [         R                  " 5         g ! [         R                   a    U R	                  S5         g f = f)Nr  r  zflash() failed)r   r  r  r  r+   ri   s    r   
test_flashTestCurses.test_flashD  sW    OOE".w'3LLN0<< 0./0r  c                     S HK  u  p[         R                  " U5      b  [         R                  " U5        M4   [         R                  " U5        MM     g ! [         R                   a     Mg  f = f)N))r   civis)rs   cvvis)rw   cnorm)r   r  curs_setr  )r   viscaps      r   test_curs_setTestCurses.test_curs_setN  sS    BHCs#/$OOC( C || s   AA+*A+get_escdelayc                     [         R                  " 5       nU R                  U[        5        [         R                  " S5        U R                  [         R                  " 5       S5        [         R                  " U5        g )N   )r   r  r~  r  set_escdelayr   )r   escdelays     r   test_escdelayTestCurses.test_escdelayX  sU    &&(h,B,,.3H%r   get_tabsizec                     [         R                  " 5       nU R                  U[        5        [         R                  " S5        U R                  [         R                  " 5       S5        [         R                  " U5        g )Nrz   )r   r  r~  r  set_tabsizer   )r   tabsizes     r   test_tabsizeTestCurses.test_tabsize`  sU    $$&gs+1++-q17#r   getsyxc                    [         R                  " 5       u  pU R                  U[        5        U R                  U[        5        [         R                  " SS5        U R                  [         R                  " 5       S5        g )Nrz   rq   )rz   rq   )r   r  r~  r  setsyxr   )r   yxs      r   test_getsyxTestCurses.test_getsyxh  sS    }}a%a%a&1r   c                 0    S[         R                  SSSSS4$ )Nr2                                   rp  r   COLORSri   s    r   
bad_colorsTestCurses.bad_colorsp  s    FMM:uj%OOr   c                 *    [         R                  SSS4$ )Nr  r  rp  r  ri   s    r   bad_colors2TestCurses.bad_colors2s  s    ueU33r   c                     g)N)r2   r  r  r  r  rp  r%   ri   s    r   	bad_pairsTestCurses.bad_pairsv  s    @r   c                     U R                  [        R                  " 5       [        5        U R                  [        R                  " 5       [        5        g rh   )r~  r   r*   r  can_change_colorri   s    r   test_has_colorsTestCurses.test_has_colorsy  s4    f//148f557>r   c                 @   [         R                  " 5       (       d  U R                  S5        [         R                  " 5         [        (       aS  [        S[         R                   3[        R                  S9  [        S[         R                   3[        R                  S9  g g )Nr)   z	COLORS = )r;   zCOLOR_PAIRS = )
r   r*   r+   r,   r   r>   r  r@   rA   COLOR_PAIRSri   s    r   test_start_colorTestCurses.test_start_color}  si      ""MM347Ifmm_-CJJ?N6#5#5"67cjjI r   c                 b   U R                  [        R                  " [        R                  5      S5        [        R                  " S5        [        R                  S-
  n[        R                  " U5        U R                  5        H(  nU R                  [        [        R                  U5        M*     g )Nr   r   r   r   rw   )r   r   color_contentCOLOR_BLACKr  r  r   r   )r   maxcolorcolors      r   test_color_contentTestCurses.test_color_content  sv    --f.@.@A9MQ==1$X&__&Ej&*>*>F 'r   c           	         [         R                  " 5       (       d  U R                  S5        [         R                  " S5      n [         R                  " S/UQ76   U R                  " [         R                  S/UQ76   [         R                  " SSSS5        U R                  [         R                  " S5      S5        [         R                  " SSSS5        U R                  [         R                  " S5      S5        [         R                  S-
  n[         R                  " U5      n[         R                  " U/UQ76   U R                  " [         R                  U/UQ76   [         R                  " USSS5        U R                  [         R                  " U5      S	5        U R                  5        H+  nU R                  [        [         R                  USSS5        M-     S
 H{  nU R                  [        [         R                  SUSS5        U R                  [        [         R                  SSUS5        U R                  [        [         R                  SSSU5        M}     g ! [         R
                   a    U R                  S5         GN*f = f)Nzcannot change colorr   z)cannot change color (init_color() failed)r    )r  r  r  rw     )r   r  r  )r2   i  )r   r  r+   r  
init_colorr  rQ   r   r  r  r   r   )r   oldr	  r
  comps        r   test_init_colorTestCurses.test_init_color  s   &&((MM/0""1%	Ga&#& 	))13s3!Q1%--a0)<!T4.--a02DE==1$""8,()S)))8:c:(AsD1--h7H__&Ej&*;*;UAq!L 'Dj&*;*;QaKj&*;*;Q4Kj&*;*;Q1dK # || 	GMMEF	Gs   I %JJc                    [         R                  n[        [         S5      (       a  [         R                  " 5       (       a  US[         R                  -  S-   -  n[         R                  " 5       (       a  S[         R
                  s=::  a  S:  a  O  O[        U[        5      n [         R                  " US-
  SS5        U$ U$ ! [         a    [         R                  n U$ f = f)Nncurses_versionrs   rw   )r}   rw   )r}   rs   r   )
r   r  r   has_extended_color_supportr  r  min	SHORT_MAX	init_pairr   )r   
pair_limits     r   get_pair_limitTestCurses.get_pair_limit  s    ''
6,--0022ao11
5577!7!7@&@ Y7
0  aA6 z  0#//
0s   "C CCc                    [        [        S5      (       d*  U R                  [        R                  " S5      [        5        [        R                  " S5        U R                  5       S-
  nUS:  a  [        R                  " U5        U R                  5        H(  nU R                  [        [        R                  U5        M*     g )Nuse_default_colorsr   rw   )	r   r   r  pair_contentDEFAULT_PAIR_CONTENTSr  r  r   r   )r   maxpairpairs      r   test_pair_contentTestCurses.test_pair_content  s    v344MM&--a02GHA%%'!+Q;(NN$Dj&*=*=tD %r   c                 8   [         R                  " S5      n[         R                  " S/UQ76   U R                  " [         R                  S/UQ76   [         R                  " SSS5        U R	                  [         R                  " S5      S5        [         R
                  S-
  n[         R                  " SUS5        U R	                  [         R                  " S5      US45        [         R                  " SSU5        U R	                  [         R                  " S5      SU45        U R                  5       S-
  nUS:  a>  [         R                  " USS5        U R	                  [         R                  " U5      S5        U R                  5        H*  nU R                  [        [         R                  USS5        M,     U R                  5        HQ  nU R                  [        [         R                  SUS5        U R                  [        [         R                  SSU5        MS     g )Nrw   r   r0   )r   r   r  rQ   r   r  r  r  r   r   r  )r   r  r	  r"  r#  r
  s         r   test_init_pairTestCurses.test_init_pair  s   !!!$!S!((!2c2Aq!,,Q/8==1$Ha(,,Q/(A?Ax(,,Q/!X?%%'!+Q;Wa+V0096BNN$Dj&*:*:D!QG %%%'Ej&*:*:AuaHj&*:*:Aq%H (r   c                    S Hv  n[         R                  " U5      nU R                  [         R                  " U5      X5        U R                  [         R                  " U[         R                  -  5      U5        Mx     U R                  [         R                  " S5      S5        U R                  [         R                  " S5      S5        g )N)r   rw   r  r   )r   
color_pairr   pair_numberr   )r   r#  attrs      r   test_color_attrsTestCurses.test_color_attrs  s    D$$T*DV//5tBV//v}}0DEtL  	**1-q1++A.2r   r  c                 *   [         R                  " S5      n [         R                  " 5         U R                  [         R                  " S5      S5        U R                  U[        5        g ! [         R                   a    U R	                  S5         Ndf = f)Nr   z1cannot change color (use_default_colors() failed)r1   )r   r   r  r  r+   r   r  r!  )r   r  s     r   test_use_default_colors"TestCurses.test_use_default_colors  sv     !!!$	O%%' 	,,Q/:c01 || 	OMMMN	Os   A* *%BBc                    U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        [        R                  S	5        U R                  [        R                  " S
5      [        5        g )Nr   r   ry   s   ^M   s   ^?r   s   ^@r2      )r   r   keynamer   r   r~  r  ri   s    r   test_keynameTestCurses.test_keyname  s    +T2+U3,e4*E2*fnnb9fnnS159r   has_keyc                 0    [         R                  " S5        g )Nry   )r   r8  ri   s    r   test_has_keyTestCurses.test_has_key  s    rr   getmousec                 $   [         R                  " [         R                  5      u  pUS:X  a  U R                  S5        [         R                  " S5        [         R
                  " SSSS[         R                  5        [         R                  " 5       ng )Nr   zmouse stuff not availablerr   )r   	mousemaskBUTTON1_PRESSEDr+   mouseinterval
ungetmouser<  )r   	availmaskoldmaskms       r   test_getmouseTestCurses.test_getmouse  se    %//0F0FG>MM56R !Q1f&<&<=OOr   panelc                    [         R                  " SS5      n[         R                  R                  U5      nU R	                  [         R                  R
                  SS9   UR                  5         S S S 5        g ! , (       d  f       g = f)Nrr   z!userptr should fail since not set)msg)r   r   rG  	new_panelr   r  userptr)r   wps      r   test_userptr_without_set#TestCurses.test_userptr_without_set  se    MM"b!LL""1%v||11#F  HIIKH H Hs   A99
Bc                 f   [         R                  " SS5      n[         R                  R                  U5      n[	        5       n[
        R                  " U5      n[        S5       H  nUR                  U5        M     UR                  S 5        U R                  [
        R                  " U5      US5        g )Nrr   r  zset_userptr leaked references)
r   r   rG  rJ  objectr@   getrefcountr&  set_userptrr   )r   rL  rM  objnrefsr+  s         r   test_userptr_memory_leak#TestCurses.test_userptr_memory_leak  s    MM"b!LL""1%h$sAMM#  	
d-u8	:r   c                    ^ [         R                  " SS5      n[         R                  R                  U5      m " U4S jS5      nTR	                  U" 5       5        TR	                  S 5        g )Nrr   c                   "   > \ rS rSrU 4S jrSrg)+TestCurses.test_userptr_segfault.<locals>.Ai'  c                 (   > TR                  S 5        g rh   )rS  )r   rG  s    r   __del__3TestCurses.test_userptr_segfault.<locals>.A.__del__(  s    !!$'r   r%   N)__name__
__module__r   __firstlineno__r\  __static_attributes__)rG  s   r   r   rZ  '  s    ( (r   r   )r   r   rG  rJ  rS  )r   rL  r   rG  s      @r   test_userptr_segfault TestCurses.test_userptr_segfault#  sQ    MM"b!&&q)	( 	( 	!#$r   c                     [         R                  " SS5      n[         R                  R                  U5      n[	        U [        U5      5        g )Nrr   )r   r   rG  rJ  r   r  )r   rL  rG  s      r   test_disallow_instantiation&TestCurses.test_disallow_instantiation-  s6     MM"b!&&q)$T4;7r   is_term_resizedc                     [         R                  [         R                  p!U R                  [         R                  " X5      S5        U R                  [         R                  " US-
  US-
  5      S5        g )NFrw   T)r   LINESCOLSr   rg  r   linesr{  s      r   test_is_term_resizedTestCurses.test_is_term_resized5  sM    llFKKtf,,U95Af,,U1Wd1f=tDr   resize_termc                 :   [         R                  " 5         [         R                  [         R                  p!US-
  nUS-   n[         R                  " X45        U R                  [         R                  U5        U R                  [         R                  U5        [         R                  " X5        U R                  [         R                  U5        U R                  [         R                  U5        U R                  [        5         [         R                  " SS5        S S S 5        U R                  [        5         [         R                  " SS5        S S S 5        [         R                  " 5       nUR                  5         g ! , (       d  f       Ni= f! , (       d  f       NE= fNrw   i  )
r   update_lines_colsri  rj  ro  r   r   r   r]   ra   r   rl  r{  	new_linesnew_colsrc   s         r   test_resize_termTestCurses.test_resize_term;  s     "llFKKtAI	!89/y1h/5'u-d+}-ua( .}-q%( . nn		 .---    E;5F;
F	
F
resizetermc                 :   [         R                  " 5         [         R                  [         R                  p!US-
  nUS-   n[         R                  " X45        U R                  [         R                  U5        U R                  [         R                  U5        [         R                  " X5        U R                  [         R                  U5        U R                  [         R                  U5        U R                  [        5         [         R                  " SS5        S S S 5        U R                  [        5         [         R                  " SS5        S S S 5        [         R                  " 5       nUR                  5         g ! , (       d  f       Ni= f! , (       d  f       NE= frq  )
r   rr  ri  rj  ry  r   r   r   r]   ra   rs  s         r   test_resizetermTestCurses.test_resizetermQ  s     "llFKKtAI	!8).y1h/%&u-d+}-eQ' .}-a' . nn		 .---rx  c                    [         R                  " S5        U R                  U R                  R	                  5       S5        [         R                  " S5        U R                  U R                  R	                  5       S5        [         R                  " S5        U R                  U R                  R	                  5       S5        g )Nr   r   Br   C)r   r   r   r   getkeyri   s    r   test_ungetchTestCurses.test_ungetchg  s}    t++-s3s++-s3r++-s3r   c                 d    [         R                  " S5        U R                  R                  5         g )Ni  )r   r   r   r  ri   s    r   test_issue6243TestCurses.test_issue6243o  s    tr   	unget_wchr  )c   )rq   r{   z.unget_wch is broken in ncurses 5.7 and earlierc           
         U R                   nUR                  nS H  n UR                  U5         [        R
                  " U5        UR                  5       nU R                  XS5        [        U5      n[        R
                  " U5        UR                  5       nU R                  XS5        M     g ! [         a     M  f = f! [         a1  nU R                  SU< SUR                  < SU< 35         S nANS nAff = f)N)r      ér   u   􏿿z
unget_wch(z) failed with encoding z: )r   r   r   r   r   r  	Exceptionfailget_wchr   ord)r   r   r   cherrreadcodes          r   test_unget_wchTestCurses.test_unget_wchs  s     ??7B		(#8  $ >>#DT&r7DT">>#DT&! 8 &   8		#7 8 88s(   B/C /
B=<B= 
C;
'C66C;c                 8   U R                   nSS KnUR                  nUR                  U5        U R	                  [
        5         SUl        S S S 5        X1l        U R	                  [
        5         U?S S S 5        g ! , (       d  f       N5= f! , (       d  f       g = f)Nr   rr   )r   codecsr   lookupr   rd  )r   r   r  r   s       r   test_encodingTestCurses.test_encoding  so    ??hy) FO *"y) *) *) *)s   A:.B:
B
Bz6Signature information for builtins requires docstringsc                    U R                   n [        R                  " UR                  5      nU R	                  U5        UR                  R                  R                  S5      S   nU R                  SU5        g ! [
         a     NGf = f)Nrm  r   z[y, x,])	r   inspect	signaturer   assertFalser   __doc__splitr  )r   r   r  human_readable_signatures       r   test_issue21088TestCurses.test_issue21088  sy     	))&,,7IY' $*<<#7#7#=#=d#CA#F i!9:  		s   1A: :
BBc                     [         R                  " SSSS5      n[         R                  R                  USS9nUR	                  5       u  p4UR                  US-
  US-
  5        UR                  S5        g )Nrq   r3   rs   T)insert_moder   )r   r   textpadTextboxr   r5  _insert_printable_char)r   r   re  rl  r{  s        r   test_issue13051TestCurses.test_issue13051  s`    mmAr1a(nn$$Sd$;lln

57DF#""3'r   )rM   rN   rY   r   N)Tr^  r_  r   r`  classmethodrG   rd   r   rj   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r&   r  r   r,  r3  r8  r=  rD  ri  rr  rw  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-  r0  r6  r:  rE  rN  rV  rb  r   re  rm  rv  r{  r  r  r   skipIfgetattrr   r  r  r	   r  r  ra  r%   r   r   r7   r7   ?   s    ' '.` (# $
 )$ %23h	1.>`$5L 5DF> 0;,<((>T !)H *H<EBC: !*2 +2 !+1 ,1
?62p?00	$ :,\ +& '!/0 .)& *& -($ )$ (#2 $2P4A?J G G L L:" 	E 	E I I. 3 3 ./2  02: )$ % *% & '" # '"
: #
: '"  #  '"8 # 8 +,E -E
 -( )* ,' (*4 +&__WV%6>GEG'G ''*	  __)MO;O;8 !*( +(r   r7   c                   R    \ rS rSr\" S5      S 5       r\" S5      S 5       rS rSrg)		MiscTestsi  rr  c                 B   [         R                  " 5         [         R                  [         R                  p!S=[         l        [         l        [         R                  " 5         U R	                  [         R                  U5        U R	                  [         R                  U5        g )Nr   )r   rr  ri  rj  r   rk  s      r   test_update_lines_cols MiscTests.test_update_lines_cols  s_      "llFKKt%&&v{  "u-d+r   r  c                    [         R                  n[        (       a  [        S[         R                   3SS9  U R	                  US S  [
        5        U R                  [        U5      S5        U R	                  US   [        5        U R	                  US   [        5        U R	                  US   [        5        U R	                  UR                  [        5        U R	                  UR                  [        5        U R	                  UR                  [        5        U R                  US   UR                  5        U R                  US   UR                  5        U R                  US   UR                  5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        g )Nzncurses_version = T)r<   rt   r   rw   rs   )r   r  r   r>   r~  tupler   r   r  majorminorpatchassertGreaterEqual)r   vs     r   test_ncurses_versionMiscTests.test_ncurses_version  sO   ""7&v'='=&>?tLadE*Q#adC(adC(adC(aggs+aggs+aggs+1qww'1qww'1qww'+++r   c                 Z    [         R                  " 5       nU R                  U[        5        g rh   )r   r  r~  r  )r   rs     r   test_has_extended_color_support)MiscTests.test_has_extended_color_support  s     --/a&r   r%   N)	r^  r_  r   r`  r   r  r  r  ra  r%   r   r   r  r    s9    -., /, +,, -,&'r   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
	TestAsciii  c                     [         R                  R                   H-  nU R                  [	        [         R                  U5      U5        M/     g rh   )r   asciicontrolnames
assertTruer   )r   r   s     r   test_controlnamesTestAscii.test_controlnames  s/    LL--DOOGFLL$7> .r   c                 ~  ^ ^^ UUU 4S jn[        S5       GH  m[        T5      m[        T/5      nU" [        R                  R
                  UR                  5       5        U" [        R                  R                  UR                  5       5        U" [        R                  R                  UR                  5       5        U" [        R                  R                  UR                  5       5        U" [        R                  R                  UR                  5       5        U" [        R                  R                  UR                  5       5        U" [        R                  R                  TS:  5        U" [        R                  R                  TS:  5        U" [        R                  R                  TS:  5        U" [        R                  R                  TS:  =(       d    TS:H  5        U" [        R                  R                  TS;   5        U" [        R                  R                   STs=:  =(       a    S:*  Os  5        U" [        R                  R"                  STs=:*  =(       a    S:*  Os  5        U" [        R                  R$                  T[&        R(                  ;   5        U" [        R                  R*                  T[&        R,                  ;   5        GM     SS	S[.        R0                  [.        R0                  S
-   4 GH  mT R3                  [        R                  R                  T5      5        T R3                  [        R                  R                  T5      5        T R3                  [        R                  R                  T5      5        T R3                  [        R                  R                  T5      5        T R3                  [        R                  R                  T5      5        T R3                  [        R                  R                  T5      5        T R3                  [        R                  R                  T5      5        T R3                  [        R                  R                  T5      5        T R3                  [        R                  R                  T5      5        T R3                  [        R                  R                  T5      5        T R3                  [        R                  R!                  T5      5        T R3                  [        R                  R#                  T5      5        T R3                  [        R                  R%                  T5      5        T R3                  [        R                  R+                  T5      5        GM     T R3                  [        R                  R                  S	5      5        g )Nc                    > TR                  TU S9   TR                  U " T5      U5        TR                  U " T5      U5        S S S 5        g ! , (       d  f       g = f)N)r  r   )r   r   )r   expectedr   r+  r   s     r   check$TestAscii.test_ctypes.<locals>.check  sG    .  a(3  a(3 /..s   1A
Ar4     r  r3  z 	~   r   r2   rw   )r&  chrr  r   r  isalnumisalphaisdigitislowerisspaceisupperisasciiismetaisctrliscntrlisblankisgraphisprintispunctstringpunctuationisxdigit	hexdigitsr@   
maxunicoder  )r   r  br   r+  s   `  @@r   test_ctypesTestAscii.test_ctypes  s   	4
 sAAAqc
A&,,&&		4&,,&&		4&,,&&		4&,,&&		4&,,&&		4&,,&&		4&,,&&C0&,,%%qCx0&,,%%q2v.&,,&&B(:!s(;&,,&&U
3&,,&&Q#6&,,&&a37&,,&&V-?-?(?@&,,''f.>.>)>?% ( b#s~~s~~a/?@AV\\11!45V\\11!45V\\11!45V\\11!45V\\11!45V\\11!45V\\11!45V\\0034V\\11!45V\\11!45V\\11!45V\\11!45V\\11!45V\\22156 A" 	,,R01r   c                     [         R                  R                  nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" [        S5      5      [        S5      5        g )N   Ár   )r   r  r   r  )r   r  s     r   
test_asciiTestAscii.test_ascii  sV    ""v,sS)s6{+SX6r   c                    [         R                  R                  nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" [	        S5      5      [	        S5      5        g )NJrm  @ )r   r  ctrlr   r  )r   r  s     r   	test_ctrlTestAscii.test_ctrl  si    ||  cD)dT*cD)c#hT3r   c                     [         R                  R                  nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" [	        S5      5      S5        g )Nrm     r   r     )r   r  altr   r  )r   r  s     r   test_altTestAscii.test_alt"  sQ    llTF+S6*SX-r   c                    [         R                  R                  nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S	5      S
5        U R                  U" [	        S5      5      S5        U R                  U" [	        S5      5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" [	        S5      5      S5        U R                  U" [	        S5      5      S5        g )Nr   r   ra   z^?rm  z^Jr  z^@r  z!^Jr  z!A)r   r  rq  r   r  )r   rq  s     r   rr  TestAscii.test_unctrl(  s)   $$c*c*c*c*.t,t,C)3/D	*D1/.F,e4F,d3r   r%   N)r^  r_  r   r`  r  r  r  r  r  rr  ra  r%   r   r   r  r    s!    ?+2Z74.4r   r  c                     / SQnU R                  5       u  p#[        US U 5       H#  u  pEU R                  USUS X4US-
  :H  -
   5        M%     g )N)	r	  zdolor sit amet,consecteturzadipiscing elit,zsed do eiusmodztempor incididuntzut labore etzdolore magnazaliqua.r   rw   )r   	enumerater   )r   textmaxymaxxr  lines         r   r   r   :  sR    
D JDT%4[)

1a5tD1H}567 *r   c                   J    \ 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)TextboxTestiK  c                    [        [        R                  S9U l        SU R                  R                  l        SU R                  R                  l        [        R                  R                  U R                  5      U l	        g )N)spec)rw   rw   )rr   r7  )
r   r   windowmock_winr   return_valuer   r  r  textboxri   s    r   rd   TextboxTest.setUpL  sP    !v}}5+1(.6+~~--dmm<r   c                    U R                   R                  5         [        R                  R	                  U R                   5      nU R                   R
                  R                  5         U R                   R                  R                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  5        U R                   R                  5         g)zTest textbox initialization.rw   FN)r  
reset_mockr   r  r  r   assert_called_once_withr  r   r  stripspacesr  lastcmd)r   tbs     r   	test_initTextboxTest.test_initR  s      "^^##DMM266844Q7/+"**%  "r   c                 X   U R                   R                  5         U R                  R                  [	        S5      5        U R                   R
                  R                  [	        S5      5        U R                  R                  [	        S5      5        U R                   R
                  R                  [	        S5      5        U R                  R                  [	        S5      5        U R                   R
                  R                  [	        S5      5        U R                   R                  5         g)z%Test inserting a printable character.r   r  r   N)r  r
  r  
do_commandr  r   assert_called_withri   s    r   test_insertTextboxTest.test_insert]  s      "C)..s3x8C)..s3x8C)..s3x8  "r   c                    U R                   R                  5         U R                  R                  [        R
                  R                  5        U R                  R                  [        R                  5        U R                  R                  [        R
                  R                  5        U R                   R                  5         g)zTest deleting a character.N)	r  r
  r  r  r   r  BSKEY_BACKSPACEDELri   s    r   test_deleteTextboxTest.test_deleteh  sp      "0 4 45 0 01  "r   c                 
   U R                   R                  5         U R                  R                  [        R
                  5        U R                   R                  R                  SS5        U R                   R                  5         g)zTest moving the cursor left.rw   r   N)r  r
  r  r  r   KEY_LEFTr   r  ri   s    r   test_move_leftTextboxTest.test_move_leftq  R      "0--a3  "r   c                 
   U R                   R                  5         U R                  R                  [        R
                  5        U R                   R                  R                  SS5        U R                   R                  5         g)zTest moving the cursor right.rw   rs   N)r  r
  r  r  r   	KEY_RIGHTr   r  ri   s    r   test_move_rightTextboxTest.test_move_rightx  sT      " 0 01--a3  "r   c                    U R                   R                  5         U R                  R                  [        R
                  5        U R                   R                  R                  SS5        U R                  R                  [        R                  5        U R                   R                  R                  SS5        U R                   R                  5         g)z+Test moving the cursor left and then right.rw   r   rs   N)	r  r
  r  r  r   r  r   r  r"  ri   s    r   test_move_left_and_right$TextboxTest.test_move_left_and_right  s      "0--a3 0 01--a3  "r   c                 
   U R                   R                  5         U R                  R                  [        R
                  5        U R                   R                  R                  SS5        U R                   R                  5         g)zTest moving the cursor up.r   rw   N)r  r
  r  r  r   KEY_UPr   r  ri   s    r   test_move_upTextboxTest.test_move_up  sR      ".--a3  "r   c                 
   U R                   R                  5         U R                  R                  [        R
                  5        U R                   R                  R                  SS5        U R                   R                  5         g)zTest moving the cursor down.rs   rw   N)r  r
  r  r  r   KEY_DOWNr   r  ri   s    r   test_move_downTextboxTest.test_move_down  r   r   )r  r  N)r^  r_  r   r`  rd   r  r  r  r  r#  r&  r*  r.  ra  r%   r   r   r  r  K  s/    =	#	#######r   r  __main__)*r!   r  rO   r  r@   rW   r   unittest.mockr   test.supportr   r   r   r   r   r	   r
   test.support.import_helperr   r   curses.panelImportErrorr   r&   r.   environgetr?   r  COLOR_WHITEr  r!  r  r   TestCaser7   r  r  r   r  r^  mainr%   r   r   <module>r;     s     	  
   #& & & 5
 	  
x	  n   	< 
zz~~f	++,
	  
T.TY.=DF	)46x("" x(6Fx(v#!'!! !'HU4!! U4p8"I#(## I#X zMMO {+  		s   E E)(E)