
    daf.                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZmZmZmZmZ d dlmZ  e
d        ed      Z ed        ed       	 d dlZd Zd	 Zd
 Zej0                  j3                  d      ZdZ ej8                  e xs edk(  dez         ej8                  ej:                  dk(  d       G d dej<                                      Z G d dej<                        Z  G d dej<                        Z!d Z" G d dej<                        Z#e$dk(  r ejJ                          yy# e$ r Y w xY w)    N)	MagicMock)requiresverboseSaveSignalscpython_onlycheck_disallow_instantiationMISSING_C_DOCSTRINGS)import_modulecurseszcurses.asciizcurses.textpadc                 P    t        j                  t        t        |       d| z        S )Nzrequires curses.%s)unittest
skipUnlesshasattrr   )names    +/root/Python-3.12.4/Lib/test/test_curses.pyrequires_curses_funcr      s&    wvt43d:< <    c                       fd}|S )Nc                 F     t        j                          fd       }|S )Nc                 z    t        | j                        st        j                  dz         | g|i | y )Nzrequires curses.window.%s)r   stdscrr   SkipTest)selfargskwargsr   tests      r   wrappedz:requires_curses_window_meth.<locals>.deco.<locals>.wrapped"   s:    4;;-''(Cd(JKK'''r   	functoolswraps)r   r   r   s   ` r   decoz)requires_curses_window_meth.<locals>.deco!   s%    			( 
	( r    )r   r!   s   ` r   requires_curses_window_methr#       s     Kr   c                 B     t        j                          fd       }|S )Nc                     t        j                         s| j                  d       t        j                           | g|i | y )Nrequires colors support)r   
has_colorsskipTeststart_color)r   r   r   r   s      r   r   z requires_colors.<locals>.wrapped,   s:      "MM34T#D#F#r   r   )r   r   s   ` r   requires_colorsr*   +   s%    __T$ $
 Nr   TERMi  unknownz*$TERM=%r, calling initscr() may cause exitcygwinz!cygwin's curses mostly just hangsc                   0   e Zd Zed        Zd Z ed      d        Z ed      d        Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Z ed      d        Zd Zd Zd Z ed      d        Z ed      d        Zd Zd Zd Zd  Z d! Z!d" Z"d# Z#d$ Z$d% Z% ed&      d'        Z&d( Z'd) Z(d* Z)d+ Z* ed,      d-        Z+ ed.      d/        Z, ed0      d1        Z-d2 Z.d3 Z/d4 Z0d5 Z1d6 Z2e3d7        Z4e3d8        Z5d9 Z6e3d:        Z7e3d;        Z8e3d<        Z9 ed=      e3d>               Z:d? Z; ed@      dA        Z< edB      dC        Z= edD      dE        Z> edD      dF        Z? edD      dG        Z@eA edD      dH               ZB edI      dJ        ZC edK      dL        ZD edM      dN        ZEdO ZFdP ZG edQ       eHj                   eJeKdRdS      dTk  dU      dV               ZLdW ZM eHj                  eNdX      dY        ZO ed      dZ        ZPy[)\
TestCursesc                     t         r#t        dt         t        j                  d       t        j
                  j                         }t        j                  |       y )NzTERM=Tfileflush)fd)	r   printtermsysstderr
__stdout__filenor   	setupterm)cls	stdout_fds     r   
setUpClasszTestCurses.setUpClass>   s=    E$.szz> NN))+	I&r   c                 v   d| _         t        j                  | _        t        j                  j	                         }t        j                  j                         st        j                  |      }| j                  t
        j                  |       | j                  t
        j                  ||       t        j                  j                         r&t        j                  }t        j                  | _        n1	 t        ddd      }| j                  |j                         d | _        t        j                  |j	                         |       t               | _        | j                   j#                          | j                  | j                   j$                         t&        r_| j                  St        j(                  j+                          t        j,                  j+                          t/        | j                  d       t1        j2                         | _        | j                   rRt1        j6                          | j                  t0        j8                         | j                  t0        j:                         | j4                  j=                          y # t        $ r" t        j                  dd      }d| _         Y w xY w)	NTz/dev/ttywbr   )	buffering)moderA   Fr1   )isattyr7   r9   outputr:   osdup
addCleanupclosedup2
__stderr__openOSErrortempfileTemporaryFiler   save_signalssaverestorer   r8   r3   stdoutr5   r   initscrr   savettyendwinresettyerase)r   r=   dup_fdtmps       r   setUpzTestCurses.setUpG   s   nnNN))+	~~$$& VVI&FOOBHHf-OOBGGVY7~~$$&nn!nn	(z41=C 		*"GGCJJL),'M ))112t{{.JJJJt{{$/nn&;;NNOOFMM*OOFNN+1  (
 #00daHC"'DK(s   4J 'J87J8filterc                 ,    t        j                          y N)r   r[   r   s    r   test_filterzTestCurses.test_filterw   s     	r   use_envc                 X    t        j                  d       t        j                  d       y )NFT)r   r`   r^   s    r   test_use_envzTestCurses.test_use_env}   s     	utr   c                 	   t        j                  dd      }| j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       t        j                  dddd      }| j                  |j                         d       | j                  |j	                         d       | j                  |j                         d	       |j                  d
d      }| j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       |j                  ddd
d      }| j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       |j                  dd
      }| j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       |j                  dddd
      }| j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       |j                  dd       | j                  |j                         d       | j                  |j	                         d       | j                  |j                         d	       | j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       | j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       |j                  dd       | j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       |j                  dd       | j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       y )N   
   r   r   rh   )rd   re         )rj   rd   )re   ri         )rk   rl      rj   )	      )      )rj   rk   )rr            )rt   ru   r   rn   )r   rn   )rj   rn   )
