
    ;eT                     R   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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n# e$ r Y nw xY wd Zd Zd	 Zej                            d
          ZdZ ej        e pedk    dez             ej        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e dk    r ej!                     dS dS )    N)requiresverboseSaveSignalscpython_onlycheck_disallow_instantiation)import_modulecurseszcurses.asciizcurses.textpadc                 X    t          j        t          t          |           d| z            S )Nzrequires curses.%s)unittest
skipUnlesshasattrr	   )names    '/usr/lib/python3.11/test/test_curses.pyrequires_curses_funcr      s+    wvt443d:< < <    c                       fd}|S )Nc                 J     t          j                    fd            }|S )Nc                 x    t          | j                  st          j        dz             | g|R i | d S )Nzrequires curses.window.%s)r   stdscrr   SkipTest)selfargskwargsr   tests      r   wrappedz:requires_curses_window_meth.<locals>.deco.<locals>.wrapped!   sU    4;-- L'(Cd(JKKKD'''''''''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                 F     t          j                    fd            }|S )Nc                     t          j                    s|                     d           t          j                      | g|R i | d S )Nrequires colors support)r	   
has_colorsskipTeststart_color)r   r   r   r   s      r   r   z requires_colors.<locals>.wrapped+   s\     "" 	5MM3444T#D###F#####r   r   )r   r   s   ` r   requires_colorsr(   *   s8    _T$ $ $ $ $
 Nr   TERMi  unknownz*$TERM=%r, calling initscr() may cause exitcygwinz!cygwin's curses mostly just hangsc                   <   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           eHjI         eJeKdRdS          dTk     dU          dV                         ZLdW ZMdX ZN ed          dY             ZOdZS )[
TestCursesc                     t           r$t          dt           t          j        d           t          j                                        }t          j        |           d S )NzTERM=Tfileflush)fd)	r   printtermsysstderr
__stdout__filenor	   	setupterm)cls	stdout_fds     r   
setUpClasszTestCurses.setUpClass=   sV     	?.$..sz>>>> N))++	I&&&&&&r   c                 L   d| _         t          j        | _        t          j                                        }t          j                                         st          j        |          }|                     t
          j        |           |                     t
          j	        ||           t          j
                                         rt          j
        }t          j
        | _        nb	 t          ddd          }n-# t          $ r  t          j        dd          }d| _         Y nw xY w|                     |j                   d | _        t          j	        |                                |           t                      | _        | j                                         |                     | j        j                   t&          rY| j        Rt          j                                         t          j                                         t/          | j        d           t1          j                    | _        | j         rQt1          j                     |                     t0          j                   |                     t0          j                   | j                                         d S )	NTz/dev/ttywbr   )	buffering)moder?   Fr/   )isattyr5   r7   outputr8   osdup
addCleanupclosedup2
__stderr__openOSErrortempfileTemporaryFiler   save_signalssaverestorer   r6   r1   stdoutr3   r	   initscrr   savettyendwinresettyerase)r   r;   dup_fdtmps       r   setUpzTestCurses.setUpF   s   nN))++	~$$&& 	- VI&&FOOBHf---OOBGVY777~$$&& #n!n	(z41===CC ( ( (
 #0daHHHC"'DKKK( 	***"GCJJLL),,,'MM   )1222 	0t{.JJt{$////n&&; 	,NOOFM***OOFN+++s   (C; ;'D%$D%filterc                 ,    t          j                     d S N)r	   rY   r   s    r   test_filterzTestCurses.test_filterv   s     	r   use_envc                 V    t          j        d           t          j        d           d S )NFT)r	   r^   r\   s    r   test_use_envzTestCurses.test_use_env|   s*     	utr   c                    t          j        dd          }|                     |                                d           |                     |                                d           |                     |                                d           t          j        dddd          }|                     |                                d           |                     |                                d           |                     |                                d	           |                    d
d          }|                     |                                d           |                     |                                d           |                     |                                d           |                    ddd
d          }|                     |                                d           |                     |                                d           |                     |                                d           |                    dd
          }|                     |                                d           |                     |                                d           |                     |                                d           |                    dddd
          }|                     |                                d           |                     |                                d           |                     |                                d           |                    dd           |                     |                                d           |                     |                                d           |                     |                                d	           |                     |                                d           |                     |                                d           |                     |                                d           |                     |                                d           |                     |                                d           |                     |                                d           |	                    dd           |                     |                                d           |                     |                                d           |                     |                                d           |	                    dd           |                     |                                d           |                     |                                d           |                     |                                d           d S )N   
   r   r   rf   )rb   rc         )rh   rb   )rc   rg         )ri   rj      rh   )	      )      )rh   ri   )rp            )rr   rs   r   rl   )r   rl   )rh   rl   )
r	   newwinassertEqualgetbegyxgetparyxgetmaxyxsubwinderwinmvwinmvderwin)r   winwin2win3s       r   test_create_windowszTestCurses.test_create_windows   s   mAr""000222111mBAq))000222222zz!Q&111&111'222zz!RA&&&111&111'222zz!Q&111&111'222zz!RA&&&111&111'222		!Q000222222&111&111'222&111&111'222a&111&111'222a&111&111'22222r   c                    | j         }|                    dddd          }|                    dd           |                    dd           |                     |                                d           |                     |                                d           |                                 |                     |                                d	           d S )
Nrc   rg   rh   rb   rl   ro   rk   )rh   ro   )ro   rm   )r   ry   moveru   getyx	cursyncup)r   r   r}   s      r   test_move_cursorzTestCurses.test_move_cursor   s    mmBAq))AqA000f---00000r   c                 (   | j         }|                                 |                     |                                d           |                                 |                     |                                d           |                                 |                     |                                d           |                                 |                     |                                d           |                                 |                     |                                d           |                    dd           |                     |                    d          d           |                     |                    d          d           |                     |                                d           |                    ddd           |                     |                    d          d           |                    dddd          }|                    ddd	d
          }|                                 |                                 |	                                 |                     |                                d           |                     |                                d           |                                 |                                 |                                 |
                                 |                     |                                d           t          |d          rt          j                            d          s|                                 |                                 dD ]}|                    |           |                    d           |                     |                                |           |                     |                                |           }d S d S d S )NFTrb   rh   rr   rl   rc   rg   ri   rj   syncoksunos)FTa)r   refreshassertIsis_wintouchedtouchwin
untouchwin	touchlineis_linetouchedry   syncupsyncdownr   r5   platform
startswithr   addch)r   r   r}   r~   r   s        r   test_refresh_controlzTestCurses.test_refresh_control   s   f**,,e444f**,,d333f**,,e444f**,,d333f**,,e444 	Af++A..555f++A..555f**,,d333Au%%%f++A..666 mmBAq))zz!RA&&c''))4000f**,,d333 	d((**D111 68$$ 	>S\-D-DW-M-M 	>NN' > >F###

3c//116:::f2244f====	> 	> 	> 	>> >r   c                 *   | j         }|j        }|                                 |                    dd           |                    d           |                    d           |                    d           d}	 |                    |           n# t
          $ r$ |                     t
          |j        |           Y nUt          $ rI |                    |          }| 	                    t          |          dt          |                     Y nw xY w|                    dt          j                   |                    ddd           |                    dddt          j                   |                     |                                d	           |                                 |                    dd           |                    d           |                    d           |                    d           |                     t
          t          f          5  |                    d
           d d d            n# 1 swxY w Y   |                    dt          j                   |                     |                                d           d S )Nr   A   AA      €rl   rh   ri   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OOOO! 	F 	F 	F0!(HEEEEE 	@ 	@ 	@hhx((GGag?????	@ 	S&-(((Q3Q3...f**,,d333 	Aq 2MBCC 	& 	& OOH%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	V]+++f**,,e44444s+   ;B +D>ADDI  IIc           	         | j         }|j        }|j        |j        fD ]}|                     |j                  5  |                    dd            |d            |d           d}	  ||           n1# t          $ r$ |                     t          |j	        |           Y nw xY w |dt          j                    |ddd            |dddt          j                   d d d            n# 1 swxY w Y   |j        |j        fD ]}|                     |j                  5  |                    dd            |dd            |d	d           d
}	  ||d           n1# t          $ r$ |                     t          |j	        |           Y nw xY w |dd            |ddt          j                    |dddd            |ddddt          j                   d d d            n# 1 swxY w Y   d S )Nr   abcds   abcdu   àßçđrl   rh   ri   1234s   1234u   ١٢٣٤rb   )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   ?]FM2 	2 	2Dd/00 2 2Aq!!!VWNDGGGG) N N N%%&8!(HMMMMMNVV]+++Q6"""Q66=1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ^V^4 	5 	5Dd/00 5 5Aq!!!VQWa   .NDAJJJJ) N N N%%&8!(HMMMMMNVQVQ...Q61%%%Q61fm4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	5 	5sl   /C-)A54C-5+B# C-"B##>C--C1	4C1	#1G)E"!G)"+FG)FAG))G-	0G-	c                    | j         }dD ]}|                     |          5  |                     t          |j        |           |                     t          |j        |d           |                     t          |j        |           |                     t          |j        |d           d d d            n# 1 swxY w Y   d S )N)za s   a )argrl   )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 	FC#&& F F!!*fmSAAA!!*fnc1EEE!!*fmSAAA!!*fnc1EEE	F F F F F F F F F F F F F F F	F 	Fs   BB55B9	<B9	c                    | j         }|                    dddt          j                   |                    dd           |                     |                                dt          j        z             |                     |                    dd          dt          j        z             |                    dd           |                     |                                d d         d           |                     |                    d          d d         d	           |                     |                    dd
          d d         d           |                     |                    dd
d          d           |                     t          |j        d           |                     t          |j        dd
d           d S )Nr   rl   ABCDr   ri   C   rr   s    ABCD s    ABrh   ro   s   BCD )
r   r   r	   r   r   ru   inchinstrr   r   r   r   s     r   test_read_from_windowz TestCurses.test_read_from_windowD  s|   aFFM222AqV](:;;;Q**B,>???Aq+Y777a!,f555a++BQB/999aA..888*flB777*flAq"=====r   c                     t          j        dddd          }dd d d         D ]}t          j        |           |                     |                    dd          d           |                     |                                d	           |                     |                    dd
          d           |                     |                                d           |                     |                                d           |                     |                                d           |                     |                                d           |                     |                                d           d S )Nrb   rq   rh   zspam
rf   ri   rl   s   )ri   rl   ro   p   )ri   ro   a   m   rc   )r	   rt   ungetchru   getchr   r   r}   r   s      r   
test_getchzTestCurses.test_getchT  sC   mAr1a(( $$B$ 	 	AN11a'222f---1a'222f---g...f---g...h/////r   c                    t          j        dddd          }t          j                     |                     t           j                   |                     t          |j        d           |                     t          |j        ddd           dd d d         D ]}t          j        |           | 	                    |                    ddd          d	           | 	                    |
                    dd
          d           | 	                    |                    ddd          d           | 	                    |
                    dd
          d           | 	                    |                    dd          d           | 	                    |
                    dd
          d           | 	                    |                    d          d           | 	                    |
                    dd
          d           | 	                    |                                d           | 	                    |
                    dd
          d           d S )Nrb   rq   rh   ipri   zLorem
ipsum
dolor
sit
amet
rf   rl   s   Lor   s    Lo         rc   s   ipsums    Lo  ipsum  s   dolors        dolor  s   sis   si   dolor  s   amets   amet dolor  )r	   rt   echorE   noechor   r   getstrr   ru   r   r   s      r   test_getstrzTestCurses.test_getstrc  s   mAr1a((&&&*cj$777*cj!Q=== 4DDbD9 	 	AN1Aq!,,e4441a/:::Aq"--x8881a/:::Aq))84441a/:::A...1a/:::w///1a/:::::r   c                    t          j        dddd          }t          |           |                    dd           |                                 |                     |                    dd                                          d           |                     |                    dd                                          d           |                    dd	           |                                 |                     |                    dd                                          d
           |                     |                    dd                                          d           |j	        |j
        fD ]}t          |            |             |                     |                    dd                                          d           |                     |                    dd                                          d           d S )Nrb   rg   rh   r   rp   s   Lorem iprl      dolor sit amet,ri   s   Lorr   )r	   rt   lorem_ipsumr   clrtoeolru   r   rstripclrtobotrU   clear)r   r}   r   s      r   
test_clearzTestCurses.test_cleary  s   mAr1a((CA1a//11;???1a//113EFFFA1a//116:::1a//113777Y	* 	< 	<DDFFFSYYq!__3355s;;;SYYq!__3355s;;;;		< 	<r   c                    t          j        dddd          }t          |           |                    dd           |                                 |                     |                    dd          d           |                    dd           |                     |                    dd          d           |                    dd           |                                 |                     |                    dd          d           |                     |                    dd          d	           |                     |                    dd          d
           |                     |                    dd          d           |                     |                    dd          d           |                    dd           |                                 |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d	           |	                                 t          |           |                    dd           |
                    d           |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           |	                                 t          |           |                    dd           |
                    d           |                     |                    dd          d           |                     |                    dd          d
           |                     |                    dd          d           |                     |                    dd          d           d S )Nrb   rg   rh   r   s   Loem ipsum     rj   s   Loem ipum      rl   s   consectetur       adipiscing elitri   s   sed do eiusmod ro                     s   Lorem ipsum    r   r   )r	   rt   r   r   delchru   r   deletelninsertlnr   insdellnr   r}   s     r   test_insert_deletezTestCurses.test_insert_delete  s   mAr1a((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                    t          j        dddd          }t          |           |                    d           |                                 |                     |                    dd          d           |                    d           |                     |                    dd          d           |                    d           |                     |                    dd          d	           |                     |                    dd          d	           |                     |                    d
d          d           |                    d           d S )Nrb   rg   rh   Tr   r   r   r   ri   F)r	   rt   r   scrollokscrollru   r   r   s     r   test_scrollzTestCurses.test_scroll  s)   mAr1a((CT

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

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

21a*<===1a*<===1a*<===Ur   c                 >   t          j        dddd          }|                    t           j                   |                    t           j                   |                    t           j                   |                                 |                                 d S )Nrb   rg   rh   )r	   rt   attronr   attroffattrsetstandoutstandendr   s     r   test_attributeszTestCurses.test_attributes  sq    mAr1a((

6=!!!FM"""FM"""r   chgatc                    t          j        dddd          }|                    ddd           |                    ddd           |                    dd           |                    t           j                   |                     |                    dd	          d
           |                     |                    dd          dt           j        z             |                     |                    dd          dt           j        z             |                    dd           |                    dt           j                   |                     |                    dd          d           |                     |                    dd          dt           j        z             |                     |                    dd          dt           j        z             |                     |                    dd          d           |                    ddt           j	                   |                     |                    dd          d           |                     |                    dd          dt           j	        z             |                     |                    dd          dt           j	        z             |                    ddd	t           j                   |                     |                    dd          dt           j	        z             |                     |                    dd          dt           j        z             |                     |                    dd          dt           j        z             |                     |                    dd          dt           j	        z             |                     |                    dd          dt           j	        z             d S )Nrb   rg   rh   r   Lorem ipsumri   zdolor sit ametrp   rj   r   r          rl   L   o   e   ro   r   l   r   rc   r   rs   )
r	   rt   r   r   r   A_BLINKru   r   r   A_UNDERLINEr   s     r   
test_chgatzTestCurses.test_chgat  s   mAr1a((

1a'''

1a)***A		&.!!!!Q111!Q6>)ABBB!R'FN*BCCCA		!V]###!Q111!Q6=)@AAA!Q6=)@AAA!Q111		!Q*+++!Q111!Q63E)EFFF!R'F4F*FGGG		!Q6>***!Q63E)EFFF!Q6>)ABBB!R'FN*BCCC!R'F4F*FGGG!R'F4F*FGGGGGr   c                    t          j        dddd          }|                    ddd           |                     |                                d           |                    d           |                     |                                d           |                    d	           |                     |                                d
           |                    d           |                     |                                d           |                    d           |                     |                                d           |                    dt           j                   |                     |                                d
