Your IP : 216.73.216.60


Current Path : /opt/alt/python38/lib64/python3.8/test/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/__pycache__/test_curses.cpython-38.opt-2.pyc

U

i�f��@s:ddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZed�e	d�Ze	d�e	d�zddl
ZWnek
r�YnXdd�Zdd	�Zd
d�Zej�d�Zd
Ze�ep�edkde�e�ejdkd�Gdd�dej���ZGdd�dej�ZGdd�dej�Zdd�Zedk�r6e��dS)�N)�requires�
import_module�verbose�SaveSignals�curseszcurses.asciizcurses.textpadcCst�tt|�d|�S)Nzrequires curses.%s)�unittestZ
skipUnless�hasattrr��name�r�5/opt/alt/python38/lib64/python3.8/test/test_curses.py�requires_curses_funcs�r
cs�fdd�}|S)Ncst�����fdd��}|S)Ncs.t|j��st�d����|f|�|�dS)Nzrequires curses.window.%s)r�stdscrrZSkipTest��self�args�kwargs)r
�testrr�wrappedsz:requires_curses_window_meth.<locals>.deco.<locals>.wrapped��	functools�wraps�rrr	�rr�decosz)requires_curses_window_meth.<locals>.decor)r
rrr	r�requires_curses_window_methsrcst����fdd��}|S)Ncs.t��s|�d�t���|f|�|�dS)N�requires colors support)r�
has_colors�skipTest�start_colorrrrrr)s
z requires_colors.<locals>.wrappedrrrrr�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+dTdU�Z,dVdW�Z-dXdY�Z.dZd[�Z/e0d\d]��Z1e0d^d_��Z2d`da�Z3e0dbdc��Z4e0ddde��Z5e0dfdg��Z6edh�e0didj���Z7dkdl�Z8edm�dndo��Z9edp�dqdr��Z:eds�dtdu��Z;eds�dvdw��Z<eds�dxdy��Z=eds�dzd{��Z>ed|�d}d~��Z?ed�d�d���Z@ed��d�d���ZAd�d��ZBd�d��ZCed��eD�EeFeGd�d��d�kd��d�d����ZHd�d��ZId�d��ZJed.�d�d���ZKd�S)��
TestCursescCs4trtdt��tjdd�tj��}tj|d�dS)NzTERM=T��file�flush)�fd)	r�print�term�sys�stderr�
__stdout__�filenorZ	setupterm)�cls�	stdout_fdrrr�
setUpClass;s
zTestCurses.setUpClasscCsVd|_tj|_tj��}tj��s�t�|�}|�tj|�|�tj	||�tj
��rdtj
}tj
|_nNztdddd�}Wn(tk
r�t
jddd�}d|_YnX|�|j�d|_t�	|��|�t�|_|j��|�|jj�t�r|jdk	�rtj��tj��t|jdd�t��|_|j�rHt��|�tj�|�tj�|j��dS)	NTz/dev/tty�wbr)�	buffering)�moder2Fr$)�isattyr*r,�outputr-�os�dup�
addCleanup�close�dup2�
__stderr__�open�OSError�tempfile�
TemporaryFilerZsave_signalsZsaveZrestorerr+r&�stdoutr(rZinitscrrZsavetty�endwinZresetty�erase)rr/Zdup_fdZtmprrr�setUpDs>








zTestCurses.setUp�filtercCst��dS�N)rrD�rrrr�test_filtertszTestCurses.test_filter�use_envcCst�d�t�d�dS)NFT)rrHrFrrr�test_use_envzs
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����rN)rJrK��)rPrJ)rKrO��)rQrR��rP)�	�
)��)rPrQ)rX���)rZr[rrT)rrT)rPrT)
r�newwin�assertEqual�getbegyxZgetparyx�getmaxyx�subwinZderwinZmvwinZmvderwin)r�win�win2Zwin3rrr�test_create_windows�sTzTestCurses.test_create_windowscCsj|j}|�dddd�}|�dd�|�dd�|�|��d�|�|��d�|��|�|��d	�dS)
NrKrOrPrJrTrWrS)rPrW)rWrU)rr`�mover]�getyxZ	cursyncup)rrrarrr�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�dS)NFTrJrPrZrTrKrOrQrR�syncokZsunos)FT�a)r�refresh�assertIs�
is_wintouchedZtouchwinZ
untouchwinZ	touchlineZis_linetouchedr`ZsyncupZsyncdownrr*�platform�
startswithrg�addch)rrrarbrgrrr�test_refresh_control�sJ

zTestCurses.test_refresh_controlc	Cs^|j}|j}|��|�dd�|�d�|�d�|�d�d}z|�|�WnVtk
rt|�t|j|�Yn4tk
r�|�|�}|�	t
|�dt|��YnX|�dtj
�|�ddd�|�dddtj
�|�|��d	�|��|�dd�|�d�|�d�|�d�|�ttf��|�d�W5QRX|�dtj
�|�|��d
�dS)Nr�A�A�A�€rTrPrQTF)r�encodingrirdrn�UnicodeEncodeError�assertRaises�encode�
OverflowErrorZassertNotEqual�len�reprr�A_BOLDrjrkZechochar)rrrt�cZencodedrrr�test_output_character�s8






z TestCurses.test_output_characterc
Csp|j}|j}|j|jfD]�}|�|j���|�dd�|d�|d�d}z||�Wn$tk
rz|�t|j	|�YnX|dt
j�|ddd�|dddt
j�W5QRXq|j|j
fD]�}|�|j���|�dd�|dd�|d	d�d
}z||d�Wn&tk
�r&|�t|j	|�YnX|dd�|ddt
j�|dddd�|ddddt
j�W5QRXq�dS)NrZabcdsabcduàßçđrTrPrQZ1234s1234u١٢٣٤rJ)rrt�addstr�insstr�subTest�__qualname__rdrurvrwrr{�addnstr�insnstr)rrrt�func�srrr�test_output_strings:


zTestCurses.test_output_stringc
Csp|j}dD]`}|j|d��J|�t|j|�|�t|j|d�|�t|j|�|�t|j|d�W5QRXq
dS)N)zasa)�argrT)rr�rv�
ValueErrorr~r�rr�)rrr�rrr�&test_output_string_embedded_null_chars3sz1TestCurses.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)NrrTZABCDrrrQ�CrZs ABCD s ABrPrWsBCD ���)
rr~rr{rdr]�inch�instrrvr��rrrrr�test_read_from_window=sz TestCurses.test_read_from_windowcCs�t�dddd�}dddd�D]}t�|�q|�|�dd�d�|�|��d	�|�|�dd
�d�|�|��d�|�|��d
�|�|��d�|�|��d�|�|��d�dS)NrJrYrPzspam
rNrQrT�s)rQrTrW�p)rQrW�a�mrK)rr\�ungetchr]Zgetchre�rrar|rrr�
test_getchMszTestCurses.test_getchcCs0t�dddd�}t��|�tj�|�t|jd�|�t|jddd�dddd�D]}t�|�qV|�	|�ddd�d	�|�	|�
dd
�d�|�	|�ddd�d
�|�	|�
dd
�d�|�	|�dd�d�|�	|�
dd
�d�|�	|�d�d�|�	|�
dd
�d�|�	|��d�|�	|�
dd
�d�dS)NrJrYrPip���rQzLorem
ipsum
dolor
sit
amet
rNrTsLors Lo         rKsipsums Lo  ipsum  sdolors     dolor  ssissi   dolor  sametsamet dolor  )rr\�echor8�noechorvr�Zgetstrr�r]r�r�rrr�test_getstr\s"zTestCurses.test_getstrcCs�t�dddd�}t|�|�dd�|��|�|�dd���d�|�|�dd���d�|�dd	�|��|�|�dd���d
�|�|�dd���d�|j	|j
fD]B}t|�|�|�|�dd���d�|�|�dd���d�q�dS)NrJrOrPrrXsLorem iprT�dolor sit amet,rQsLor�)rr\�lorem_ipsumrdZclrtoeolr]r��rstripZclrtobotrB�clear)rrar�rrr�
test_clearrs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)NrJrOrPrsLoem ipsum     rRsLoem ipum      rTsconsectetur    �adipiscing elitrQssed do eiusmod rW�               sLorem ipsum    r�r�)rr\r�rdZdelchr]r�ZdeletelnZinsertlnr�Zinsdelln�rrarrr�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)NrJrOrPTrr�r����r�rQF)rr\r��scrollokZscrollr]r�r�rrr�test_scroll�s