r   newwinassertEqualgetbegyxgetparyxgetmaxyxsubwinderwinmvwinmvderwin)r   winwin2win3s       r   test_create_windowsz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                 l   | j                   }|j                  dddd      }|j                  dd       |j                  dd       | j                  |j	                         d       | j                  |j	                         d       |j                          | j                  |j	                         d	       y )
Nre   ri   rj   rd   rn   rq   rm   )rj   rq   )rq   ro   )r   r{   moverw   getyx	cursyncup)r   r   r   s      r   test_move_cursorzTestCurses.test_move_cursor   s    mmBAq)AqA0f-0r   c                    | j                   }|j                          | j                  |j                         d       |j	                          | j                  |j                         d       |j                          | j                  |j                         d       |j	                          | j                  |j                         d       |j                          | j                  |j                         d       |j                  dd       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                         d       |j                  ddd       | j                  |j                  d      d       |j                  dddd      }|j                  ddd	d
      }|j	                          |j                          |j                          | j                  |j                         d       | j                  |j                         d       |j	                          |j                          |j                          |j                          | j                  |j                         d       t        |d      rt        j                  j                  d      s|j                          |j                          dD ]d  }|j                  |       |j!                  d       | j                  |j                         |       | j                  |j                         |       f y y y )NFTrd   rj   rt   rn   re   ri   rk   rl   syncoksunos)FTa)r   refreshassertIsis_wintouchedtouchwin
untouchwin	touchlineis_linetouchedr{   syncupsyncdownr   r7   platform
startswithr   addch)r   r   r   r   r   s        r   test_refresh_controlz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NN' >F#

3c//16:f224f=	> .N$r   c                    | j                   }|j                  }|j                          |j                  dd       |j	                  d       |j	                  d       |j	                  d       d}	 |j	                  |       |j	                  dt        j                         |j	                  ddd       |j	                  dddt        j                         | j                  |j                         d	       |j                          |j                  dd       |j!                  d       |j!                  d       |j!                  d       | j                  t
        t        f      5  |j!                  d
       d d d        |j!                  dt        j                         | j                  |j                         d       y # t
        $ r% | j                  t
        |j                  |       Y mt        $ r: |j                  |      }| j                  t        |      dt        |             Y w xY w# 1 sw Y   xY w)Nr   A   AA      €rn   rj   rk   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_characterz TestCurses.test_output_character   s   ??AqSTR	@LLO 	S&--(Q3Q3.f**,d3 	Aq 2MBC 	& OOH%	& 	V]]+f**,e41 " 	F0!((HE 	@hhx(GGag?	@	& 	&s$   1G 'H4*H1/>H10H14H=c           	         | j                   }|j                  }|j                  |j                  fD ]  }| j	                  |j
                        5  |j                  dd        |d        |d       d}	  ||        |dt        j                          |ddd        |dddt        j                         d d d         |j                  |j                  fD ]  }| j	                  |j
                        5  |j                  dd        |dd        |d	d       d
}	  ||d        |dd        |ddt        j                          |dddd        |ddddt        j                         d d d         y # t        $ r% | j                  t        |j                  |       Y )w xY w# 1 sw Y   xY w# t        $ r$ | j                  t        |j                  |       Y w xY w# 1 sw Y   xY w)Nr   abcds   abcdu   àßçđrn   rj   rk   1234s   1234u   ١٢٣٤rd   )r   r   addstrinsstrsubTest__qualname__r   r   r   r   r   r   addnstrinsnstr)r   r   r   funcss        r   test_output_stringzTestCurses.test_output_string  s   ??]]FMM2 	2Dd//0 2Aq!VWNG VV]]+Q6"Q66==12 2	2 ^^V^^4 	5Dd//0 5Aq!VQWa .NAJ VQVQ.Q61%Q61fmm45 5	5 * N%%&8!((HMN2 2, * N%%&8!((HMN5 5sa   %F*5E9=:F*7'G'	F7(AG'9*F'#F*&F''F**F4	7*G$!G'#G$$G''G1	c                    | j                   }dD ]  }| j                  |      5  | j                  t        |j                  |       | j                  t        |j
                  |d       | j                  t        |j                  |       | j                  t        |j                  |d       d d d         y # 1 sw Y   xY w)N)za s   a )argrn   )r   r   r   
ValueErrorr   r   r   r   )r   r   r   s      r   &test_output_string_embedded_null_charsz1TestCurses.test_output_string_embedded_null_chars;  s    " 	FC#& F!!*fmmSA!!*fnnc1E!!*fmmSA!!*fnnc1E	F F	FF Fs   BB66B?	c                    | j                   }|j                  dddt        j                         |j	                  dd       | j                  |j                         dt        j                  z         | j                  |j                  dd      dt        j                  z         |j	                  dd       | j                  |j                         d d d       | j                  |j                  d      d d d	       | j                  |j                  dd
      d d d       | j                  |j                  dd
d      d       | j                  t        |j                  d       | j                  t        |j                  dd
d       y )Nr   rn   ABCDr   rk   C   rt   s    ABCD s    ABrj   rq   s   BCD )
r   r   r   r   r   rw   inchinstrr   r   r   r   s     r   test_read_from_windowz TestCurses.test_read_from_windowE  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                    t        j                  dddd      }dd d d   D ]  }t        j                  |        | j                  |j	                  dd      d       | j                  |j                         d	       | j                  |j	                  dd
      d       | j                  |j                         d       | j                  |j	                         d       | j                  |j                         d       | j                  |j	                         d       | j                  |j	                         d       y )Nrd   rs   rj   zspam
rh   rk   rn   s   )rk   rn   rq   p   )rk   rq   a   m   re   )r   rv   ungetchrw   getchr   r   r   r   s      r   
test_getchzTestCurses.test_getchU  s    mmAr1a( $B$ 	ANN1	1a'2f-1a'2f-g.f-g.h/r   c                    t        j                  dddd      }t        j                          | j                  t         j                         | j                  t        |j                  d       | j                  t        |j                  ddd       dd d d   D ]  }t        j                  |        | j                  |j                  ddd      d	       | j                  |j                  dd
      d       | j                  |j                  ddd      d       | j                  |j                  dd
      d       | j                  |j                  dd      d       | j                  |j                  dd
      d       | j                  |j                  d      d       | j                  |j                  dd
      d       | j                  |j                         d       | j                  |j                  dd
      d       y )Nrd   rs   rj   iprk   zLorem