t           j        z             |                     |                    dd          d           |                     |                    dd          d           |                    d           |	                    d           |                     |                                d           |                     |                    dd          d           |                     |                    dd          d           |	                    dt           j                   |                     |                                d
t           j        z             |                     |                    dd          dt           j        z             |                     |                    dd          d
t           j        z             d S )Nrb   rg   rh   r   r   )r   r   __      ##   r   r   #r   )
r	   rt   r   assertIngetbkgdbkgdsetru   	A_REVERSEr   bkgdr   s     r   test_backgroundzTestCurses.test_background  s   mAr1a((

1a'''ckkmmW--- 	C000D000B+++A+++C)***&2B(BCCC!Q111!Q111A 	000!Q111!Q111f&'''&2B(BCCC!Q63C)CDDD!Q63C)CDDDDDr   c           	      *   t          j        dddd          }t          |           t          j        dddd          }t          d          D ]}|                    |dd	           |                    |           |                     |                    dd          d
           |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           |                    |           |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           |                    |dddddd           |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           |                    |dddddd           |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           d S )Nrb      ri   ro   rj      rr   r   _________________s   sectetur_________rl   s   piscing_elit,____rh   s   _do_eiusmod______s   _________________s   sectetur       __s   piscing elit,  __s    do eiusmod    __rs   s   __r_sit_amet_____s   __ectetur________s   __r sit amet_____s   __ectetur   _____)	r	   rt   r   ranger   overlayru   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BBa++-ABBBa++-ABBBa++-ABBB   a++-ABBBa++-ABBBa++-ABBBa++-ABBBvq!Q1b111a++-ABBBa++-ABBBa++-ABBBAq!Q333a++-ABBBa++-ABBBa++-ABBBBBr   c                     t          j        dddd          }|                                 |                    dd           |                                 |                                 t          j                     d S )Nrb   rg   rh   rl   )r	   rt   noutrefreshredrawln	redrawwinr   doupdater   s     r   test_refreshzTestCurses.test_refresh,  si    mAr1a((Qr   resizec                 ,   t          j        dddd          }|                    dd           |                     |                                d           |                    dd           |                     |                                d           d S )Nrb   rg   rh   ro      )ro   r  )rb   rg   )r	   rt   r  ru   rx   r   s     r   test_resizezTestCurses.test_resize4  s    mAr1a((

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

1b11111r   enclosec                 ,   t          j        dddd          }|                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd	          d           |                     |                    d
d	          d           |                     |                    dd          d           d S )Nrb   rg   rh   Trl   Fro   rr      rj   r  )r	   rt   r   r  r   s     r   test_enclosezTestCurses.test_enclose<  s    mAr1a((ckk!Q''...ckk!Q''///ckk!Q''///ckk!R(($///ckk!R((%000ckk!R((%00000r   c                 ,   t          j        dddd          }|                    ddd           t          j                    5 }|                    |           ~|                    d           t          j        |          }|                     |	                                d           |                     |
                                d           |                     |                    dd          d	           d d d            d S # 1 swxY w Y   d S )
Nrb   rq   rl   rh   r   r   rk   )rb   rq   s    Lorem ipsum)r	   rt   r   rK   rL   putwinseekgetwinru   rv   rx   r   )r   r}   fs      r   test_putwinzTestCurses.test_putwinF  s+   mAr1a((

1a'''#%% 	?JJqMMMFF1III-""CS\\^^V444S\\^^W555SYYq!__o>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   B:D		DDc                 
   t          j        dddd          }|                    dddddd	d
d           |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           |                    dddddddd           |                    ddddddd d!           |                     t          |j        dddddg d d!
  
         |                     t          |j        ddddddd d!d"           |                     t          |j        ddddddd d!d"           |                    ddddddd            |                    dddddd           |                    ddddd           |                    dddd           |                    ddd           |                    dd           |                    d           |                                 |                    d#d$           |                     |                    ddd%          d&           |                     |                    dd          d'           |                     |                    ddd%          d&           |                    d(d)           |                    dd           |                     t          |j        ddd           |                     t          |j        d           |                                 |                    dd           |	                    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-d.           |                    d/d.           |                    d0d.           |                    d-d.t           j                   |                    ddd-d.           |                    ddd1dt           j                   |                     |                    dd          d2t           j        z             |                     |                    dd          d2t           j        z             |                     |                    d.d          d0           d S )3Nrb   rc   rh   |!-r   +\r   /r   s
   +--------\rl   s
   |        !ro   s
   #________/   |   !   -   _   +   \r      /r   B   r   D   E   F   G   H   I   :~rp   s   ~~~~~~~~s
   :        :   :   ~rj   s    ----- -   r   ri      ar   ;;   )r	   rt   borderru   r   r   	TypeErrorboxr   hliner   vline
A_STANDOUTr   r   s     r   test_borders_and_linesz!TestCurses.test_borders_and_linesR  s   mAr1a((

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

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

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

2r2r2r2...

2r2r2r***

2r2r2&&&

2r2r"""

2r2

2r

2

S1a++[9991aM:::1a++[999dB)SWb"b999)SWb111			A		#q1a++Z888		$		"a		#q&-(((		!QQ		!QQ...A		#q		$		"a		#q&+,,,		!QQ		!QQ 1222!Q63D)DEEE!Q63D)DEEE!Q11111r   c                 b   |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                     t          t          j        d           |                     t          t          j        d	           |                     t          t          j        d
           |                     t          t          j        d           |                     t
          t          j        d           d S )Nr   r   r      
s   ^J
rc   r   s   AB AB            )ru   r	   unctrlr   rB  r   r\   s    r   test_unctrlzTestCurses.test_unctrl  sJ   t,,d333s++T222r**D111u--u555t,,e444r**E222)V]C888)V]E:::)V]B777)V]D999->>>>>r   c                 t   | j         s|                     d           |                     t          j                    d           t          j                     |                     t          j                    d           t          j                     |                     t          j                    d           d S )Nrequires terminalFT)rA   r&   r   r	   isendwinrS   r  r\   s    r   test_endwinzTestCurses.test_endwin  s    { 	/MM-...fo''///fo''...fo''/////r   c                 J   |                      t          j        d          t                     |                     t          j        d          d           |                     t          j        d          d           |                      t          j        d          t                     |                     t          j        d          d           |                     t          j        d          d           |                      t          j        d          t          t          d           f           | 	                    t          j        d                     | 	                    t          j        d                     t          j        d          }|t|                      |t                     t          j
        |d           t          j
        |d          }|                      |t                     t          j        |           t          j        d           d S )	Nhccolsrf   crr   cudrh   s   abc
)assertIsInstancer	   	tigetflagintru   tigetnumtigetstrbytestypeassertIsNonetparmputp)r   rX  cud_2s      r   test_terminfozTestCurses.test_terminfo  s   f.t44c:::)&112666)$//444fof55s;;;..333..333fod33eT$ZZ5HIII&/$//000&/&11222oe$$?!!#u---La   La((E!!%///KHr   c                    t          j        d           t          j                     t          j                     |                     t          j                    d           t          j        d           t          j        dd           d S )Nrl   Fd   2   )r	   delay_outputflushinpr  r   rR  napmsnewpadr\   s    r   test_misc_module_funcsz!TestCurses.test_misc_module_funcs  ss    Afo''///Sb"r   c                 Z   |                      t          j                    t                     |                      t          j                    t                     |                      t          j                    t                     |                      t          j                    t                     |                      t          j	                    t                     |                      t          j
                    t                     t          j                    }|                      |t                     |                     t          |          d           t          j                    }|                      |t                     |                     t          |          d           d S Nrl   )rY  r	   termnamer^  longnamebaudrater[  has_icboolhas_il	termattrskillcharru   r   	erasechar)r   r   s     r   test_env_querieszTestCurses.test_env_queries  s8   fo//777fo//777fo//555fmoot444fmoot444f.00#666Oa'''Q###a'''Q#####r   c                    | j         }|                    d           |                    d           |                    d           |                    d           |                    d           |                    d           t	          |d          r*|                    d           |                    d           |                    d           |                    d           |                    d           |                    d           |                    dd           t          j
                     t          j        d           t          j        d           t          j                     d S )NTFimmedokrb   rc   )r   clearokidcokidlokr   rz  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           |                    d           |                    d           t          j        d           t          j        d           |                    d           |                    d           t          j                     t          j        d           t          j        d           t          j                     |                    d           |                    d           |                    d           |                    d           |                    d           d S )NFT   rl   rf   r   rb   )r   rA   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   ; 	OMOOOM%   M$T"""U###JLLLJuJtLNNNEDdeDEtuturqqr   	typeaheadc                     t          j        t          j                                                   t          j        d           d S )Nrf   )r	   r  r5   	__stdin__r8   r\   s    r   test_typeaheadzTestCurses.test_typeahead   s8    --//000r   c                     | j         s|                     d           t          j                     t          j                     d S )NrQ  )rA   r&   r	   def_prog_modereset_prog_moder\   s    r   test_prog_modezTestCurses.test_prog_mode%  sC    { 	/MM-...     r   c                     t          j        d          t          j        d          t          j                     d S 	 t          j                     d S # t           j        $ r |                     d           Y d S w xY w)Nbelflashzbeep() failed)r	   r]  beeperrorr&   r\   s    r   	test_beepzTestCurses.test_beep+  s}    OE"".w''3KMMMMM/< / / /o....../   A $A<;A<c                     t          j        d          t          j        d          t          j                     d S 	 t          j                     d S # t           j        $ r |                     d           Y d S w xY w)Nr  r  zflash() failed)r	   r]  r  r  r&   r\   s    r   
test_flashzTestCurses.test_flash5  s~    OE"".w''3LNNNNN0< 0 0 0.//////0r  c                     dD ]X\  }}t          j        |          t          j        |           .	 t          j        |           D# t           j        $ r Y Uw xY wd S )N))r   civis)rh   cvvis)rl   cnorm)r	   r]  curs_setr  )r   viscaps      r   test_curs_setzTestCurses.test_curs_set?  s|    B 	 	HCs##/$$$$OC((((|   D	 	s   AAAget_escdelayc                     t          j                    }|                     |t                     t          j        d           |                     t          j                    d           t          j        |           d S )N   )r	   r  rY  r[  set_escdelayru   )r   escdelays     r   test_escdelayzTestCurses.test_escdelayI  sm    &((h,,,B,..333H%%%%%r   get_tabsizec                     t          j                    }|                     |t                     t          j        d           |                     t          j                    d           t          j        |           d S )Nro   )r	   r  rY  r[  set_tabsizeru   )r   tabsizes     r   test_tabsizezTestCurses.test_tabsizeQ  sm    $&&gs+++1+--q1117#####r   getsyxc                    t          j                    \  }}|                     |t                     |                     |t                     t          j        dd           |                     t          j                    d           d S )Nro   rb   )ro   rb   )r	   r  rY  r[  setsyxru   )r   yxs      r   test_getsyxzTestCurses.test_getsyxY  sq    }1a%%%a%%%a&11111r   c                 (    dt           j        dddddfS )Nrf                                   rM  r	   COLORSr\   s    r   
bad_colorszTestCurses.bad_colorsa  s    FM:uj%OOr   c                 "    t           j        dddfS )Nr  r  rM  r  r\   s    r   bad_colors2zTestCurses.bad_colors2d  s    ueU33r   c                     dS )N)rf   r  r  r  r  rM  r    r\   s    r   	bad_pairszTestCurses.bad_pairsg  s    @@r   c                     |                      t          j                    t                     |                      t          j                    t                     d S r[   )rY  r	   r%   rs  can_change_colorr\   s    r   test_has_colorszTestCurses.test_has_colorsj  sF    f/114888f577>>>>>r   c                 .   t          j                    s|                     d           t          j                     t          rRt          dt           j         t          j                   t          dt           j	         t          j                   d S d S )Nr$   z	COLORS = )r0   zCOLOR_PAIRS = )
r	   r%   r&   r'   r   r3   r  r5   r6   COLOR_PAIRSr\   s    r   test_start_colorzTestCurses.test_start_colorn  s     "" 	5MM3444 	J-fm--CJ????76#577cjIIIIII	J 	Jr   c                 R   |                      t          j        t          j                  d           t          j        d           t          j        dz
  }t          j        |           |                                 D ](}|                     t          t          j        |           )d S )Nr   r   r   r   rl   )ru   r	   color_contentCOLOR_BLACKr  r  r   r   )r   maxcolorcolors      r   test_color_contentzTestCurses.test_color_contentv  s    -f.@AA9MMMQ=1$X&&&__&& 	G 	GEj&*>FFFF	G 	Gr   c           	         t          j                    s|                     d           t          j        d          }	 t          j        dg|R   n*# t           j        $ r |                     d           Y nw xY w | j        t           j        dg|R   t          j        dddd           |                     t          j        d          d           t          j        dddd           |                     t          j        d          d           t           j        dz
  }t          j        |          }t          j        |g|R    | j        t           j        |g|R   t          j        |ddd           |                     t          j        |          d	           | 	                                D ]+}| 
                    t          t           j        |ddd           ,d
D ]}}| 
                    t          t           j        d|dd           | 
                    t          t           j        dd|d           | 
                    t          t           j        ddd|           ~d S )Nzcannot change colorr   z)cannot change color (init_color() failed)r    )r  r  r  rl     )r   r  r  )rf   i  )r	   r  r&   r  
init_colorr  rE   ru   r  r  r   r   )r   oldr  r  comps        r   test_init_colorzTestCurses.test_init_color  sp   &(( 	1MM/000"1%%	Ga&#&&&&&| 	G 	G 	GMMEFFFFF	G)13s3333!Q1%%%-a00)<<<!T4...-a002DEEE=1$"8,,()S)))))8:c::::(AsD111-h77HHH__&& 	M 	MEj&*;UAq!LLLL 	L 	LDj&*;QaKKKj&*;Q4KKKj&*;Q1dKKKK	L 	Ls   A $A87A8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           n# t          $ r t           j        }Y nw xY w|S )Nncurses_versionrh   rl   )rr   rl   )rr   rh   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2 2ao11
577 8!7@@@@&@@@@@ Y77
0 aA6666 0 0 0#/


0s   B' 'C ?C c                    t          t          d          s>|                     t          j        d          t          j        t          j        f           t          j        d           |                                 dz
  }|dk    rt          j        |           |                                 D ](}|                     t          t          j        |           )d S )Nuse_default_colorsr   rl   )
r   r	   ru   pair_contentCOLOR_WHITEr  r  r  r   r   )r   maxpairpairs      r   test_pair_contentzTestCurses.test_pair_content  s    v344 	GV033$0&2DEG G GA%%''!+Q;;(((NN$$ 	E 	EDj&*=tDDDD	E 	Er   c                     t          j        d          }t          j        dg|R    | j        t           j        dg|R   t          j        ddd           |                     t          j        d          d           t           j        dz
  }t          j        d|d           |                     t          j        d          |df           t          j        dd|           |                     t          j        d          d|f           |                                 dz
  }|dk    r>t          j        |dd           |                     t          j        |          d           |                                 D ]*}|                     t          t           j        |dd           +| 
                                D ]R}|                     t          t           j        d|d           |                     t          t           j        dd|           Sd S )Nrl   r   rd   )r	   r  r  rE   ru   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222Aq!!!,Q//888=1$Ha(((,Q//(A???Ax(((,Q//!X???%%''!+Q;;Wa+++V0996BBBNN$$ 	H 	HDj&*:D!QGGGG%%'' 	I 	IEj&*:AuaHHHj&*:Aq%HHHH	I 	Ir   c                    dD ]t}t          j        |          }|                     t          j        |          ||           |                     t          j        |t           j        z            |           u|                     t          j        d          d           |                     t          j        d          d           d S )N)r   rl   r  r   )r	   
color_pairru   pair_numberr   )r   r  attrs      r   test_color_attrszTestCurses.test_color_attrs  s     	M 	MD$T**DV/55tTBBBV/v}0DEEtLLLL*1--q111+A..22222r   r  c                 Z   t          j        d          }	 t          j                     n*# t           j        $ r |                     d           Y nw xY w|                     t          j        d          d           |                     |t           j        t           j        fddg           d S )Nr   z1cannot change color (use_default_colors() failed)re   rd   )	r	   r  r  r  r&   ru   r   r  r  )r   r  s     r   test_use_default_colorsz"TestCurses.test_use_default_colors  s     !!$$	O%''''| 	O 	O 	OMMMNNNNN	O,Q//:::cV/1CDhPVWXXXXXs   * $AAc                    |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                     t          t          j        d	           |                     t          j        d
          t                     d S )Nr   r   rn   s   ^M   s   ^?r   s   ^@rf      )ru   r	   keynamer   r   rY  r^  r\   s    r   test_keynamezTestCurses.test_keyname  s    ++T222++U333,,e444**E222*fnb999fnS11599999r   has_keyc                 .    t          j        d           d S )Nrn   )r	   r  r\   s    r   test_has_keyzTestCurses.test_has_key  s    rr   getmousec                    t          j        t           j                  \  }}|dk    r|                     d           t          j        d           t          j        ddddt           j                   t          j                    }d S )Nr   zmouse stuff not availablerc   )r	   	mousemaskBUTTON1_PRESSEDr&   mouseinterval
ungetmouser  )r   	availmaskoldmaskms       r   test_getmousezTestCurses.test_getmouse  st    %/0FGGG>>MM5666R   !Q1f&<===Or   panelc                    t          j        dd          }t           j                            |          }|                     t           j        j        d          5  |                                 d d d            d S # 1 swxY w Y   d S )Nrc   z!userptr should fail since not set)msg)r	   rt   r  	new_panelr   r  userptr)r   wps      r   test_userptr_without_setz#TestCurses.test_userptr_without_set  s    M"b!!L""1%%v|1#F  H H 	 	IIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A==BBc                 |   t          j        dd          }t           j                            |          }t	                      }t          j        |          }t          d          D ]}|                    |           |                    d            | 	                    t          j        |          |d           d S )Nrc   rf  zset_userptr leaked references)
r	   rt   r  r
  objectr5   getrefcountr	  set_userptrru   )r   r  r  objnrefsr  s         r   test_userptr_memory_leakz#TestCurses.test_userptr_memory_leak  s    M"b!!L""1%%hh$$s 	 	AMM#	d--u8	: 	: 	: 	: 	:r   c                     t          j        dd          }t           j                            |           G fdd          }                     |                                           d            d S )Nrc   c                       e Zd Z fdZdS )+TestCurses.test_userptr_segfault.<locals>.Ac                 2                         d            d S 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	   rt   r  r
  r  )r   r  r   r  s      @r   test_userptr_segfaultz TestCurses.test_userptr_segfault  s    M"b!!&&q))	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	!!##$r   c                     t          j        dd          }t           j                            |          }t	          | t          |                     d S )Nrc   )r	   rt   r  r
  r   r_  )r   r  r  s      r   test_disallow_instantiationz&TestCurses.test_disallow_instantiation  sF     M"b!!&&q))$T4;;77777r   is_term_resizedc                     t           j        t           j        }}|                     t          j        ||          d           |                     t          j        |dz
  |dz
            d           d S )NFrl   T)r	   LINESCOLSr   r   r   linesrV  s      r   test_is_term_resizedzTestCurses.test_is_term_resized'  s_    lFKtf,UD995AAAf,U1Wd1f==tDDDDDr   resize_termc                    t          j                     t           j        t           j        }}|dz
  }|dz   }t          j        ||           |                     t           j        |           |                     t           j        |           t          j        ||           |                     t           j        |           |                     t           j        |           d S rn  )r	   update_lines_colsr"  r#  r'  ru   r   r%  rV  	new_linesnew_colss        r   test_resize_termzTestCurses.test_resize_term-  s     """lFKtAI	!89h///y111h///5$'''u---d+++++r   
