Your IP : 216.73.216.52


Current Path : /opt/alt/python310/lib64/python3.10/test/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/__pycache__/test_curses.cpython-310.opt-2.pyc

o

0�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
�7/opt/alt/python310/lib64/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_signalsZsaveZrestorerr-r(�stdoutr*rZinitscrrZsavetty�endwinZresetty�erase)rr1Zdup_fd�tmpr
r
r�setUpFs@





�



zTestCurses.setUp�filtercCst��dS�N)rrG�rr
r
r�test_filtervszTestCurses.test_filter�use_envcCst�d�t�d�dS)NFT)rrKrIr
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����rQ)rMrN��)rSrM)rNrR��)rTrU��rS)�	�
)��)rSrT)r[���)r]r^rrW)rrW)rSrW)
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)
NrNrRrSrMrWrZrV)rSrZ)rZrX)rrc�mover`�getyxZ	cursyncup)rrrdr
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)NFTrMrSr]rWrNrRrTrU�syncokZsunos)FT�a)r�refresh�assertIs�
is_wintouchedZtouchwinZ
untouchwinZ	touchlineZis_linetouchedrcZsyncupZsyncdownr
r,�platform�
startswithrj�addch)rrrdrerjr
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�€rWrSrTTuĔF)r�encodingrlrgrq�UnicodeEncodeError�assertRaises�encode�
OverflowErrorZassertNotEqual�len�reprr�A_BOLDrmrnZechochar)rrrw�cZencodedr
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àßçđrWrSrTZ1234s1234u١٢٣٤rM)rrw�addstr�insstr�subTest�__qualname__rgrxryrzrr~�addnstr�insnstr)rrrw�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)�argrW)rr�ry�
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)NrrWZABCDrurT�Cr]s ABCD s ABrSrZsBCD ���)
rr�rr~rgr`�inch�instrryr��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)NrMr\rSzspam
rQrTrW�s)rTrWrZ�p)rTrZ�a�mrN)rr_�ungetchr`Zgetchrh�rrdrr
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)NrMr\rSip���rTzLorem
ipsum
dolor
sit
amet
rQrWsLors Lo         rNsipsums Lo  ipsum  sdolors     dolor  ssissi   dolor  sametsamet dolor  )rr_�echor:�noechoryr�Zgetstrr�r`r�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)NrMrRrSrr[sLorem iprW�dolor sit amet,rTsLor�)rr_�lorem_ipsumrgZclrtoeolr`r��rstripZclrtobotrD�clear)rrdr�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)NrMrRrSrsLoem ipsum     rUsLoem ipum      rWsconsectetur    �adipiscing elitrTssed do eiusmod rZ�               sLorem ipsum    r�r�)rr_r�rgZdelchr`r�ZdeletelnZinsertlnr�Zinsdelln�rrdr
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)NrMrRrSTrr�r����r�rTF)rr_r��scrollokZscrollr`r�r�r
r
r�test_scroll�s


zTestCurses.test_scrollcCsHt�dddd�}|�tj�|�tj�|�tj�|��|��dS)NrMrRrS)rr_Zattronr~ZattroffZattrsetZstandoutZstandendr�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)NrMrRrSr�Lorem ipsumrTzdolor sit ametr[rUr�r��� rW�L�o�erZr��l�rrNr�r^)
rr_r�rgr�ZA_BLINKr`r�r~ZA_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)NrMrRrSrr�)rr��_�_�#�#rur��#r�)
rr_r��assertInZgetbkgdZbkgdsetr`Z	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)NrM�rTrZrU�r]rZ_________________ssectetur_________rWspiscing_elit,____rSs_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�Zoverlayr`r�Z	overwrite)rZsrcwinZdstwin�ir
r
r�test_overlays.

zTestCurses.test_overlaycCs@t�dddd�}|��|�dd�|��|��t��dS)NrMrRrSrW)rr_ZnoutrefreshZredrawlnZ	redrawwinrl�doupdater�r
r
r�test_refresh,szTestCurses.test_refresh�resizecCsLt�dddd�}|�dd�|�|��d�|�dd�|�|��d�dS)NrMrRrSrZ�)rZr�)rMrR)rr_r�r`rbr�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)NrMrRrSTrWFrZr]�rUr�)rr_rmr�r�r
r
r�test_enclose<szTestCurses.test_enclosecCs�t�dddd�}|�ddd�t���3}|�|�~|�d�t�|�}|�|�	�d�|�|�
�d�|�|�dd�d	�Wd�dS1sIwYdS)
NrMr\rWrSr�rrV)rMr\s Lorem ipsum)rr_r�r@rAZputwin�seekZgetwinr`rarbr�)rrd�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)3NrMrNrS�|�!�-r��+�\r��/rs
+--------\rWs
|        !rZs
#________/�|�!�-�_�+�\r��/ru�Br��D�E�F�G�H�I�:�~r[s~~~~~~~~s
:        :�:�~rUs ----- �-rkrT�ar��;�;)rr_Zborderr`r�ry�	TypeError�boxrgZhliner~ZvlineZ
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)
Nrtrsru�
s^J�
rNr�sAB�ZAB�)r`r�unctrlryr�r{rIr
r
r�test_unctrl�szTestCurses.test_unctrlcCsT|js|�d�|�t��d�t��|�t��d�t��|�t��d�dS)N�requires terminalFT)r6r rmr�isendwinrCr�rIr
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�colsrQZcrr��cudrSsabc
)�assertIsInstancerZ	tigetflag�intr`Ztigetnum�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)NrWF�d�2)rZdelay_outputZflushinpr�rmr�ZnapmsZnewpadrIr
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�NrW)r�rZtermnamer�ZlongnameZbaudrater�Zhas_ic�boolZhas_ilZ	termattrsZkillcharr`r|Z	erasechar)rrr
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�immedokrMrN)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�rWrQrrM)rr6rZnocbreakZcbreakZ	intrflush�rawZnorawr�r�Z	halfdelayZkeypad�metaZnodelayZ	noqiflushZqiflushZ	notimeoutZtimeoutr�r
r
r�test_input_options�sB





