ipsum
dolor
sit
amet
rh   rn   s   Lor   s    Lo         re   s   ipsums    Lo  ipsum  s   dolors        dolor  s   sis   si   dolor  s   amets   amet dolor  )r   rv   echorG   noechor   r   getstrr   rw   r   r   s      r   test_getstrzTestCurses.test_getstrd  s   mmAr1a(&*cjj$7*cjj!Q= 4DbD9 	ANN1	Aq!,e41a/:Aq"-x81a/:Aq)841a/:A.1a/:w/1a/:r   c                 p   t        j                  dddd      }t        |       |j                  dd       |j	                          | j                  |j                  dd      j                         d       | j                  |j                  dd      j                         d       |j                  dd	       |j                          | j                  |j                  dd      j                         d
       | j                  |j                  dd      j                         d       |j                  |j                  fD ]t  }t        |        |        | j                  |j                  dd      j                         d       | j                  |j                  dd      j                         d       v y )Nrd   ri   rj   r   rr   s   Lorem iprn      dolor sit amet,rk   s   Lorr   )r   rv   lorem_ipsumr   clrtoeolrw   r   rstripclrtobotrW   clear)r   r   r   s      r   
test_clearzTestCurses.test_clearz  sF   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                    t        j                  dddd      }t        |       |j                  dd       |j	                          | j                  |j                  dd      d       |j	                  dd       | j                  |j                  dd      d       |j                  dd       |j                          | j                  |j                  dd      d       | j                  |j                  dd      d	       | j                  |j                  dd      d
       | j                  |j                  dd      d       | j                  |j                  dd      d       |j                  dd       |j                          | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d	       |j                          t        |       |j                  dd       |j                  d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       |j                          t        |       |j                  dd       |j                  d       | j                  |j                  dd      d       | j                  |j                  dd      d
       | j                  |j                  dd      d       | j                  |j                  dd      d       y )Nrd   ri   rj   r   s   Loem ipsum     rl   s   Loem ipum      rn   s   consectetur       adipiscing elitrk   s   sed do eiusmod rq                     s   Lorem ipsum    r   r   )r   rv   r   r   delchrw   r   deletelninsertlnr   insdellnr   r   s     r   test_insert_deletez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                 F   t        j                  dddd      }t        |       |j                  d       |j	                          | j                  |j                  dd      d       |j	                  d       | j                  |j                  dd      d       |j	                  d       | j                  |j                  dd      d	       | j                  |j                  dd      d	       | j                  |j                  d
d      d       |j                  d       y )Nrd   ri   rj   Tr   r   r   r   rk   F)r   rv   r   scrollokscrollrw   r   r   s     r   test_scrollzTestCurses.test_scroll  s    mmAr1a(CT

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

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

21a*<=1a*<=1a*<=Ur   c                 .   t        j                  dddd      }|j                  t         j                         |j	                  t         j                         |j                  t         j                         |j                          |j                          y )Nrd   ri   rj   )r   rv   attronr   attroffattrsetstandoutstandendr   s     r   test_attributeszTestCurses.test_attributes  sX    mmAr1a(

6==!FMM"FMM"r   chgatc                 >   t        j                  dddd      }|j                  ddd       |j                  ddd       |j                  dd       |j	                  t         j
                         | j                  |j                  dd	      d
       | j                  |j                  dd      dt         j
                  z         | j                  |j                  dd      dt         j
                  z         |j                  dd       |j	                  dt         j                         | j                  |j                  dd      d       | j                  |j                  dd      dt         j                  z         | j                  |j                  dd      dt         j                  z         | j                  |j                  dd      d       |j	                  ddt         j                         | j                  |j                  dd      d       | j                  |j                  dd      dt         j                  z         | j                  |j                  dd      dt         j                  z         |j	                  ddd	t         j
                         | j                  |j                  dd      dt         j                  z         | j                  |j                  dd      dt         j
                  z         | j                  |j                  dd      dt         j
                  z         | j                  |j                  dd      dt         j                  z         | j                  |j                  dd      dt         j                  z         y )Nrd   ri   rj   r   Lorem ipsumrk   zdolor sit ametrr   rl   r   r          rn   L   o   e   rq   r   l   r   re   r   ru   )
r   rv   r   r   r   A_BLINKrw   r   r   A_UNDERLINEr   s     r   
test_chgatz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                    t        j                  dddd      }|j                  ddd       | j                  |j	                         d       |j                  d       | j                  |j	                         d       |j                  d	       | j                  |j	                         d
       |j                  d       | j                  |j	                         d       |j                  d       | j                  |j	                         d       |j                  dt         j                         | j                  |j	                         d