resizetermc                    t          j                     t           j        t           j        }}|dz
  }|dz   }t          j        ||           |                     t           j        |           |                     t           j        |           t          j        ||           |                     t           j        |           |                     t           j        |           d S rn  )r	   r)  r"  r#  r.  ru   r*  s        r   test_resizetermzTestCurses.test_resizeterm;  s     """lFKtAI	!8)X...y111h///%&&&u---d+++++r   c                    t          j        d           |                     | j                                        d           t          j        d           |                     | j                                        d           t          j        d           |                     | j                                        d           d S )Nr   r   Br   C)r	   r   ru   r   getkeyr\   s    r   test_ungetchzTestCurses.test_ungetchI  s    t++--s333s++--s333r++--s33333r   c                 `    t          j        d           | j                                         d S )Ni  )r	   r   r   r4  r\   s    r   test_issue6243zTestCurses.test_issue6243Q  s,    tr   	unget_wchr  )c   )rb   rp   z.unget_wch is broken in ncurses 5.7 and earlierc           
         | j         }|j        }dD ]}	 |                    |           n# t          $ r Y %w xY w	 t	          j        |           n:# t          $ r-}|                     d|d|j        d|           Y d }~nd }~ww xY w|                                }| 	                    ||           t          |          }t	          j        |           |                                }| 	                    ||           d S )N)r      ér   u   􏿿z
