HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_curses.cpython-310.opt-2.pyc
o

�iT��@sJddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZddl
mZed�ed�Zed�ed�zddlZWn	eyOYnwdd�Zd	d
�Zdd�Zej�d
�ZdZe�epledkde�e�ejdkd�Gdd�dej���ZGdd�dej�ZGdd�dej�Zdd�Ze dkr�e�!�dSdS)�N)�requires�verbose�SaveSignals�cpython_only�check_disallow_instantiation)�
import_module�curseszcurses.asciizcurses.textpadcCst�tt|�d|�S)Nzrequires curses.%s)�unittestZ
skipUnless�hasattrr��name�r
�-/usr/local/lib/python3.10/test/test_curses.py�requires_curses_funcs�rcs�fdd�}|S)Ncst�����fdd��}|S)Ncs4t|j��s
t�d����|g|�Ri|��dS)Nzrequires curses.window.%s)r
�stdscrr	ZSkipTest��self�args�kwargs)r�testr
r�wrapped!sz:requires_curses_window_meth.<locals>.deco.<locals>.wrapped��	functools�wraps�rrr�rr�deco sz)requires_curses_window_meth.<locals>.decor
)rrr
rr�requires_curses_window_methsrcst����fdd��}|S)Ncs4t��s	|�d�t���|g|�Ri|��dS)N�requires colors support)r�
has_colors�skipTest�start_colorrrr
rr+s
z requires_colors.<locals>.wrappedrrr
rr�requires_colors*sr"ZTERMi��unknownz*$TERM=%r, calling initscr() may cause exit�cygwinz!cygwin's curses mostly just hangsc@seZdZedd��Zdd�Zed�dd��Zed�d	d
��Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zed%�d&d'��Zd(d)�Zd*d+�Zd,d-�Zed.�d/d0��Zed1�d2d3��Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%edF�dGdH��Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*edQ�dRdS��Z+edT�dUdV��Z,edW�dXdY��Z-dZd[�Z.d\d]�Z/d^d_�Z0d`da�Z1dbdc�Z2e3ddde��Z4e3dfdg��Z5dhdi�Z6e3djdk��Z7e3dldm��Z8e3dndo��Z9edp�e3dqdr���Z:dsdt�Z;edu�dvdw��Z<edx�dydz��Z=ed{�d|d}��Z>ed{�d~d��Z?ed{�d�d���Z@eAed{�d�d����ZBed��d�d���ZCed��d�d���ZDed��d�d���ZEd�d��ZFd�d��ZGed��eH�IeJeKd�d��d�kd��d�d����ZLd�d��ZMd�d��ZNed.�d�d���ZOd�S)��
TestCursescCs4tr
tdt��tjdd�tj��}tj|d�dS)NzTERM=T��file�flush)�fd)	r�print�term�sys�stderr�
__stdout__�filenorZ	setupterm)�cls�	stdout_fdr
r
r�
setUpClass=s
zTestCurses.setUpClasscCsNd|_tj|_tj��}tj��s`t�|�}|�tj|�|�tj	||�tj
��r2tj
}tj
|_n&z	tdddd�}WntyNt
jddd�}d|_Ynw|�|j�d|_t�	|��|�t�|_|j��|�|jj�tr�|jdur�tj��tj��t|jdd�t��|_|jr�t��|�tj�|�tj�|j��dS)	NTz/dev/tty�wbr)�	buffering)�moder4Fr&)�isattyr,r.�outputr/�os�dup�
addCleanup�close�dup2�
__stderr__�open�OSError�tempfile�
TemporaryFilerZsave_signals�saveZrestorerr-r(�stdoutr*rZinitscrrZsavetty�endwinZresetty�erase)rr1Zdup_fd�tmpr
r
r�setUpFs@





�



zTestCurses.setUp�filtercCst��dS�N)rrH�rr
r
r�test_filtervszTestCurses.test_filter�use_envcCst�d�t�d�dS)NFT)rrLrJr
r
r�test_use_env|s
zTestCurses.test_use_envcCs�t�dd�}|�|��d�|�|��d�|�|��d�t�dddd�}|�|��d�|�|��d�|�|��d	�|�d
d�}|�|��d�|�|��d
�|�|��d�|�ddd
d�}|�|��d�|�|��d
�|�|��d�|�dd
�}|�|��d�|�|��d�|�|��d�|�dddd
�}|�|��d�|�|��d�|�|��d�|�dd�|�|��d�|�|��d�|�|��d	�|�|��d�|�|��d
�|�|��d�|�|��d�|�|��d�|�|��d�|�	dd�|�|��d�|�|��d�|�|��d�|�	dd�|�|��d�|�|��d�|�|��d�dS)N��
�rr����rR)rNrO��)rTrN)rOrS��)rUrV��rT)�	�
)��)rTrU)r\���)r^r_rrX)rrX)rTrX)
r�newwin�assertEqual�getbegyxZgetparyx�getmaxyx�subwinZderwinZmvwinZmvderwin)r�win�win2Zwin3r
r
r�test_create_windows�sTzTestCurses.test_create_windowscCsj|j}|�dddd�}|�dd�|�dd�|�|��d�|�|��d�|��|�|��d	�dS)
NrOrSrTrNrXr[rW)rTr[)r[rY)rrd�movera�getyxZ	cursyncup)rrrer
r
r�test_move_cursor�szTestCurses.test_move_cursorcCs�|j}|��|�|��d�|��|�|��d�|��|�|��d�|��|�|��d�|��|�|��d�|�dd�|�|�d�d�|�|�d�d�|�|��d�|�ddd�|�|�d�d�|�dddd�}|�ddd	d
�}|��|��|�	�|�|��d�|�|��d�|��|��|��|�
�|�|��d�t|d�r�tj
�d�s�|��|��d
D] }|�|�|�d�|�|��|�|�|��|�q�dSdSdS)NFTrNrTr^rXrOrSrUrV�syncokZsunos)FT�a)r�refresh�assertIs�
is_wintouchedZtouchwinZ
untouchwinZ	touchlineZis_linetouchedrdZsyncupZsyncdownr
r,�platform�
startswithrk�addch)rrrerfrkr
r
r�test_refresh_control�sN

�zTestCurses.test_refresh_controlc	Csn|j}|j}|��|�dd�|�d�|�d�|�d�d}z|�|�Wn)ty9|�t|j|�YntyQ|�|�}|�	t
|�dt|��Ynw|�dtj
�|�ddd�|�dddtj
�|�|��d	�|��|�dd�|�d�|�d�|�d�|�ttf��
|�d
�Wd�n1s�wY|�dtj
�|�|��d�dS)Nr�A�A�A�€rXrTrUTuĔF)r�encodingrmrhrr�UnicodeEncodeError�assertRaises�encode�
OverflowErrorZassertNotEqual�len�reprr�A_BOLDrnroZechochar)rrrx�c�encodedr
r
r�test_output_character�s<



�


�z TestCurses.test_output_characterc
Cs�|j}|j}|j|jfD]T}|�|j��D|�dd�|d�|d�d}z||�Wnty<|�t|j	|�Ynw|dt
j�|ddd�|dddt
j�Wd�n1s[wYq|j|j
fD]_}|�|j��O|�dd�|dd�|d	d�d
}z||d�Wnty�|�t|j	|�Ynw|dd�|ddt
j�|dddd�|ddddt
j�Wd�n1s�wYqgdS)NrZabcdsabcduàßçđrXrTrUZ1234s1234u١٢٣٤rN)rrx�addstr�insstr�subTest�__qualname__rhryrzr{rr�addnstr�insnstr)rrrx�func�sr
r
r�test_output_stringsH���

�
���zTestCurses.test_output_stringc	Cs�|j}dD]:}|j|d��*|�t|j|�|�t|j|d�|�t|j|�|�t|j|d�Wd�n1s:wYqdS)N)zasa)�argrX)rr�rz�
ValueErrorr�r�r�r�)rrr�r
r
r�&test_output_string_embedded_null_chars:s���z1TestCurses.test_output_string_embedded_null_charscCs�|j}|�dddtj�|�dd�|�|��dtjB�|�|�dd�dtjB�|�dd�|�|��dd�d�|�|�d�dd�d	�|�|�dd
�dd�d�|�|�dd
d�d�|�t	|jd
�|�t	|jdd
d
�dS)NrrXZABCDrvrU�Cr^s ABCD s ABrTr[sBCD ���)
rr�rrrhra�inch�instrrzr��rrr
r
r�test_read_from_windowDsz TestCurses.test_read_from_windowcCs�t�dddd�}dddd�D]}t�|�q|�|�dd�d�|�|��d	�|�|�dd
�d�|�|��d�|�|��d
�|�|��d�|�|��d�|�|��d�dS)NrNr]rTzspam
rRrUrX�s)rUrXr[�p)rUr[�a�mrO)rr`�ungetchraZgetchri�rrer�r
r
r�
test_getchTszTestCurses.test_getchcCs0t�dddd�}t��|�tj�|�t|jd�|�t|jddd�dddd�D]}t�|�q+|�	|�ddd�d	�|�	|�
dd
�d�|�	|�ddd�d
�|�	|�
dd
�d�|�	|�dd�d�|�	|�
dd
�d�|�	|�d�d�|�	|�
dd
�d�|�	|��d�|�	|�
dd
�d�dS)NrNr]rTip���rUzLorem
ipsum
dolor
sit
amet
rRrXsLors Lo         rOsipsums Lo  ipsum  sdolors     dolor  ssissi   dolor  sametsamet dolor  )rr`�echor:�noechorzr�Zgetstrr�rar�r�r
r
r�test_getstrcs"zTestCurses.test_getstrcCs�t�dddd�}t|�|�dd�|��|�|�dd���d�|�|�dd���d�|�dd	�|��|�|�dd���d
�|�|�dd���d�|j	|j
fD]!}t|�|�|�|�dd���d�|�|�dd���d�qVdS)NrNrSrTrr\sLorem iprX�dolor sit amet,rUsLor�)rr`�lorem_ipsumrhZclrtoeolrar��rstripZclrtobotrE�clear)rrer�r
r
r�
test_clearys �zTestCurses.test_clearcCst�dddd�}t|�|�dd�|��|�|�dd�d�|�dd�|�|�dd�d�|�dd�|��|�|�dd�d�|�|�dd�d	�|�|�dd�d
�|�|�dd�d�|�|�d
d�d�|�dd�|��|�|�dd�d�|�|�dd�d�|�|�dd�d	�|�	�t|�|�dd�|�
d�|�|�dd�d�|�|�dd�d�|�|�dd�d�|�|�dd�d�|�	�t|�|�dd�|�
d�|�|�dd�d�|�|�dd�d
�|�|�dd�d�|�|�dd�d�dS)NrNrSrTrsLoem ipsum     rVsLoem ipum      rXsconsectetur    �adipiscing elitrUssed do eiusmod r[�               sLorem ipsum    r�r�)rr`r�rhZdelchrar�ZdeletelnZinsertlnr�Zinsdelln�rrer
r
r�test_insert_delete�sF

zTestCurses.test_insert_deletecCs�t�dddd�}t|�|�d�|��|�|�dd�d�|�d�|�|�dd�d�|�d�|�|�dd�d	�|�|�dd�d	�|�|�d
d�d�|�d�dS)NrNrSrTTrr�r����r�rUF)rr`r��scrollokZscrollrar�r�r
r
r�test_scroll�s