t         j                  z         | j                  |j                  dd      d       | j                  |j                  dd      d       |j                  d       |j                  d       | j                  |j	                         d       | j                  |j                  dd      d       | j                  |j                  dd      d       |j                  dt         j                         | j                  |j	                         d
t         j                  z         | j                  |j                  dd      dt         j                  z         | j                  |j                  dd      d
t         j                  z         y )Nrd   ri   rj   r   r   )r   r   __      ##   r   r   #r   )
r   rv   r   assertIngetbkgdbkgdsetrw   	A_REVERSEr   bkgdr   s     r   test_backgroundz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           	         t        j                  dddd      }t        |       t        j                  dddd      }t        d      D ]  }|j	                  |dd	        |j                  |       | j                  |j                  dd      d
       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       |j                  |       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       |j                  |dddddd       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       |j                  |dddddd       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       y )Nrd      rk   rq   rl      rt   r   _________________s   sectetur_________rn   s   piscing_elit,____rj   s   _do_eiusmod______s   _________________s   sectetur       __s   piscing elit,  __s    do eiusmod    __ru   s   __r_sit_amet_____s   __ectetur________s   __r sit amet_____s   __ectetur   _____)	r   rv   r   ranger   overlayrw   r   	overwrite)r   srcwindstwinis       r   test_overlayz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                     t        j                  dddd      }|j                          |j                  dd       |j	                          |j                          t        j                          y )Nrd   ri   rj   rn   )r   rv   noutrefreshredrawln	redrawwinr   doupdater   s     r   test_refreshzTestCurses.test_refresh-  sJ    mmAr1a(Qr   resizec                     t        j                  dddd      }|j                  dd       | j                  |j	                         d       |j                  dd       | j                  |j	                         d       y )Nrd   ri   rj   rq      )rq   r  )rd   ri   )r   rv   r  rw   rz   r   s     r   test_resizezTestCurses.test_resize5  s^    mmAr1a(

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

1b1r   enclosec                    t        j                  dddd      }| j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd	      d       | j                  |j                  d
d	      d       | j                  |j                  dd      d       y )Nrd   ri   rj   Trn   Frq   rt      rl   r  )r   rv   r   r  r   s     r   test_enclosezTestCurses.test_enclose=  s    mmAr1a(ckk!Q'.ckk!Q'/ckk!Q'/ckk!R($/ckk!R(%0ckk!R(%0r   c                    t        j                  dddd      }|j                  ddd       t        j                         5 }|j                  |       ~|j                  d       t        j                  |      }| j                  |j                         d       | j                  |j                         d       | j                  |j                  dd      d	       d d d        y # 1 sw Y   y xY w)
Nrd   rs   rn   rj   r   r   rm   )rd   rs   s    Lorem ipsum)r   rv   r   rM   rN   putwinseekgetwinrw   rx   rz   r   )r   r   fs      r   test_putwinzTestCurses.test_putwinG  s    mmAr1a(

1a'##% 	?JJqMFF1I--"CS\\^V4S\\^W5SYYq!_o>	? 	? 	?s    BC$$C-c                 v	   t        j                  dddd      }|j                  dddddd	d
d       | j                  |j	                  dd      d       | j                  |j	                  dd      d       | j                  |j	                  dd      d       |j                  dddddddd       |j                  ddddddd d!       | j                  t        |j                  dddddg d d!
       | j                  t        |j                  ddddddd d!d"       | j                  t        |j                  ddddddd d!d"       |j                  ddddddd        |j                  dddddd       |j                  ddddd       |j                  dddd       |j                  ddd       |j                  dd       |j                  d       |j                          |j                  d#d$       | j                  |j	                  ddd%      d&       | j                  |j	                  dd      d'       | j                  |j	                  ddd%      d&       |j                  d(d)       |j                  dd       | j                  t        |j                  ddd       | j                  t        |j                  d       |j                          |j                  dd       |j                  dd       | j                  |j	                  ddd*      d+       |j                  dd       |j                  d,d       |j                  ddt         j                         |j                  dddd       |j                  ddddt         j                         |j                  dd       |j                  d-d.       |j                  d/d.       |j                  d0d.       |j                  d-d.t         j                         |j                  ddd-d.       |j                  ddd1dt         j                         | j                  |j                  dd      d2t         j                  z         | j                  |j                  dd      d2t         j                  z         | j                  |j                  d.d      d0       y )3Nrd   re   rj   |!-r   +\r   /r   s
   +--------\rn   s
   |        !rq   s
   #________/   |   !   -   _   +   \r      /r   B   r   D   E   F   G   H   I   :~rr   s   ~~~~~~~~s
   :        :   :   ~rl   s    ----- -   r   rk      ar   ;;   )r   rv   borderrw   r   r   	TypeErrorboxr   hliner   vline
A_STANDOUTr   r   s     r   test_borders_and_linesz!TestCurses.test_borders_and_linesS  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                 2   | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        t        j                  d       | j                  t        t        j                  d	       | j                  t        t        j                  d
       | j                  t        t        j                  d       | j                  t
        t        j                  d       y )Nr   r   r      