unget_wch(z) failed with encoding z: )r   r   r   r   r	   r8  	Exceptionfailget_wchru   ord)r   r   r   cherrreadcodes          r   test_unget_wchzTestCurses.test_unget_wchU  sQ    ?7 	' 	'B		(####%   8 $$$$ 8 8 8			RR##7 8 8 8 8 8 8 8 88 >>##DT2&&&r77DT""">>##DT2&&&&!	' 	's#   *
77A
B#BBc                 >   | j         }dd l}|j        }|                    |           |                     t
                    5  d|_        d d d            n# 1 swxY w Y   ||_        |                     t
                    5  |`d d d            d S # 1 swxY w Y   d S )Nr   rc   )r   codecsr   lookupr   rB  )r   r   rF  r   s       r   test_encodingzTestCurses.test_encodingm  s   ?hy)) 	! 	! FO	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!"y)) 	  	 	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s$   AAABBBc                 
   | j         }	 t          j        |j                  }|                     |           n# t
          $ r Y nw xY w|j        j                            d          d         }|                     d|           d S )NrJ  r   z[y, x,])	r   inspect	signaturer   assertFalser   __doc__splitr   )r   r   rK  human_readable_signatures       r   test_issue21088zTestCurses.test_issue21088x  s    	)&,77IY'''' 	 	 	D	 $*<#7#=#=d#C#CA#F i!9:::::s   .8 
AAc                    t          j        dddd          }t           j                            |d          }|                                \  }}|                    |dz
  |dz
             |                    d           d S )Nrb   rg   rh   T)insert_moder   )r	   rt   textpadTextboxrx   r  _insert_printable_char)r   r}   rC  r%  rV  s        r   test_issue13051zTestCurses.test_issue13051  sx    mAr1a((n$$Sd$;;llnnt

57DF###""3'''''r   N)Pr  r  r   classmethodr<   rX   r   r]   r`   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r  r  r  r  r  r#  rG  rO  rS  rd  rl  rx  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-  r0  r5  r7  r   skipIfgetattrr	   rD  rH  rP  rV  r    r   r   r-   r-   7   s        ' ' ['. . .` (##  $#
 )$$  %$23 23 23h	1 	1 	1.> .> .>`$5 $5 $5L 5  5  5DF F F> > > 0 0 0; ; ;,< < <((> (> (>T     ! ))H H *)H<E E EBC C C:   ! **2 2 +*2 ! ++1 1 ,+1
? 
? 
?62 62 62p? ? ?0 0 0  0	 	 	$ $ $   <, , ,\ +&&  '&! ! !/ / /0 0 0   .))& & *)& -(($ $ )($ (##2 2 $#2P P P4 4 4A A A? ? ?J J J G G _G L L _L:  " 
E 
E _
E I I _I. 3 3 _3 .//Y Y _ 0/Y: : : )$$  %$ *%%  &% '""  #" '""
: 
: #"
: '""    #"  '""8 8 #" \8 +,,E E -,E
 -((, , )(, ,'', , (',4 4 4   +&&X_WWV%6>>GEG G' 'G G '&'*	  	  	 ; ; ;8 ! **( ( +*( ( (r   r-   c                   d    e Zd Z ed          d             Z ed          d             Zd ZdS )	MiscTestsr)  c                 2   t          j                     t           j        t           j        }}dxt           _        t           _        t          j                     |                     t           j        |           |                     t           j        |           d S )Nr   )r	   r)  r"  r#  ru   r$  s      r   test_update_lines_colsz MiscTests.test_update_lines_cols  sq     """lFKt%&&v{ """u---d+++++r   r  c                    t           j        }t          rt          dt           j         d           |                     |d d          t
                     |                     t          |          d           |                     |d         t                     |                     |d         t                     |                     |d         t                     |                     |j	        t                     |                     |j
        t                     |                     |j        t                     |                     |d         |j	                   |                     |d         |j
                   |                     |d         |j                   |                     |j	        d           |                     |j
        d           |                     |j        d           d S )Nzncurses_version = T)r1   ri   r   rl   rh   )r	   r  r   r3   rY  tupleru   r   r[  majorminorpatchassertGreaterEqual)r   vs     r   test_ncurses_versionzMiscTests.test_ncurses_version  s   " 	M?v'=??tLLLLadE***Q###adC(((adC(((adC(((ags+++ags+++ags+++1qw'''1qw'''1qw'''+++++++++++r   c                 b    t          j                    }|                     |t                     d S r[   )r	   r  rY  rs  )r   rs     r   test_has_extended_color_supportz)MiscTests.test_has_extended_color_support  s,    -//a&&&&&r   N)r  r  r   r   r]  re  rh  r    r   r   r[  r[    sq        -.., , /., +,,, , -,,&' ' ' ' 'r   r[  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )	TestAsciic                     t           j        j        D ]0}|                     t	          t           j        |          |           1d S r[   )r	   asciicontrolnames
assertTruer   )r   r   s     r   test_controlnameszTestAscii.test_controlnames  sC    L- 	? 	?DOOGFL$77>>>>	? 	?r   c                 <     fd}t          d          D ]ot                    t          g          } |t          j        j        |                                            |t          j        j        |                                            |t          j        j        |                                            |t          j        j        |                                            |t          j        j	        |	                                            |t          j        j
        |
                                            |t          j        j        dk                 |t          j        j        dk                |t          j        j        dk                 |t          j        j        dk     pdk                |t          j        j        dv             |t          j        j        dcxk     odk    nc             |t          j        j        dcxk    odk    nc             |t          j        j        t&          j        v             |t          j        j        t&          j        v            qdd	dt.          j        t.          j        d
z   fD ]                     t          j                                                                      t          j                                                                      t          j                                                                      t          j                                                                      t          j        	                                                              t          j        
                                                              t          j                                                                      t          j                                                                      t          j                                                                      t          j                                                                      t          j                                                                      t          j                                                                      t          j                                                                      t          j                                                                      t          j                            d	                     d S )Nc                                          |           5                       |           |                                |           |           d d d            d S # 1 swxY w Y   d S )N)r@  r   )r   ru   )r   expectedr   r  r   s     r   checkz$TestAscii.test_ctypes.<locals>.check  s    .. 4 4  a(333  a(3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   ?A%%A),A)r     r   r  z 	~   r   rf   rl   )r	  chrr^  r	   rl  isalnumisalphaisdigitislowerisspaceisupperisasciiismetaisctrliscntrlisblankisgraphisprintispunctstringpunctuationisxdigit	hexdigitsr5   
maxunicoderL  )r   rs  br   r  s   `  @@r   test_ctypeszTestAscii.test_ctypes  s   	4 	4 	4 	4 	4 	4 	4
 s 	@ 	@AAAqc