zTestCurses.test_scrollcCsHt�dddd�}|�tj�|�tj�|�tj�|��|��dS)NrJrOrP)rr\Zattronr{ZattroffZattrsetZstandoutZstandendr�rrr�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)NrJrOrPr�Lorem ipsumrQzdolor sit ametrXrRr�r��� rT�L�o�erWr��l�rrKr�r[)
rr\r~rdr�ZA_BLINKr]r�r{ZA_UNDERLINEr�rrr�
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)NrJrOrPrr�)rr��_�_�#�#rrr��#r�)
rr\r~�assertInZgetbkgdZbkgdsetr]Z	A_REVERSEr�Zbkgdr�rrr�test_background�s0





zTestCurses.test_backgroundc	Cs�t�dddd�}t|�t�dddd�}td�D]}|�|dd	�q0|�|�|�|�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)NrJ�rQrWrR�rZrZ_________________ssectetur_________rTspiscing_elit,____rPs_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�irrr�test_overlays.

zTestCurses.test_overlaycCs@t�dddd�}|��|�dd�|��|��t��dS)NrJrOrPrT)rr\ZnoutrefreshZredrawlnZ	redrawwinri�doupdater�rrr�test_refresh%szTestCurses.test_refresh�resizecCsLt�dddd�}|�dd�|�|��d�|�dd�|�|��d�dS)NrJrOrPrW�)rWr�)rJrO)rr\r�r]r_r�rrr�test_resize-s
zTestCurses.test_resize�enclosecCs�t�dddd�}|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd��|�|�dd	��dS)
NrJrOrPrTrWrZ�rRr�)rr\�
assertTruer��assertFalser�rrr�test_enclose5szTestCurses.test_enclosec	Cs�t�dddd�}|�ddd�t���Z}|�|�~|�d�t�|�}|�|�	�d�|�|�
�d�|�|�dd�d	�W5QRXdS)
NrJrYrTrPr�rrS)rJrYs Lorem ipsum)rr\r~r>r?Zputwin�seekZgetwinr]r^r_r�)rra�frrr�test_putwin@s



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)3NrJrKrP�|�!�-r��+�\r��/rs
+--------\rTs
|        !rWs
#________/�|�!�-�_�+�\r��/rr�Br��D�E�F�G�H�I�:�~rXs~~~~~~~~s
:        :�:�~rRs ----- �-rhrQ�ar��;�;)rr\Zborderr]r�rv�	TypeError�boxrdZhliner{ZvlineZ
A_STANDOUTr�r�rrr�test_borders_and_linesLs����
�
�
�
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)
Nrqrprr�
s^J�
rKr�sAB�ZAB�)r]r�unctrlrvr�rxrFrrr�test_unctrl�szTestCurses.test_unctrlcCsT|js|�d�|�t��d�t��|�t��d�t��|�t��d�dS)N�requires terminalFT)r4rrjr�isendwinrAr�rFrrr�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�}|dk	r�|�|t�t�
|d�t�
|d�}|�|t�t�|�t�d�dS)	NZhc�colsrNZcrr��cudrPsabc
)�assertIsInstancerZ	tigetflag�intr]Ztigetnum�tigetstr�bytes�typeZassertIsNoneZtparmZputp)rr�Zcud_2rrr�
test_terminfo�s"