s   ^J
re   r   s   AB AB            )rw   r   unctrlr   rD  r   r^   s    r   test_unctrlz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                 f   | j                   s| j                  d       | j                  t        j                         d       t        j
                          | j                  t        j                         d       t        j                          | j                  t        j                         d       y )Nrequires terminalFT)rC   r(   r   r   isendwinrU   r  r^   s    r   test_endwinzTestCurses.test_endwin  sh    {{MM-.foo'/foo'.foo'/r   c                    | j                  t        j                  d      t               | j	                  t        j                  d      d       | j	                  t        j                  d      d       | j                  t        j
                  d      t               | j	                  t        j
                  d      d       | j	                  t        j
                  d      d       | j                  t        j                  d      t        t        d       f       | j                  t        j                  d             | j                  t        j                  d             t        j                  d      }|m| j                  |t               t        j                  |d       t        j                  |d      }| j                  |t               t        j                  |       t        j                  d       y )	Nhccolsrh   crr   cudrj   s   abc
)assertIsInstancer   	tigetflagintrw   tigetnumtigetstrbytestypeassertIsNonetparmputp)r   rZ  cud_2s      r   test_terminfoz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                    t        j                  d       t        j                          t        j                          | j	                  t        j
                         d       t        j                  d       t        j                  dd       y )Nrn   Fd   2   )r   delay_outputflushinpr  r   rT  napmsnewpadr^   s    r   test_misc_module_funcsz!TestCurses.test_misc_module_funcs  sS    Afoo'/Sb"r   c                    | j                  t        j                         t               | j                  t        j                         t               | j                  t        j
                         t               | j                  t        j                         t               | j                  t        j                         t               | j                  t        j                         t               t        j                         }| j                  |t               | j                  t        |      d       t        j                         }| j                  |t               | j                  t        |      d       y Nrn   )r[  r   termnamer`  longnamebaudrater]  has_icboolhas_il	termattrskillcharrw   r   	erasechar)r   r   s     r   test_env_queriesz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                    | j                   }|j                  d       |j                  d       |j                  d       |j                  d       |j                  d       |j                  d       t	        |d      r"|j                  d       |j                  d       |j                  d       |j                  d       |j                  d       |j                  d       |j                  dd       t        j                          t        j                  d       t        j                  d       t        j                          y )NTFimmedokrd   re   )r   clearokidcokidlokr   r|  leaveokr   	setscrregr   nonlnlr   s     r   test_output_optionszTestCurses.test_output_options  s    tuTUUT69%NN4 NN5!tuB		$		%		r   c                    | j                   }| j                  rt        j                          t        j                          t        j                  d       t        j                  d       t        j
                  d       t        j
                  d       t        j                          t        j                  d       t        j                  d       t        j                          t        j                          t        j                          t        j                  d       t        j                  d       t        j                  d       t        j                  d       |j                  d       |j                  d       t        j                  d       t        j                  d       |j                  d       |j                  d       t        j                          t        j                  d       t        j                  d       t        j                          |j!                  d       |j!                  d       |j#                  d       |j#                  d       |j#                  d       y )NFT   rn   rh   r   rd   )r   rC   r   nocbreakcbreak	intrflushrawnorawr   r   	halfdelaykeypadmetanodelay	noqiflushqiflush	notimeouttimeoutr   s     r   test_input_optionsz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                     t        j                  t        j                  j	                                t        j                  d       y )Nrh   )r   r  r7   	__stdin__r:   r^   s    r   test_typeaheadzTestCurses.test_typeahead!  s+    --/0r   c                     | j                   s| j                  d       t        j                          t        j                          y )NrS  )rC   r(   r   def_prog_modereset_prog_moder^   s    r   test_prog_modezTestCurses.test_prog_mode&  s.    {{MM-. r   c                     t        j                  d      t        j                  d      t        j                          y 	 t        j                          y # t         j                  $ r | j	                  d       Y y w xY w)Nbelflashzbeep() failed)r   r_  beeperrorr(   r^   s    r   	test_beepzTestCurses.test_beep,  sV    OOE".w'3KKM/<< /o./   A $A=<A=c                     t        j                  d      t        j                  d      t        j                          y 	 t        j                          y # t         j                  $ r | j	                  d       Y y w xY w)Nr  r  zflash() failed)r   r_  r  r  r(   r^   s    r   
test_flashzTestCurses.test_flash6  sW    OOE".w'3LLN0<< 0./0r  c                     dD ]F  \  }}t        j                  |      t        j                  |       1	 t        j                  |       H y # t         j                  $ r Y _w xY w)N))r   civis)rj   cvvis)rn   cnorm)r   r_  curs_setr  )r   viscaps      r   test_curs_setzTestCurses.test_curs_set@  sY    B 	HCs#/$OOC(	 || s   AA#"A#get_escdelayc                     t        j                         }| j                  |t               t        j                  d       | j                  t        j                         d       t        j                  |       y )N   )r   r  r[  r]  set_escdelayrw   )r   escdelays     r   test_escdelayzTestCurses.test_escdelayJ  sU    &&(h,B,,.3H%r   get_tabsizec                     t        j                         }| j                  |t               t        j                  d       | j                  t        j                         d       t        j                  |       y )Nrq   )r   r  r[  r]  set_tabsizerw   )r   tabsizes     r   test_tabsizezTestCurses.test_tabsizeR  sU    $$&gs+1++-q17#r   getsyxc                     t        j                         \  }}| j                  |t               | j                  |t               t        j                  dd       | j                  t        j                         d       y )Nrq   rd   )rq   rd   )r   r  r[  r]  setsyxrw   )r   yxs      r   test_getsyxzTestCurses.test_getsyxZ  sU    }}1a%a%a&1r   c                 0    dt         j                  dddddfS )Nrh                                   rO  r   COLORSr^   s    r   
bad_colorszTestCurses.bad_colorsb  s    FMM:uj%OOr   c                 *    t         j                  dddfS )Nr  r  rO  r  r^   s    r   bad_colors2zTestCurses.bad_colors2e  s    ueU33r   c                      y)N)rh   r  r  r  r  rO  r"   r^   s    r   	bad_pairszTestCurses.bad_pairsh  s    @r   c                     | j                  t        j                         t               | j                  t        j                         t               y r]   )r[  r   r'   ru  can_change_colorr^   s    r   test_has_colorszTestCurses.test_has_colorsk  s4    f//148f557>r   c                 4   t        j                         s| j                  d       t        j                          t        rYt        dt         j                   t        j                         t        dt         j                   t        j                         y y )Nr&   z	COLORS = )r2   zCOLOR_PAIRS = )
r   r'   r(   r)   r   r5   r  r7   r8   COLOR_PAIRSr^   s    r   test_start_colorzTestCurses.test_start_coloro  sd      "MM34Ifmm_-CJJ?N6#5#5"67cjjI r   c                 X   | j                  t        j                  t        j                        d       t        j                  d       t        j                  dz
  }t        j                  |       | j                         D ]'  }| j                  t        t        j                  |       ) y )Nr   r   r   r   rn   )rw   r   color_contentCOLOR_BLACKr  r  r   r   )r   maxcolorcolors      r   test_color_contentzTestCurses.test_color_contentw  s}    --f.@.@A9MQ==1$X&__& 	GEj&*>*>F	Gr   c           	         t        j                         s| j                  d       t        j                  d      }	 t        j                  dg|   | j                  t         j                  dg|  t        j                  dddd       | j                  t        j                  d      d       t        j                  dddd       | j                  t        j                  d      d       t         j                  dz
  }t        j                  |      }t        j                  |g|   | j                  t         j                  |g|  t        j                  |ddd       | j                  t        j                  |      d	       | j                         D ]*  }| j                  t        t         j                  |ddd       , d
D ]z  }| j                  t        t         j                  d|dd       | j                  t        t         j                  dd|d       | j                  t        t         j                  ddd|       | y # t         j
                  $ r | j                  d       Y w xY w)Nzcannot change colorr   z)cannot change color (init_color() failed)r    )r  r  r  rn     )r   r  r  )rh   i  )r   r  r(   r  
init_colorr  rG   rw   r  r  r   r   )r   oldr  r  comps        r   test_init_colorz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__& 	MEj&*;*;UAq!L	M 	LDj&*;*;QaKj&*;*;Q4Kj&*;*;Q1dK	L# || 	GMMEF	Gs   I $I0/I0c                    t         j                  }t        t         d      rt        j                         r|dt         j                  z  dz   z  }t        j                         rdt         j
                  cxk  rdk  rn nt        |t              }	 t        j                  |dz
  dd       |S |S # t        $ r t         j                  }Y |S w xY w)Nncurses_versionrj   rn   )rt   rn   )rt   rj   r   )
r   r  r   has_extended_color_supportr  r  min	SHORT_MAX	init_pairr   )r   
pair_limits     r   get_pair_limitzTestCurses.get_pair_limit  s    ''
6,-002ao11
557!7!7@&@ Y7
0  aA6 z  0#//
0s   B- -C
	C
c                    t        t        d      sC| j                  t        j                  d      t        j                  t        j
                  f       t        j                  d       | j                         dz
  }|dkD  rt        j                  |       | j                         D ]'  }| j                  t        t        j                  |       ) y )Nuse_default_colorsr   rn   )
r   r   rw   pair_contentCOLOR_WHITEr  r  r  r   r   )r   maxpairpairs      r   test_pair_contentzTestCurses.test_pair_content  s    v34V003$00&2D2DEGA%%'!+Q;(NN$ 	EDj&*=*=tD	Er   c                    t        j                  d      }t        j                  dg|   | j                  t         j                  dg|  t        j                  ddd       | j	                  t        j                  d      d       t         j
                  dz
  }t        j                  d|d       | j	                  t        j                  d      |df       t        j                  dd|       | j	                  t        j                  d      d|f       | j                         dz
  }|dkD  r<t        j                  |dd       | j	                  t        j                  |      d       | j                         D ])  }| j                  t        t         j                  |dd       + | j                         D ]P  }| j                  t        t         j                  d|d       | j                  t        t         j                  dd|       R y )Nrn   r   rf   )r   r  r  rG   rw   r  r  r  r   r   r  )r   r  r  r  r  r  s         r   test_init_pairz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$ 	HDj&*:*:D!QG	H%%' 	IEj&*:*:AuaHj&*:*:Aq%H	Ir   c                    dD ]s  }t        j                  |      }| j                  t        j                  |      ||       | j                  t        j                  |t         j                  z        |       u | j                  t        j                  d      d       | j                  t        j                  d      d       y )N)r   rn   r  r   )r   
color_pairrw   pair_numberr   )r   r  attrs      r   test_color_attrszTestCurses.test_color_attrs  s     	MD$$T*DV//5tTBV//v}}0DEtL	M 	**1-q1++A.2r   r  c                 \   t        j                  d      }	 t        j                          | j                  t        j                  d      d       | j                  |t         j                  t         j                  fddg       y # t         j                  $ r | j	                  d       Y w xY w)Nr   z1cannot change color (use_default_colors() failed)rg   rf   )	r   r  r  r  r(   rw   r  r  r  )r   r  s     r   test_use_default_colorsz"TestCurses.test_use_default_colors  s     !!!$	O%%' 	,,Q/:cV//1C1CDhPVWX || 	OMMMN	Os   B $B+*B+c                    | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        t        j                  d	       | j                  t        j                  d
      t               y )Nr   r   rp   s   ^M   s   ^?r   s   ^@rh      )rw   r   keynamer   r   r[  r`  r^   s    r   test_keynamezTestCurses.test_keyname  s    +T2+U3,e4*E2*fnnb9fnnS159r   has_keyc                 .    t        j                  d       y )Nrp   )r   r  r^   s    r   test_has_keyzTestCurses.test_has_key  s    rr   getmousec                    t        j                  t         j                        \  }}|dk(  r| j                  d       t        j                  d       t        j
                  ddddt         j                         t        j                         }y )Nr   zmouse stuff not availablere   )r   	mousemaskBUTTON1_PRESSEDr(   mouseinterval
ungetmouser  )r   	availmaskoldmaskms       r   test_getmousezTestCurses.test_getmouse  sg    %//0F0FGG>MM56R !Q1f&<&<=OOr   panelc                    t        j                  dd      }t         j                  j                  |      }| j	                  t         j                  j
                  d      5  |j                          d d d        y # 1 sw Y   y xY w)Nre   z!userptr should fail since not set)msg)r   rv   r	  	new_panelr   r  userptr)r   wps      r   test_userptr_without_setz#TestCurses.test_userptr_without_set   sg    MM"b!LL""1%v||11#F  H 	IIK	 	 	s   !A;;Bc                 \   t        j                  dd      }t         j                  j                  |      }t	               }t        j                  |      }t        d      D ]  }|j                  |        |j                  d        | j                  t        j                  |      |d       y )Nre   rh  zset_userptr leaked references)