AE&,&		444E&,&		444E&,&		444E&,&		444E&,&		444E&,&		444E&,&C000E&,%qCx000E&,%q2v...E&,&B(:!s(;;;E&,&U
333E&,&Q#666E&,&a3777E&,&V-?(?@@@E&,'f.>)>????b#s~s~a/?@ 	7 	7AV\11!44555V\11!44555V\11!44555V\11!44555V\11!44555V\11!44555V\11!44555V\0033444V\11!44555V\11!44555V\11!44555V\11!44555V\11!44555V\221556666,,R0011111r   c                    t           j        j        }|                      |d          d           |                      |d          d           |                      |t          d                    t          d                     d S )N   Ár   )r	   rl  ru   r?  )r   rl  s     r   
test_asciizTestAscii.test_ascii  sz    "v,,,sS)))s6{{++SXX66666r   c                 T   t           j        j        }|                      |d          d           |                      |d          d           |                      |d          d           |                      |t	          d                    t	          d                     d S )NJrJ  @ )r	   rl  ctrlru   r?  )r   r  s     r   	test_ctrlzTestAscii.test_ctrl  s    | cD)))dT***cD)))c#hhT33333r   c                     t           j        j        }|                      |d          d           |                      |d          d           |                      |t	          d                    d           d S )NrJ     r   r     )r	   rl  altru   r?  )r   r  s     r   test_altzTestAscii.test_alt  sr    lTF+++S6***SXX-----r   c                    t           j        j        }|                      |d          d           |                      |d          d           |                      |d          d           |                      |d          d           |                      |d          d           |                      |d          d           |                      |d	          d
           |                      |t	          d                    d           |                      |t	          d                    d           |                      |d          d           |                      |d          d           |                      |t	          d                    d           |                      |t	          d                    d           d S )Nr   r   r?   z^?rJ  z^Jr  z^@r  z!^Jr  z!A)r	   rl  rN  ru   r?  )r   rN  s     r   rO  zTestAscii.test_unctrl  s   $c***c***c***c***...t,,,t,,,C))3///D		**D111///...F,,e444F,,d33333r   N)	r  r  r   ro  r  r  r  r  rO  r    r   r   rj  rj    so        ? ? ?+2 +2 +2Z7 7 74 4 4. . .4 4 4 4 4r   rj  c                     g d}|                                  \  }}t          |d |                   D ].\  }}|                     |d|d |||dz
  k    z
                      /d S )N)	r   zdolor sit amet,consecteturzadipiscing elit,zsed do eiusmodztempor incididuntzut labore etzdolore magnazaliqua.r   rl   )rx   	enumerater   )r}   textmaxymaxxr  lines         r   r   r     s    
 
 
D JD$T%4%[)) 8 84

1a5tqD1H}55677778 8r   __main__)"r   rJ  rC   r  r5   rK   r   test.supportr   r   r   r   r   test.support.import_helperr   r	   curses.panelImportErrorr   r!   r(   environgetr4   r  rX  r   TestCaser-   r[  rj  r   r  mainr    r   r   <module>r     s        				  



  8 8 8 8 8 8 8 8 8 8 8 8 8 8 4 4 4 4 4 4
 	    
x	 	  n       	 	 	 	D	< < <     
z~~f	 T.TY.=DF F)46 6`( `( `( `( `(" `( `(6 6F F`(F#!' !' !' !' !'! !' !' !'HU4 U4 U4 U4 U4! U4 U4 U4p8 8 8  zHMOOOOO s   A# #A+*A+