zTestCurses.test_input_options�	typeaheadcCst�tj���t�d�dS)NrQ)rr	r,�	__stdin__r/rIr
r
r�test_typeahead szTestCurses.test_typeaheadcCs$|js|�d�t��t��dS)Nr�)r6r rZ
def_prog_modeZreset_prog_moderIr
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 rIr
r
r�	test_beep+��zTestCurses.test_beepcCr
)Nrrzflash() failed)rr�rrr rIr
r
r�
test_flash5rzTestCurses.test_flashc	CsNdD]"\}}t�|�durt�|�qzt�|�Wqtjy$YqwdS)N))rZcivis)rSZcvvis)rWZcnorm)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_escdelayr`)rZescdelayr
r
r�
test_escdelayI�

zTestCurses.test_escdelay�get_tabsizecCr)NrZ)rrr�r�Zset_tabsizer`)r�tabsizer
r
r�test_tabsizeQrzTestCurses.test_tabsize�getsyxcCsDt��\}}|�|t�|�|t�t�dd�|�t��d�dS)NrZrM)rZrM)rrr�r�Zsetsyxr`)r�y�xr
r
r�test_getsyxYs
zTestCurses.test_getsyxcCsdtjdddddfS)NrQ��������r��r�COLORSrIr
r
r�
bad_colorsaszTestCurses.bad_colorscCstjdddfS)Nr"r$r�r%rIr
r
r�bad_colors2d�zTestCurses.bad_colors2cCsdS)N)rQr!r"r#r$r�r
rIr
r
r�	bad_pairsgszTestCurses.bad_pairscCs$|�t��t�|�t��t�dSrH)r�rrr�can_change_colorrIr
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_PAIRSrIr
r
r�test_start_colorns
�zTestCurses.test_start_colorcCsT|�t�tj�d�t�d�tjd}t�|�|��D]
}|�ttj|�qdS)N�rrrrrW)r`r�
color_content�COLOR_BLACKr&r'ryr�)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)r/��)r5r5r5rW��)rr6r5)rQi�)rr+r r0Z
init_colorrr:r`r&r'ryr�)r�oldr2r3�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_versionrSrW)r]rW)r]rSr)
rr-r
�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_colorsrrW)
r
rr`�pair_content�COLOR_WHITEr1r?r*ryr�)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)NrWrrO)rrAr>r:r`r&r?r*ryr�r()rr7r2rCrDr3r
r
r�test_init_pair�s(

�zTestCurses.test_init_paircCshdD]}t�|�}|�t�|�||�|�t�|tjB�|�q|�t�d�d�|�t�d�d�dS)N)rrWrr)rZ
color_pairr`Zpair_numberr~)rrD�attrr
r
r�test_color_attrs�s
zTestCurses.test_color_attrsr@cCsft�d�}zt��Wntjy|�d�Ynw|�t�d�d�|�|tjtjfddg�dS)Nrz1cannot change color (use_default_colors() failed)rPrO)	rrAr@rr r`r�rBr1)rr7r
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)NrurtrYs^M�s^?rs^@rQ�)r`rZkeynameryr�r�r�rIr
r
r�test_keyname�szTestCurses.test_keyname�has_keycCst�d�dS)NrY)rrMrIr
r
r�test_has_key�szTestCurses.test_has_key�getmousecCsLt�tj�\}}|dkr|�d�t�d�t�ddddtj�t��}dS)Nrzmouse stuff not availablerN)rZ	mousemaskZBUTTON1_PRESSEDr Z
mouseintervalZ
ungetmouserO)rZ	availmaskZoldmask�mr
r
r�
test_getmouse�s

zTestCurses.test_getmouse�panelcCsXt�dd�}tj�|�}|jtjjdd��
|��Wd�dS1s%wYdS)NrNz!userptr should fail since not set)�msg)rr_rR�	new_panelryrZuserptr)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)NrNr�zset_userptr leaked references)
rr_rRrT�objectr,�getrefcountr��set_userptrr`)rrUrV�objZnrefsr�r
r
r�test_userptr_memory_leaks