r   rv   r	  r  objectr7   getrefcountr  set_userptrrw   )r   r  r  objnrefsr  s         r   test_userptr_memory_leakz#TestCurses.test_userptr_memory_leak	  s    MM"b!LL""1%h$s 	AMM#	 	
d-u8	:r   c                     t        j                  dd      }t         j                  j                  |       G fdd      }j	                   |              j	                  d        y )Nre   c                       e Zd Z fdZy)+TestCurses.test_userptr_segfault.<locals>.Ac                 (    j                  d        y r]   )r  )r   r	  s    r   __del__z3TestCurses.test_userptr_segfault.<locals>.A.__del__  s    !!$'r   N)__name__
__module__r   r  )r	  s   r   r   r    s    (r   r   )r   rv   r	  r  r  )r   r  r   r	  s      @r   test_userptr_segfaultz TestCurses.test_userptr_segfault  sQ    MM"b!&&q)	( 	( 	!#$r   c                     t        j                  dd      }t         j                  j                  |      }t	        | t        |             y )Nre   )r   rv   r	  r  r   ra  )r   r  r	  s      r   test_disallow_instantiationz&TestCurses.test_disallow_instantiation   s6     MM"b!&&q)$T4;7r   is_term_resizedc                     t         j                  t         j                  }}| j                  t        j                  ||      d       | j                  t        j                  |dz
  |dz
        d       y )NFrn   T)r   LINESCOLSr   r"  r   linesrX  s      r   test_is_term_resizedzTestCurses.test_is_term_resized(  sQ    llFKKtf,,UD95Af,,U1Wd1f=tDr   resize_termc                    t        j                          t         j                  t         j                  }}|dz
  }|dz   }t        j                  ||       | j                  t         j                  |       | j                  t         j                  |       t        j                  ||       | j                  t         j                  |       | j                  t         j                  |       y rp  )r   update_lines_colsr$  r%  r)  rw   r   r'  rX  	new_linesnew_colss        r   test_resize_termzTestCurses.test_resize_term.  s      "llFKKtAI	!89h/y1h/5$'u-d+r   
resizetermc                    t        j                          t         j                  t         j                  }}|dz
  }|dz   }t        j                  ||       | j                  t         j                  |       | j                  t         j                  |       t        j                  ||       | j                  t         j                  |       | j                  t         j                  |       y rp  )r   r+  r$  r%  r0  rw   r,  s        r   test_resizetermzTestCurses.test_resizeterm<  s      "llFKKtAI	!8)X.y1h/%&u-d+r   c                 ~   t        j                  d       | j                  | j                  j	                         d       t        j                  d       | j                  | j                  j	                         d       t        j                  d       | j                  | j                  j	                         d       y )Nr   r   Br   C)r   r   rw   r   getkeyr^   s    r   test_ungetchzTestCurses.test_ungetchJ  s}    t++-s3s++-s3r++-s3r   c                 b    t        j                  d       | j                  j                          y )Ni  )r   r   r   r6  r^   s    r   test_issue6243zTestCurses.test_issue6243R  s    tr   	unget_wchr  )c   )rd   rr   z.unget_wch is broken in ncurses 5.7 and earlierc           
         | j                   }|j                  }dD ]  }	 |j                  |       	 t	        j
                  |       |j                         }| j                  ||       t        |      }t	        j
                  |       |j                         }| j                  ||        y # t        $ r Y w xY w# t        $ r.}| j                  d|d|j                  d|       Y d }~d }~ww xY w)N)r      ér   u   􏿿z