zTestCurses.test_terminfocCsDt�d�t��t��|�t��d�t�d�t�dd�dS)NrTF�d�2)rZdelay_outputZflushinpr�rjr�ZnapmsZnewpadrFrrr�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�NrT)r�rZtermnamer�ZlongnameZbaudrater�Zhas_ic�boolZhas_ilZ	termattrsZkillcharr]ryZ	erasechar)rr|rrr�test_env_queries�szTestCurses.test_env_queriescCs�|j}|�d�|�d�|�d�|�d�|�d�|�d�t|d�r`|�d�|�d�|�d�|�d�|�d�|�d�|�dd�t	�
�t	�d�t	�d�t	��dS)NTF�immedokrJrK)rZclearokZidcokZidlokrrZleaveokr�Z	setscrregrZnonl�nlr�rrr�test_output_options�s&














zTestCurses.test_output_optionscCs6|j}|jrht��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�rTrNrrJ)rr4rZnocbreakZcbreakZ	intrflush�rawZnorawr�r�Z	halfdelayZkeypad�metaZnodelayZ	noqiflushZqiflushZ	notimeoutZtimeoutr�rrr�test_input_options�sB





















zTestCurses.test_input_options�	typeaheadcCst�tj���t�d�dS)NrN)rrr*�	__stdin__r-rFrrr�test_typeaheadszTestCurses.test_typeaheadcCs$|js|�d�t��t��dS)Nr�)r4rrZ
def_prog_modeZreset_prog_moderFrrr�test_prog_modes
zTestCurses.test_prog_modecCsXt�d�dk	st�d�dk	r&t��n.zt��Wn tjk
rR|�d�YnXdS)N�bel�flashz
beep() failed)rr�Zbeep�errorrrFrrr�	test_beep%s�
zTestCurses.test_beepcCsXt�d�dk	st�d�dk	r&t��n.zt��Wn tjk
rR|�d�YnXdS)Nrr
zflash() failed)rr�r
rrrFrrr�
test_flash/s�
zTestCurses.test_flashc	CsRdD]H\}}t�|�dk	r&t�|�qzt�|�Wqtjk
rJYqXqdS)N))rZcivis)rPZcvvis)rTZcnorm)rr�Zcurs_setr)rZvisZcaprrr�
test_curs_set9szTestCurses.test_curs_set�getsyxcCsDt��\}}|�|t�|�|t�t�dd�|�t��d�dS)NrWrJ)rWrJ)rrr�r�Zsetsyxr])r�y�xrrr�test_getsyxCs
zTestCurses.test_getsyxcCsdS�N)l����ll����lr�rrFrrr�
bad_colorsKszTestCurses.bad_colorscCsdSrrrFrrr�	bad_pairsNszTestCurses.bad_pairscCs$|�t��t�|�t��t�dSrE)r�rrr��can_change_colorrFrrr�test_has_colorsQszTestCurses.test_has_colorscCsNt��s|�d�t��trJtdtj��tjd�tdtj	��tjd�dS)Nrz	COLORS = )r%zCOLOR_PAIRS = )
rrrrrr(�COLORSr*r+�COLOR_PAIRSrFrrr�test_start_colorUs
zTestCurses.test_start_colorcCs�|�t�tj�d�t�d�ttjdt�}t�|�|��D]}|�t	tj|�q@tjtkrt|�tj
tjtj�|�tj
tjd�dS)N�rrrrrTrN)r]r�
color_content�COLOR_BLACK�minr�	SHORT_MAXrrvrxr)r�maxcolor�colorrrr�test_color_content]s


zTestCurses.test_color_contentc	Cs�t��s|�d�t�d�}ztjd|��Wn tjk
rN|�d�YnX|jtjdf|��t�dddd�|�t�d�d�t�dddd�|�t�d�d�ttj	dt
�}t�|�}tj|f|��|jtj|f|��t�|ddd�|�t�|�d	�|��D]}|�t
tj|ddd��qtj	t
k�rT|�tjtjtj	ddd�|�tjtjd
ddd�dD]N}|�tjtjd|dd�|�tjtjdd|d�|�tjtjddd|��qpdS)
Nzcannot change colorrz)cannot change color (init_color() failed)r��)r&r&r&rT��)rr'r&rN)rNi�)r)rrrrZ
init_colorrr8r]r!rr"rrvrx)r�oldr#r$�comprrr�test_init_colorjs6


zTestCurses.test_init_colorcCsttjt�SrE)r!rrr"rFrrr�get_pair_limit�szTestCurses.get_pair_limitcCs�ttd�s$|�t�d�tjtjf�t�d�|��d}|dkrLt�|�|��D]}|�t	tj|�qT|�tj
tjd�dS)N�use_default_colorsrrTrN)rrr]�pair_content�COLOR_WHITEr r+rrvrxr)r�maxpair�pairrrr�test_pair_content�s

�

zTestCurses.test_pair_contentcCs�t�d�}tjd|��|jtjdf|��t�ddd�|�t�d�d�ttjdt�}t�d|d�|�t�d�|df�t�dd|�|�t�d�d|f�|��d}|dkr�t�|dd�|�t�|�d�|�	�D]}|�
ttj|dd�q�|�
tjtjddd�|�
�D].}|�
ttjd|d�|�
ttjdd|��qtjtk�r�|�
tjtjdtjd�|�
tjtjddtj�dS)NrTrrLrN)rT)rr-Z	init_pairr8r]r!rr"r+rrvrxrr)rr(r#r/r0r$rrr�test_init_pair�s.
zTestCurses.test_init_paircCshdD]:}t�|�}|�t�|�||�|�t�|tjB�|�q|�t�d�d�|�t�d�d�dS)N)rrTrr)rZ
color_pairr]Zpair_numberr{)rr0�attrrrr�test_color_attrs�s
zTestCurses.test_color_attrsr,cCsht�d�}zt��Wn tjk
r6|�d�YnX|�t�d�d�|�|tjtjfddg�dS)Nrz1cannot change color (use_default_colors() failed)rMrL)	rr-r,rrr]r�r.r )rr(rrr�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)NrrrqrVs^M�s^?rs^@rN�)r]rZkeynamervr�r�r�rFrrr�test_keyname�szTestCurses.test_keyname�has_keycCst�d�dS)NrV)rr9rFrrr�test_has_key�szTestCurses.test_has_key�getmousecCsLt�tj�\}}|dkr"|�d�t�d�t�ddddtj�t��}dS)Nrzmouse stuff not availablerK)rZ	mousemaskZBUTTON1_PRESSEDrZ
mouseintervalZ
ungetmouser;)rZ	availmaskZoldmask�mrrr�
test_getmouse�s

zTestCurses.test_getmouse�panelc	CsBt�dd�}tj�|�}|jtjjdd��|��W5QRXdS)NrKz!userptr should fail since not set)�msg)rr\r>�	new_panelrvrZuserptr)r�w�prrr�test_userptr_without_set�s
�z#TestCurses.test_userptr_without_setcCsbt�dd�}tj�|�}t�}t�|�}td�D]}|�|�q0|�d�|�	t�|�|d�dS)NrKr�zset_userptr leaked references)
rr\r>r@�objectr*�getrefcountr��set_userptrr])rrArB�objZnrefsr�rrr�test_userptr_memory_leak�s

�z#TestCurses.test_userptr_memory_leakcsDt�dd�}tj�|��G�fdd�d�}��|����d�dS)NrKcseZdZ�fdd�ZdS)z+TestCurses.test_userptr_segfault.<locals>.Acs��d�dSrE)rFrF�r>rr�__del__�sz3TestCurses.test_userptr_segfault.<locals>.A.__del__N)�__name__�
__module__r�rJrrIrrrp�srp)rr\r>r@rF)rrArprrIr�test_userptr_segfault�s
z TestCurses.test_userptr_segfaultcCs,t�dd�}tj�|�}|�tt|��dS)NrK)rr\r>r@rvr�r�)rrAr>rrr�test_new_curses_panelsz TestCurses.test_new_curses_panel�is_term_resizedcCsBtjtj}}|�t�||�d�|�t�|d|d�d�dS)NFrTT)r�LINES�COLSrjrO�r�linesr�rrr�test_is_term_resized	szTestCurses.test_is_term_resized�resize_termcCszt��tjtj}}|d}|d}t�||�|�tj|�|�tj|�t�||�|�tj|�|�tj|�dSr�)r�update_lines_colsrPrQrUr]�rrSr�Z	new_linesZnew_colsrrr�test_resize_termszTestCurses.test_resize_term�
resizetermcCszt��tjtj}}|d}|d}t�||�|�tj|�|�tj|�t�||�|�tj|�|�tj|�dSr�)rrVrPrQrYr]rWrrr�test_resizetermszTestCurses.test_resizetermcCsXt�d�|�|j��d�t�d�|�|j��d�t�d�|�|j��d�dS)Nrqrp�Br��C)rr�r]r�getkeyrFrrr�test_ungetch+s


zTestCurses.test_ungetchcCst�d�|j��dS)Ni)rr�rr]rFrrr�test_issue62433s
zTestCurses.test_issue6243�	unget_wch�ncurses_version)�c)rJrXz.unget_wch is broken in ncurses 5.7 and earliercCs�|j}|j}dD]�}z|�|�Wntk
r:YqYnXzt�|�Wn8tk
r�}z|�d||j|f�W5d}~XYnX|��}|�	||�t
|�}t�|�|��}|�	||�qdS)N)rh�érsu􏿿z)unget_wch(%a) failed with encoding %s: %s)rrtrwrurr`�	ExceptionZfailZget_wchr]�ord)rrrt�ch�err�read�coderrr�test_unget_wch7s&