�z#TestCurses.test_userptr_memory_leakcsDt�dd�}tj�|��G�fdd�d�}��|����d�dS)NrNcseZdZ�fdd�ZdS)z+TestCurses.test_userptr_segfault.<locals>.Acs��d�dSrH)rZrI�rRr
r�__del__r)z3TestCurses.test_userptr_segfault.<locals>.A.__del__N)�__name__�
__module__r�r^r
r]r
rrssrs)rr_rRrTrZ)rrUrsr
r]r�test_userptr_segfaults
z TestCurses.test_userptr_segfaultcCs*t�dd�}tj�|�}t|t|��dS)NrN)rr_rRrTrr�)rrUrRr
r
r�test_disallow_instantiationsz&TestCurses.test_disallow_instantiation�is_term_resizedcCsBtjtj}}|�t�||�d�|�t�|d|d�d�dS)NFrWT)r�LINES�COLSrmrc�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_colsrdrerir`�rrgr�Z	new_linesZnew_colsr
r
r�test_resize_term-�zTestCurses.test_resize_term�
resizetermcCrjr�)rrkrdreror`rlr
r
r�test_resizeterm;rnzTestCurses.test_resizetermcCsXt�d�|�|j��d�t�d�|�|j��d�t�d�|�|j��d�dS)Nrtrs�Br��C)rr�r`r�getkeyrIr
r
r�test_ungetchIs


zTestCurses.test_ungetchcCst�d�|j��dS)Ni)rr�rrsrIr
r
r�test_issue6243Qs
zTestCurses.test_issue6243�	unget_wchr:)�c)rMr[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)rk�érvu􏿿z)unget_wch(%a) failed with encoding %s: %s)rrwrzrxrrv�	ExceptionZfailZget_wchr`�ord)rrrw�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)NrrN)r�codecsrw�lookupryr�)rrr�rwr
r
r�
test_encodingms
�"�zTestCurses.test_encodingcCsV|j}z
t�|j�}|�|�Wn	tyYnw|jj�d�d}|�d|�dS)Nr�rz[y, x,])	r�inspect�	signaturerq�assertFalser��__doc__�splitr�)rrr�Zhuman_readable_signaturer
r
r�test_issue21088xs
�zTestCurses.test_issue21088cCsNt�dddd�}tjj|dd�}|��\}}|�|d|d�|�d�dS)NrMrRrST)Zinsert_moderk)rr_ZtextpadZTextboxrbr�Z_insert_printable_char)rrdr�rgr�r
r
r�test_issue13051�s
zTestCurses.test_issue13051N)Pr_r`r��classmethodr2rFrrJrLrfrirrr�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrrr r'r(r*r,r.r"r4r9r?rErFrHrIrLrNrQrWr\rarrbrhrmrprtrur	�skipIf�getattrrrr�r�r�r
r
r
rr%7s�
0

40&"
*

!

	8	.







	



		

	


	



�r%c@s4eZdZed�dd��Zed�dd��Zdd�Zd	S)
�	MiscTestsrkcCsJt��tjtj}}dt_t_t��|�tj|�|�tj|�dS)Nr)rrkrdrer`rfr
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(rTrrWrS)
rr:rr*r��tupler`r|r��major�minorZpatchZassertGreaterEqual)r�vr
r
r�test_ncurses_version�s"zMiscTests.test_ncurses_versioncCst��}|�|t�dSrH)rr;r�r)r�rr
r
r�test_has_extended_color_support�sz)MiscTests.test_has_extended_color_supportN)r_r`r�rr�r�r�r
r
r
rr��s

r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�	TestAsciicCs&tjjD]}|�ttj|�|�qdSrH)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�r`)r�Zexpected�rr�rr
r�check�s"�z$TestAscii.test_ctypes.<locals>.checkrK�r�rJz 	�~r�rQrW)r��chrr�rr��isalnum�isalpha�isdigit�islower�isspace�isupper�isasciiZismetaZisctrlZiscntrlZisblankZisgraphZisprintZispunct�stringZpunctuationZisxdigitZ	hexdigitsr,�
maxunicoder�)rr��br
r�r�test_ctypes�sF
""zTestAscii.test_ctypescCsDtjj}|�|d�d�|�|d�d�|�|td��td��dS)N�Árs)rr�r`rz)rr�r
r
r�
test_ascii�szTestAscii.test_asciicCsTtjj}|�|d�d�|�|d�d�|�|d�d�|�|td��td��dS)N�Jr��@�)rr��ctrlr`rz)rr�r
r
r�	test_ctrl�s
zTestAscii.test_ctrlcCs@tjj}|�|d�d�|�|d�d�|�|td��d�dS)Nr��Šrsr��)rr��altr`rz)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)Nrkrsr�� �z^?r�z^Jr�z^@r�z!^Jr�z!A)rr�r�r`rz)rr�r
r
rr�szTestAscii.test_unctrlN)	r_r`r�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.rrW)rb�	enumerater�)rd�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�roZTestCaser%r�r�r�r_�mainr
r
r
r�<module>sX�	��k$X