unget_wch(z) failed with encoding z: )r   r   r   r   r   r:  	Exceptionfailget_wchrw   ord)r   r   r   cherrreadcodes          r   test_unget_wchzTestCurses.test_unget_wchV  s     ??7 	'B		(#8  $ >>#DT2&r7DT">>#DT2&!	' &   8		#7 8 88s(   B-B<-	B98B9<	C3$C..C3c                 &   | j                   }dd l}|j                  }|j                  |       | j	                  t
              5  d|_        d d d        ||_        | j	                  t
              5  |`d d d        y # 1 sw Y   1xY w# 1 sw Y   y xY w)Nr   re   )r   codecsr   lookupr   rD  )r   r   rH  r   s       r   test_encodingzTestCurses.test_encodingn  s    ??hy) 	! FO	!"y) 	 	  	 	! 	!	  	 s   A;/B;BBz6Signature information for builtins requires docstringsc                    | j                   }	 t        j                  |j                        }| j	                  |       |j                  j                  j                  d      d   }| j                  d|       y # t
        $ r Y Fw xY w)NrL  r   z[y, x,])	r   inspect	signaturer   assertFalser   __doc__splitr  )r   r   rM  human_readable_signatures       r   test_issue21088zTestCurses.test_issue21088y  sy     	))&,,7IY' $*<<#7#7#=#=d#CA#F i!9:  		s   0A9 9	BBc                     t        j                  dddd      }t         j                  j                  |d      }|j	                         \  }}|j                  |dz
  |dz
         |j                  d       y )Nrd   ri   rj   T)insert_moder   )r   rv   textpadTextboxrz   r  _insert_printable_char)r   r   rE  r'  rX  s        r   test_issue13051zTestCurses.test_issue13051  sb    mmAr1a(nn$$Sd$;llnt

57DF#""3'r   N)Qr  r  r   classmethodr>   rZ   r   r_   rb   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r   r  r  r  r  r  r%  rI  rQ  rU  rf  rn  rz  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/  r2  r7  r9  r   skipIfgetattrr   rF  rJ  r	   rR  rX  r"   r   r   r/   r/   8   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 ./Y  0Y: )$ % *% & '" # '"
: #
: '"  #  '"8 # 8 +,E -E
 -(, ), ,', (,4 +&X__WV%6>GEG'G ''*	  X__)MO;O;8 !*( +(r   r/   c                   J    e Zd Z ed      d        Z ed      d        Zd Zy)	MiscTestsr+  c                 @   t        j                          t         j                  t         j                  }}dxt         _        t         _        t        j                          | j	                  t         j                  |       | j	                  t         j                  |       y )Nr   )r   r+  r$  r%  rw   r&  s      r   test_update_lines_colsz MiscTests.test_update_lines_cols  sa      "llFKKt%&&v{  "u-d+r   r  c                    t         j                  }t        rt        dt         j                   d       | j	                  |d d  t
               | j                  t        |      d       | j	                  |d   t               | j	                  |d   t               | j	                  |d   t               | j	                  |j                  t               | j	                  |j                  t               | j	                  |j                  t               | j                  |d   |j                         | j                  |d   |j                         | j                  |d   |j                         | j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y )Nzncurses_version = T)r3   rk   r   rn   rj   )r   r  r   r5   r[  tuplerw   r   r]  majorminorpatchassertGreaterEqual)r   vs     r   test_ncurses_versionzMiscTests.test_ncurses_version  sM   ""&v'='=&>?tLadE*Q#adC(adC(adC(aggs+aggs+aggs+1qww'1qww'1qww'+++r   c                 X    t        j                         }| j                  |t               y r]   )r   r  r[  ru  )r   rs     r   test_has_extended_color_supportz)MiscTests.test_has_extended_color_support  s     --/a&r   N)r  r  r   r   r_  rg  rj  r"   r   r   r]  r]    s9    -., /, +,, -,&'r   r]  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)	TestAsciic                     t         j                  j                  D ],  }| j                  t	        t         j                  |      |       . y r]   )r   asciicontrolnames
assertTruer   )r   r   s     r   test_controlnameszTestAscii.test_controlnames  s4    LL-- 	?DOOGFLL$7>	?r   c                 P     fd}t        d      D ]  t              t        g      } |t        j                  j
                  |j                                 |t        j                  j                  |j                                 |t        j                  j                  |j                                 |t        j                  j                  |j                                 |t        j                  j                  |j                                 |t        j                  j                  |j                                 |t        j                  j                  dk          |t        j                  j                  dk\          |t        j                  j                  dk          |t        j                  j                  dk  xs dk(          |t        j                  j                  dv         |t        j                  j                   dcxk  xr dk  nc         |t        j                  j"                  dcxk  xr dk  nc         |t        j                  j$                  t&        j(                  v         |t        j                  j*                  t&        j,                  v         dd	dt.        j0                  t.        j0                  d
z   fD ]   j3                  t        j                  j                                j3                  t        j                  j                                j3                  t        j                  j                                j3                  t        j                  j                                j3                  t        j                  j                                j3                  t        j                  j                                j3                  t        j                  j                                j3                  t        j                  j                                j3                  t        j                  j                                j3                  t        j                  j                                j3                  t        j                  j!                                j3                  t        j                  j#                                j3                  t        j                  j%                                j3                  t        j                  j+                                 j3                  t        j                  j                  d	             y )Nc                     j                  |       5  j                   |       |       j                   |       |       d d d        y # 1 sw Y   y xY w)N)rB  r   )r   rw   )r   expectedr   r  r   s     r   checkz$TestAscii.test_ctypes.<locals>.check  sP    . 4  a(3  a(34 4 4s   1AAr     r   r  z 	~   r   rh   rn   )r  chrr`  r   rn  isalnumisalphaisdigitislowerisspaceisupperisasciiismetaisctrliscntrlisblankisgraphisprintispunctstringpunctuationisxdigit	hexdigitsr7   
maxunicoderN  )r   ru  br   r  s   `  @@r   test_ctypesz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/?@ 	7A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	7" 	,,R01r   c                     t         j                  j                  }| j                   |d      d       | j                   |d      d       | j                   |t        d            t        d             y )N   Ár   )r   rn  rw   rA  )r   rn  s     r   
test_asciizTestAscii.test_ascii  sV    ""v,sS)s6{+SX6r   c                    t         j                  j                  }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |t	        d            t	        d             y )NJrL  @ )r   rn  ctrlrw   rA  )r   r  s     r   	test_ctrlzTestAscii.test_ctrl  si    ||  cD)dT*cD)c#hT3r   c                     t         j                  j                  }| j                   |d      d       | j                   |d      d       | j                   |t	        d            d       y )NrL     r   r     )r   rn  altrw   rA  )r   r  s     r   test_altzTestAscii.test_alt  sQ    llTF+S6*SX-r   c                    t         j                  j                  }| j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d      d       | j                   |d	      d
       | j                   |t	        d            d       | j                   |t	        d            d       | j                   |d      d       | j                   |d      d       | j                   |t	        d            d       | j                   |t	        d            d       y )Nr   r   rA   z^?rL  z^Jr  z^@r  z!^Jr  z!A)r   rn  rP  rw   rA  )r   rP  s     r   rQ  zTestAscii.test_unctrl  s)   $$c*c*c*c*.t,t,C)3/D	*D1/.F,e4F,d3r   N)	r  r  r   rq  r  r  r  r  rQ  r"   r   r   rl  rl    s!    ?+2Z74.4r   rl  c                     g d}| j                         \  }}t        |d |       D ]$  \  }}| j                  |d|d |||dz
  k(  z
          & y )N)	r   zdolor sit amet,consecteturzadipiscing elit,zsed do eiusmodztempor incididuntzut labore etzdolore magnazaliqua.r   rn   )rz   	enumerater   )r   textmaxymaxxr  lines         r   r   r     s]    
D JD$T%4[) 84

1a5tqD1H}5678r   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TextboxTestc                 
   t        t        j                        | _        d| j                  j                  _        d| j                  j                  _        t        j                  j                  | j                        | _	        y )N)spec)rn   rn   )re   r  )
r   r   windowmock_winr   return_valuerz   rU  rV  textboxr^   s    r   rZ   zTextboxTest.setUp/  sP    !v}}5+1(.6+~~--dmm<r   c                    | j                   j                          t        j                  j	                  | j                         }| j                   j
                  j                          | j                   j                  j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                         | j                   j                          y)zTest textbox initialization.rn   FN)r  
reset_mockr   rU  rV  rz   assert_called_once_withr  rw   rT  stripspacesrb  lastcmd)r   tbs     r   	test_initzTextboxTest.test_init5  s      "^^##DMM266844Q7/+"**%  "r   c                 X   | j                   j                          | j                  j                  t	        d             | j                   j
                  j                  t	        d             | j                  j                  t	        d             | j                   j
                  j                  t	        d             | j                  j                  t	        d             | j                   j
                  j                  t	        d             | j                   j                          y)z%Test inserting a printable character.r   r  r   N)r  r  r  
do_commandrA  r   assert_called_withr^   s    r   test_insertzTextboxTest.test_insert@  s      "C)..s3x8C)..s3x8C)..s3x8  "r   c                    | j                   j                          | j                  j                  t        j
                  j                         | j                  j                  t        j                         | j                  j                  t        j
                  j                         | j                   j                  j                  dk(  sJ | j                   j                          y)zTest deleting a character.rk   N)r  r  r  r  r   rn  BSKEY_BACKSPACEDELr   
call_countr^   s    r   test_deletezTextboxTest.test_deleteK  s      "0 4 45 0 01}}""--222  "r   c                 
   | j                   j                          | j                  j                  t        j
                         | j                   j                  j                  dd       | j                   j                          y)zTest moving the cursor left.rn   r   N)r  r  r  r  r   KEY_LEFTr   r  r^   s    r   test_move_leftzTextboxTest.test_move_leftT  R      "0--a3  "r   c                 
   | j                   j                          | j                  j                  t        j
                         | j                   j                  j                  dd       | j                   j                          y)zTest moving the cursor right.rn   rj   N)r  r  r  r  r   	KEY_RIGHTr   r  r^   s    r   test_move_rightzTextboxTest.test_move_right[  sT      " 0 01--a3  "r   c                    | j                   j                          | j                  j                  t        j
                         | j                   j                  j                  dd       | j                  j                  t        j                         | j                   j                  j                  dd       | j                   j                          y)z+Test moving the cursor left and then right.rn   r   rj   N)	r  r  r  r  r   r  r   r  r  r^   s    r   test_move_left_and_rightz$TextboxTest.test_move_left_and_rightb  s      "0--a3 0 01--a3  "r   c                 
   | j                   j                          | j                  j                  t        j
                         | j                   j                  j                  dd       | j                   j                          y)zTest moving the cursor up.r   rn   N)r  r  r  r  r   KEY_UPr   r  r^   s    r   test_move_upzTextboxTest.test_move_upk  sR      ".--a3  "r   c                 
   | j                   j                          | j                  j                  t        j
                         | j                   j                  j                  dd       | j                   j                          y)zTest moving the cursor down.rj   rn   N)r  r  r  r  r   KEY_DOWNr   r  r^   s    r   test_move_downzTextboxTest.test_move_downr  r  r   N)r  r  r   rZ   r  r  r  r  r  r  r  r  r"   r   r   r  r  .  s/    =	#	#######r   r  __main__)&r   rL  rE   r  r7   rM   r   unittest.mockr   test.supportr   r   r   r   r   r	   test.support.import_helperr
   r   curses.panelImportErrorr   r#   r*   environgetr6   r  rZ  r   TestCaser/   r]  rl  r   r  r  mainr"   r   r   <module>r     s]     	  
   #N N 4
 	  
x	  n   	< 
zz~~f	 T.TY.=DF)46b("" b(6Fb(J#!'!! !'HU4!! U4p8"I#(## I#X zHMMO C+  		s   D7 7D?>D?