�
zTestCurses.test_unget_wchc	Cs^|j}ddl}|j}|�|�|�t��d|_W5QRX||_|�t��
|`W5QRXdS)NrrK)r�codecsrt�lookuprvr�)rrrkrtrrr�
test_encodingOs
zTestCurses.test_encodingcCsX|j}zt�|j�}|�|�Wntk
r4YnX|jj�d�d}|�d|�dS)Nr�rz[y, x,])	r�inspect�	signaturernr�r��__doc__�splitr�)rrroZhuman_readable_signaturerrr�test_issue21088Zs
	zTestCurses.test_issue21088cCsNt�dddd�}tjj|dd�}|��\}}|�|d|d�|�d�dS)NrJrOrPT)Zinsert_moderh)rr\ZtextpadZTextboxr_r�Z_insert_printable_char)rrar�rSr�rrr�test_issue13051vs
zTestCurses.test_issue13051N)LrKrLr��classmethodr0rCr
rGrIrcrfror}r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�rrrr
rrrrrrrrrr r%r*r+r1r2r4r5r8r:r=rCrHrMrNrTrXrZr^r_r�skipIf�getattrrrjrmrrrsrrrrr#5s�
0

40!"
*

!


8	.






 



		

	


	





�r#c@s,eZdZed�dd��Zed�dd��ZdS)�	MiscTestsrVcCsJt��tjtj}}dt_t_t��|�tj|�|�tj|�dS)Nr)rrVrPrQr]rRrrr�test_update_lines_cols�sz MiscTests.test_update_lines_colsracCstj}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&rQrrTrP)
rrarr(r��tupler]ryr��major�minorZpatchZassertGreaterEqual)r�vrrr�test_ncurses_version�s"zMiscTests.test_ncurses_versionN)rKrLr�r
rxr}rrrrrw�s
rwc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�	TestAsciicCs&tjjD]}|�ttj|�|�qdSrE)r�asciiZcontrolnamesr�r)rr
rrr�test_controlnames�szTestAscii.test_controlnamescs����fdd�}td�D�]T�t���t�g�}|tjj|���|tjj|���|tjj|���|tjj|���|tjj	|�	��|tjj
|�
��|tjj�dk�|tjj�dk�|tjj
�dk�|tjj�dkp�dk�|tjj�dk�|tjjd�k�odkn�|tjjd�k�o>dkn�|tjj�tjk�|tjj�tjk�qd	d
dtjtjdfD�]���tj������tj������tj������tj������tj�	�����tj�
�����tj������tj�
�����tj������tj������tj������tj������tj������tj�����q���tj�d
��dS)Nc	s>�j�|d��&��|��|���|��|�W5QRXdS)N)rfr�)r�r])r�Zexpected�r|r�rrr�check�sz$TestAscii.test_ctypes.<locals>.checkr7�r�r6z 	�~r�rNrT)r��chrr�rr�isalnum�isalpha�isdigit�islower�isspace�isupper�isasciiZismetaZisctrlZiscntrlZisblankZisgraphZisprintZispunct�stringZpunctuationZisxdigitZ	hexdigitsr*�
maxunicoder�)rr��brr�r�test_ctypes�sF
$$zTestAscii.test_ctypescCsDtjj}|�|d�d�|�|d�d�|�|td��td��dS)N�Árp)rrr]re)rrrrr�
test_ascii�szTestAscii.test_asciicCsTtjj}|�|d�d�|�|d�d�|�|d�d�|�|td��td��dS)N�Jr��@�)rr�ctrlr]re)rr�rrr�	test_ctrl�s
zTestAscii.test_ctrlcCs@tjj}|�|d�d�|�|d�d�|�|td��d�dS)Nr��Šrpr��)rr�altr]re)rr�rrr�test_alt�szTestAscii.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)Nrhrpr�� �z^?r�z^Jr�z^@r�z!^Jr�z!A)rrr�r]re)rr�rrrr��szTestAscii.test_unctrlN)	rKrLr�r�r�r�r�r�r�rrrrr~�s-r~cCsbddddddddd	g	}|��\}}t|d|��D]*\}}|�|d
|d|||dk��q2dS)Nr�zdolor sit amet,Zconsecteturzadipiscing elit,zsed do eiusmodztempor incididuntzut labore etzdolore magnazaliqua.rrT)r_�	enumerater~)ra�textZmaxyZmaxxr�linerrrr��s�r��__main__)rrnr6r�r*r>rZtest.supportrrrrrZcurses.panel�ImportErrorr
rr �environ�getr)r"rurlZTestCaser#rwr~r�rK�mainrrrr�<module>sP	��O X