zTestCurses.test_scrollcCsHt�dddd�}|�tj�|�tj�|�tj�|��|��dS)NrNrSrT)rr`ZattronrZattroffZattrsetZstandoutZstandendr�r
r
r�test_attributes�szTestCurses.test_attributes�chgatcCs�t�dddd�}|�ddd�|�ddd�|�dd�|�tj�|�|�dd	�d
�|�|�dd�dtjB�|�|�dd�d
tjB�|�dd�|�dtj�|�|�dd�d�|�|�dd�dtjB�|�|�dd�dtjB�|�|�dd�d�|�ddtj	�|�|�dd�d�|�|�dd�dtj	B�|�|�dd�d
tj	B�|�ddd	tj�|�|�dd�dtj	B�|�|�dd�dtjB�|�|�dd�dtjB�|�|�dd�dtj	B�|�|�dd�d
tj	B�dS)NrNrSrTr�Lorem ipsumrUzdolor sit ametr\rVr�r��� rX�L�o�er[r��l�rrOr�r_)
rr`r�rhr�ZA_BLINKrar�rZA_UNDERLINEr�r
r
r�
test_chgat�s0zTestCurses.test_chgatcCs�t�dddd�}|�ddd�|�|��d�|�d�|�|��d�|�d	�|�|��d
�|�d�|�|��d�|�d�|�|��d�|�d
tj�|�|��d
tjB�|�|�dd�d�|�|�dd�d�|�d�|�	d�|�|��d�|�|�dd�d�|�|�dd�d�|�	d
tj�|�|��d
tjB�|�|�dd�dtjB�|�|�dd�d
tjB�dS)NrNrSrTrr�)rr��_�_�#�#rvr��#r�)
rr`r��assertInZgetbkgdZbkgdsetraZ	A_REVERSEr�Zbkgdr�r
r
r�test_background�s0





zTestCurses.test_backgroundc	Cs�t�dddd�}t|�t�dddd�}td�D]	}|�|dd	�q|�|�|�|�dd�d
�|�|�dd�d�|�|�d
d�d�|�|�dd�d�|�|�|�|�dd�d�|�|�dd�d�|�|�d
d�d�|�|�dd�d�|�|dddd
dd�|�|�dd�d�|�|�dd�d�|�|�dd�d�|�|dddd
dd�|�|�dd�d�|�|�dd�d�|�|�dd�d�dS)NrN�rUr[rV�r^rZ_________________ssectetur_________rXspiscing_elit,____rTs_do_eiusmod______s_________________ssectetur       __spiscing elit,  __s do eiusmod    __r_s__r_sit_amet_____s__ectetur________s__r sit amet_____s__ectetur   _____)	rr`r��ranger�Zoverlayrar�Z	overwrite)rZsrcwinZdstwin�ir
r
r�test_overlays.

zTestCurses.test_overlaycCs@t�dddd�}|��|�dd�|��|��t��dS)NrNrSrTrX)rr`ZnoutrefreshZredrawlnZ	redrawwinrm�doupdater�r
r
r�test_refresh,szTestCurses.test_refresh�resizecCsLt�dddd�}|�dd�|�|��d�|�dd�|�|��d�dS)NrNrSrTr[�)r[r�)rNrS)rr`r�rarcr�r
r
r�test_resize4s
zTestCurses.test_resize�enclosecCs�t�dddd�}|�|�dd�d�|�|�dd�d�|�|�dd�d�|�|�dd	�d�|�|�d
d	�d�|�|�dd�d�dS)NrNrSrTTrXFr[r^�rVr�)rr`rnr�r�r
r
r�test_enclose<szTestCurses.test_enclosecCs�t�dddd�}|�ddd�t���3}|�|�~|�d�t�|�}|�|�	�d�|�|�
�d�|�|�dd�d	�Wd�dS1sIwYdS)
NrNr]rXrTr�rrW)rNr]s Lorem ipsum)rr`r�r@rAZputwin�seekZgetwinrarbrcr�)rre�fr
r
r�test_putwinFs



"�zTestCurses.test_putwinc
Cs$t�dddd�}|�dddddd	d
d�|�|�dd�d
�|�|�dd�d�|�|�dd�d�|�dddddddd�|�ddddddd d!�|�t|jdddddgd d!�
|�t|jddddddd d!d"�|�t|jddddddd d!d"�|�ddddddd �|�dddddd�|�ddddd�|�dddd�|�ddd�|�dd�|�d�|��|�d#d$�|�|�ddd%�d&�|�|�dd�d'�|�|�ddd%�d&�|�d(d)�|�dd�|�t|jddd�|�t|jd�|��|�dd�|�	dd�|�|�ddd*�d+�|�	dd�|�	d,d�|�	ddtj
�|�	dddd�|�	ddddtj
�|�dd�|�d-d.�|�d/d.�|�d0d.�|�d-d.tj�|�ddd-d.�|�ddd1dtj�|�|�
dd�d2tjB�|�|�
dd�d2tjB�|�|�
d.d�d0�dS)3NrNrOrT�|�!�-r��+�\r��/rs
+--------\rXs
|        !r[s
#________/�|�!�-�_�+�\r��/rv�Br��D�E�F�G�H�I�:�~r\s~~~~~~~~s
:        :�:�~rVs ----- �-rlrU�ar��;�;)rr`Zborderrar�rz�	TypeError�boxrhZhlinerZvlineZ
A_STANDOUTr�r�r
r
r�test_borders_and_linesRsr���
�
�
�
z!TestCurses.test_borders_and_linescCs�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�ttjd�|�ttjd	�|�ttjd
�|�ttjd�|�ttjd�dS)
Nrurtrv�
s^J�
rOr�sAB�ZAB�)rar�unctrlrzr�r|rJr
r
r�test_unctrl�szTestCurses.test_unctrlcCsT|js|�d�|�t��d�t��|�t��d�t��|�t��d�dS)N�requires terminalFT)r6r rnr�isendwinrDr�rJr
r
r�test_endwin�s
zTestCurses.test_endwincCs|�t�d�t�|�t�d�d�|�t�d�d�|�t�d�t�|�t�d�d�|�t�d�d�|�t�d�ttd�f�|�	t�d��|�	t�d��t�d�}|dury|�|t�t�
|d�t�
|d�}|�|t�t�|�t�d�dS)	NZhc�colsrRZcrr��cudrTsabc
)�assertIsInstancerZ	tigetflag�intraZtigetnum�tigetstr�bytes�typeZassertIsNoneZtparmZputp)rr�Zcud_2r
r
r�
test_terminfo�s"

zTestCurses.test_terminfocCsDt�d�t��t��|�t��d�t�d�t�dd�dS)NrXF�d�2)rZdelay_outputZflushinpr�rnr�ZnapmsZnewpadrJr
r
r�test_misc_module_funcs�s

z!TestCurses.test_misc_module_funcscCs�|�t��t�|�t��t�|�t��t�|�t��t�|�t�	�t�|�t�
�t�t��}|�|t�|�t
|�d�t��}|�|t�|�t
|�d�dS�NrX)r�rZtermnamer�ZlongnameZbaudrater�Zhas_ic�boolZhas_ilZ	termattrsZkillcharrar}Z	erasechar)rr�r
r
r�test_env_queries�szTestCurses.test_env_queriescCs�|j}|�d�|�d�|�d�|�d�|�d�|�d�t|d�r0|�d�|�d�|�d�|�d�|�d�|�d�|�dd�t	�
�t	�d�t	�d�t	��dS)NTF�immedokrNrO)rZclearokZidcokZidlokr
rZleaveokr�Z	setscrregrZnonl�nlr�r
r
r�test_output_options�s&














zTestCurses.test_output_optionscCs6|j}|jr4t��t��t�d�t�d�t�d�t�d�t��t�d�t�d�t��t��t�	�t�	d�t�	d�t�
d�t�
d�|�d�|�d�t�d�t�d�|�
d�|�
d�t��t�d�t�d�t��|�d�|�d�|�d�|�d�|�d�dS)NFT�rXrRrrN)rr6rZnocbreakZcbreakZ	intrflush�rawZnorawr�r�Z	halfdelayZkeypad�metaZnodelayZ	noqiflushZqiflushZ	notimeout�timeoutr�r
r
r�test_input_options�sB





















zTestCurses.test_input_options�	typeaheadcCst�tj���t�d�dS)NrR)rrr,�	__stdin__r/rJr
r
r�test_typeahead szTestCurses.test_typeaheadcCs$|js|�d�t��t��dS)Nr�)r6r rZ
def_prog_modeZreset_prog_moderJr
r
r�test_prog_mode%s
zTestCurses.test_prog_modecC�Xt�d�dust�d�durt��dSzt��WdStjy+|�d�YdSw)N�bel�flashz
beep() failed)rr�Zbeep�errorr rJr
r
r�	test_beep+��zTestCurses.test_beepcCr)Nrrzflash() failed)rr�rrr rJr
r
r�
test_flash5rzTestCurses.test_flashc	CsNdD]"\}}t�|�durt�|�qzt�|�Wqtjy$YqwdS)N))rZcivis)rTZcvvis)rXZcnorm)rr�Zcurs_setr)rZvisZcapr
r
r�
test_curs_set?s��zTestCurses.test_curs_set�get_escdelaycC�<t��}|�|t�t�d�|�t��d�t�|�dS)N�)rrr�r�Zset_escdelayra)rZescdelayr
r
r�
test_escdelayI�

zTestCurses.test_escdelay�get_tabsizecCr)Nr[)rrr�r�Zset_tabsizera)r�tabsizer
r
r�test_tabsizeQrzTestCurses.test_tabsize�getsyxcCsDt��\}}|�|t�|�|t�t�dd�|�t��d�dS)Nr[rN)r[rN)rr r�r�Zsetsyxra)r�y�xr
r
r�test_getsyxYs
zTestCurses.test_getsyxcCsdtjdddddfS)NrR��������r��r�COLORSrJr
r
r�
bad_colorsaszTestCurses.bad_colorscCstjdddfS)Nr%r'r�r(rJr
r
r�bad_colors2d�zTestCurses.bad_colors2cCsdS)N)rRr$r%r&r'r�r
rJr
r
r�	bad_pairsgszTestCurses.bad_pairscCs$|�t��t�|�t��t�dSrI)r�rrr�can_change_colorrJr
r
r�test_has_colorsjszTestCurses.test_has_colorscCsRt��s	|�d�t��tr'tdtj��tjd�tdtj	��tjd�dSdS)Nrz	COLORS = )r'zCOLOR_PAIRS = )
rrr r!rr*r)r,r-�COLOR_PAIRSrJr
r
r�test_start_colorns
�zTestCurses.test_start_colorcCsT|�t�tj�d�t�d�tjd}t�|�|��D]
}|�ttj|�qdS)N�rrrrrX)rar�
color_content�COLOR_BLACKr)r*rzr�)r�maxcolor�colorr
r
r�test_color_contentvs


�zTestCurses.test_color_contentc	Cs~t��s	|�d�t�d�}ztjdg|�R�Wntjy(|�d�Ynw|jtjdg|�R�t�dddd�|�t�d�d�t�dddd�|�t�d�d�tjd}t�|�}tj|g|�R�|jtj|g|�R�t�|ddd�|�t�|�d	�|�	�D]
}|�
ttj|ddd�q�d
D]#}|�
ttjd|dd�|�
ttjdd|d�|�
ttjddd|�q�dS)Nzcannot change colorrz)cannot change color (init_color() failed)r2��)r8r8r8rX��)rr9r8)rRi�)rr.r r3Z
init_colorrr:rar)r*rzr�)r�oldr5r6�compr
r
r�test_init_color�s4

�

�zTestCurses.test_init_colorcCs�tj}ttd�rEt��r|dtjd7}t��r&dtjkr$dkr+nnt|t�}zt�|ddd�W|St	yDtj}Y|Sw|S)N�ncurses_versionrTrX)r^rX)r^rTr)
rr0r
�has_extended_color_supportr)r=�min�	SHORT_MAX�	init_pairr�)rZ
pair_limitr
r
r�get_pair_limit�s

��zTestCurses.get_pair_limitcCsnttd�s|�t�d�tjtjf�t�d�|��d}|dkr&t�|�|��D]
}|�t	tj|�q*dS)N�use_default_colorsrrX)
r
rra�pair_content�COLOR_WHITEr4rBr-rzr�)r�maxpair�pairr
r
r�test_pair_content�s

�

�zTestCurses.test_pair_contentcCs4t�d�}tjdg|�R�|jtjdg|�R�t�ddd�|�t�d�d�tjd}t�d|d�|�t�d�|df�t�dd|�|�t�d�d|f�|��d}|dkrlt�|dd�|�t�|�d�|��D]}|�t	tj|dd�qp|�
�D]}|�t	tjd|d�|�t	tjdd|�q�dS)NrXrrP)rrDrAr:rar)rBr-rzr�r+)rr:r5rFrGr6r
r
r�test_init_pair�s(

�zTestCurses.test_init_paircCshdD]}t�|�}|�t�|�||�|�t�|tjB�|�q|�t�d�d�|�t�d�d�dS)N)rrXrr)rZ
color_pairraZpair_numberr)rrG�attrr
r
r�test_color_attrs�s
zTestCurses.test_color_attrsrCcCsft�d�}zt��Wntjy|�d�Ynw|�t�d�d�|�|tjtjfddg�dS)Nrz1cannot change color (use_default_colors() failed)rQrP)	rrDrCrr rar�rEr4)rr:r
r
r�test_use_default_colors�s
�z"TestCurses.test_use_default_colorscCsn|�t�d�d�|�t�d�d�|�t�d�d�|�t�d�d�|�ttjd	�|�t�d
�t�dS)NrvrurZs^M�s^?rs^@rR�)rarZkeynamerzr�r�r�rJr
r
r�test_keyname�szTestCurses.test_keyname�has_keycCst�d�dS)NrZ)rrPrJr
r
r�test_has_key�szTestCurses.test_has_key�getmousecCsLt�tj�\}}|dkr|�d�t�d�t�ddddtj�t��}dS)Nrzmouse stuff not availablerO)rZ	mousemaskZBUTTON1_PRESSEDr Z
mouseintervalZ
ungetmouserR)rZ	availmaskZoldmask�mr
r
r�
test_getmouse�s

zTestCurses.test_getmouse�panelcCsXt�dd�}tj�|�}|jtjjdd��
|��Wd�dS1s%wYdS)NrOz!userptr should fail since not set)�msg)rr`rU�	new_panelrzrZuserptr)r�w�pr
r
r�test_userptr_without_set�s
�
"�z#TestCurses.test_userptr_without_setcCsbt�dd�}tj�|�}t�}t�|�}td�D]}|�|�q|�d�|�	t�|�|d�dS)NrOr�zset_userptr leaked references)
rr`rUrW�objectr,�getrefcountr��set_userptrra)rrXrY�objZnrefsr�r
r
r�test_userptr_memory_leaks

�z#TestCurses.test_userptr_memory_leakcsDt�dd�}tj�|��G�fdd�d�}��|����d�dS)NrOcseZdZ�fdd�ZdS)z+TestCurses.test_userptr_segfault.<locals>.Acs��d�dSrI)r]rJ�rUr
r�__del__r,z3TestCurses.test_userptr_segfault.<locals>.A.__del__N)�__name__�
__module__r�rar
r`r
rrtsrt)rr`rUrWr])rrXrtr
r`r�test_userptr_segfaults
z TestCurses.test_userptr_segfaultcCs*t�dd�}tj�|�}t|t|��dS)NrO)rr`rUrWrr�)rrXrUr
r
r�test_disallow_instantiationsz&TestCurses.test_disallow_instantiation�is_term_resizedcCsBtjtj}}|�t�||�d�|�t�|d|d�d�dS)NFrXT)r�LINES�COLSrnrf�r�linesr�r
r
r�test_is_term_resized's zTestCurses.test_is_term_resized�resize_termcC�zt��tjtj}}|d}|d}t�||�|�tj|�|�tj|�t�||�|�tj|�|�tj|�dSr)r�update_lines_colsrgrhrlra�rrjr�Z	new_linesZnew_colsr
r
r�test_resize_term-�zTestCurses.test_resize_term�
resizetermcCrmr)rrnrgrhrrraror
r
r�test_resizeterm;rqzTestCurses.test_resizetermcCsXt�d�|�|j��d�t�d�|�|j��d�t�d�|�|j��d�dS)Nrurt�Br��C)rr�rar�getkeyrJr
r
r�test_ungetchIs


zTestCurses.test_ungetchcCst�d�|j��dS)Ni)rr�rrvrJr
r
r�test_issue6243Qs
zTestCurses.test_issue6243�	unget_wchr=)�c)rNr\z.unget_wch is broken in ncurses 5.7 and earliercCs�|j}|j}dD]U}z|�|�Wn	tyYqwzt�|�Wnty?}z|�d||j|f�WYd}~nd}~ww|��}|�	||�t
|�}t�|�|��}|�	||�qdS)N)rl�érwu􏿿z)unget_wch(%a) failed with encoding %s: %s)rrxr{ryrry�	ExceptionZfailZget_wchra�ord)rrrx�ch�err�read�coder
r
r�test_unget_wchUs.�
���
�zTestCurses.test_unget_wchcCs�|j}ddl}|j}|�|�|�t��d|_Wd�n1s"wY||_|�t��|`Wd�dS1s=wYdS)NrrO)r�codecsrx�lookuprzr�)rrr�rxr
r
r�
test_encodingms
�"�zTestCurses.test_encodingcCsV|j}z
t�|j�}|�|�Wn	tyYnw|jj�d�d}|�d|�dS)Nr�rz[y, x,])	r�inspect�	signaturerr�assertFalser��__doc__�splitr�)rrr�Zhuman_readable_signaturer
r
r�test_issue21088xs
�zTestCurses.test_issue21088cCsNt�dddd�}tjj|dd�}|��\}}|�|d|d�|�d�dS)NrNrSrTT)Zinsert_moderl)rr`ZtextpadZTextboxrcr�Z_insert_printable_char)rrer�rjr�r
r
r�test_issue13051�s
zTestCurses.test_issue13051N)Prbrcr��classmethodr2rGrrKrMrgrjrsr�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrrrr#r*r+r-r/r1r"r7r<rBrHrIrKrLrOrQrTrZr_rdrrerkrprsrwrxr	�skipIf�getattrrr�r�r�r�r
r
r
rr%7s�
0

40&"
*

!

	8	.







	



		

	


	



�r%c@s4eZdZed�dd��Zed�dd��Zdd�Zd	S)
�	MiscTestsrncCsJt��tjtj}}dt_t_t��|�tj|�|�tj|�dS)Nr)rrnrgrhrarir
r
r�test_update_lines_cols�sz MiscTests.test_update_lines_colsr=cCstj}trtdtj��dd�|�|dd�t�|�t|�d�|�|dt�|�|dt�|�|dt�|�|j	t�|�|j
t�|�|jt�|�|d|j	�|�|d|j
�|�|d|j�|�|j	d�|�|j
d�|�|jd�dS)Nzncurses_version = T)r(rUrrXrT)
rr=rr*r��tuplerar}r��major�minorZpatchZassertGreaterEqual)r�vr
r
r�test_ncurses_version�s"zMiscTests.test_ncurses_versioncCst��}|�|t�dSrI)rr>r�r)r�rr
r
r�test_has_extended_color_support�sz)MiscTests.test_has_extended_color_supportN)rbrcr�rr�r�r�r
r
r
rr��s

r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�	TestAsciicCs&tjjD]}|�ttj|�|�qdSrI)r�asciiZcontrolnamesZ
assertTruer
)rrr
r
r�test_controlnames�s�zTestAscii.test_controlnamescs����fdd�}td�D]��t���t�g�}|tjj|���|tjj|���|tjj|���|tjj|���|tjj	|�	��|tjj
|�
��|tjj�dk�|tjj�dk�|tjj
�dk�|tjj�dkps�dk�|tjj�dv�|tjjd�ko�dkn�|tjjd�ko�dkn�|tjj�tjv�|tjj�tjv�qd	d
dtjtjdfD]����tj������tj������tj������tj������tj�	�����tj�
�����tj������tj�
�����tj������tj������tj������tj������tj������tj����q���tj�d
��dS)NcsT�j�|d����|��|���|��|�Wd�dS1s#wYdS)N)r~r�)r�ra)r�Zexpected�r�r�rr
r�check�s"�z$TestAscii.test_ctypes.<locals>.checkrN�r�rMz 	�~r�rRrX)r��chrr�rr��isalnum�isalpha�isdigit�islower�isspace�isupper�isasciiZismetaZisctrlZiscntrlZisblankZisgraphZisprintZispunct�string�punctuationZisxdigit�	hexdigitsr,�
maxunicoder�)rr��br
r�r�test_ctypes�sF
""zTestAscii.test_ctypescCsDtjj}|�|d�d�|�|d�d�|�|td��td��dS)N�Árt)rr�rar})rr�r
r
r�
test_ascii�szTestAscii.test_asciicCsTtjj}|�|d�d�|�|d�d�|�|d�d�|�|td��td��dS)N�Jr��@�)rr��ctrlrar})rr�r
r
r�	test_ctrl�s
zTestAscii.test_ctrlcCs@tjj}|�|d�d�|�|d�d�|�|td��d�dS)Nr��Šrtr��)rr��altrar})rr�r
r
r�test_altszTestAscii.test_altcCs�tjj}|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d�d�|�|d	�d
�|�|td��d�|�|td��d�|�|d�d�|�|d
�d�|�|td��d�|�|td
��d�dS)Nrlrtr�� �z^?r�z^Jr�z^@r�z!^Jr�z!A)rr�r�rar})rr�r
r
rr�szTestAscii.test_unctrlN)	rbrcr�r�r�r�r�r�r�r
r
r
rr��s-r�cCsTgd�}|��\}}t|d|��D]\}}|�|d|d|||dk��qdS)N)	r�zdolor sit amet,Zconsecteturzadipiscing elit,zsed do eiusmodztempor incididuntzut labore etzdolore magnazaliqua.rrX)rc�	enumerater�)re�textZmaxyZmaxxr!�liner
r
rr�s
$�r��__main__)"rr�r8r�r,r@r	Ztest.supportrrrrrZtest.support.import_helperrrZcurses.panel�ImportErrorrrr"�environ�getr+r@r�rpZTestCaser%r�r�r�rb�mainr
r
r
r�<module>sX�	��k$X