Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_curses.cpython-311.pyc
�

�KeT���R�ddlZddlZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZddl
mZed��ed��Zed��ed��	ddlZn#e$rYnwxYwd�Zd�Zd	�Zej�d
��ZdZejepedkd
ez��ejejdkd��Gd�dej������ZGd�dej��ZGd�dej��Zd�Ze dkrej!��dSdS)�N)�requires�verbose�SaveSignals�cpython_only�check_disallow_instantiation)�
import_module�curseszcurses.asciizcurses.textpadc�X�tjtt|��d|z��S)Nzrequires curses.%s)�unittest�
skipUnless�hasattrr	)�names �:/usr/local/apps/python3/lib/python3.11/test/test_curses.py�requires_curses_funcrs+����w�v�t�4�4�3�d�:�<�<�<�c����fd�}|S)Nc�J���tj�����fd���}|S)Nc�x��t|j���stjd�z����|g|�Ri|��dS)Nzrequires curses.window.%s)r
�stdscrr�SkipTest)�self�args�kwargsr�tests   ��r�wrappedz:requires_curses_window_meth.<locals>.deco.<locals>.wrapped!sU����4�;��-�-�
L��'�(C�d�(J�K�K�K��D��'��'�'�'��'�'�'�'�'r��	functools�wraps)rrrs` �r�decoz)requires_curses_window_meth.<locals>.deco s>����	���	�	�	(�	(�	(�	(�	(�
�	�	(��r�)rrs` r�requires_curses_window_methr!s#���������Krc�F��tj����fd���}|S)Nc���tj��s|�d��tj���|g|�Ri|��dS)N�requires colors support)r	�
has_colors�skipTest�start_color)rrrrs   �rrz requires_colors.<locals>.wrapped+s\���� �"�"�	5��M�M�3�4�4�4��������T�#�D�#�#�#�F�#�#�#�#�#rr)rrs` r�requires_colorsr(*s8����_�T���$�$�$�$���$�
�Nr�TERMi��unknownz*$TERM=%r, calling initscr() may cause exit�cygwinz!cygwin's curses mostly just hangsc�<�eZdZed���Zd�Zed��d���Zed��d���Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zed��d���Zd�Zd�Zd�Zed��d���Zed��d���Zd�Zd�Zd�Zd �Z d!�Z!d"�Z"d#�Z#d$�Z$d%�Z%ed&��d'���Z&d(�Z'd)�Z(d*�Z)d+�Z*ed,��d-���Z+ed.��d/���Z,ed0��d1���Z-d2�Z.d3�Z/d4�Z0d5�Z1d6�Z2e3d7���Z4e3d8���Z5d9�Z6e3d:���Z7e3d;���Z8e3d<���Z9ed=��e3d>�����Z:d?�Z;ed@��dA���Z<edB��dC���Z=edD��dE���Z>edD��dF���Z?edD��dG���Z@eAedD��dH�����ZBedI��dJ���ZCedK��dL���ZDedM��dN���ZEdO�ZFdP�ZGedQ��eHjIeJeKdRdS��dTkdU��dV�����ZLdW�ZMdX�ZNed��dY���ZOdZS)[�
TestCursesc���tr$tdt��tjd���tj���}tj|���dS)NzTERM=T��file�flush)�fd)	r�print�term�sys�stderr�
__stdout__�filenor	�	setupterm)�cls�	stdout_fds  r�
setUpClasszTestCurses.setUpClass=sV���	?��.�$�.�.�s�z��>�>�>�>��N�)�)�+�+�	���I�&�&�&�&�&�&rc�L�d|_tj|_tj���}tj����stj|��}|�t
j|��|�t
j	||��tj
���rtj
}tj
|_nb	tddd���}n-#t$r tjdd���}d|_YnwxYw|�|j��d|_tj	|���|��t��|_|j���|�|jj��t&rY|j�Rtj���tj���t/|jd���t1j��|_|jrQt1j��|�t0j��|�t0j��|j���dS)	NTz/dev/tty�wbr)�	buffering)�moder?Fr/)�isattyr5r7�outputr8�os�dup�
addCleanup�close�dup2�
__stderr__�open�OSError�tempfile�
TemporaryFiler�save_signals�save�restorerr6r1�stdoutr3r	�initscrr�savetty�endwin�resetty�erase)rr;�dup_fd�tmps    r�setUpzTestCurses.setUpFs������n����N�)�)�+�+�	��~�$�$�&�&�	-��V�I�&�&�F��O�O�B�H�f�-�-�-��O�O�B�G�V�Y�7�7�7��~�$�$�&�&�
#��n��!�n����	(��z�4�1�=�=�=�C�C���(�(�(�
#�0�d�a�H�H�H�C�"'�D�K�K�K�
(��������	�*�*�*�"����G�C�J�J�L�L�)�,�,�,�'�M�M������� � � �����)�1�2�2�2��	0�t�{�.��J�������J�������t�{�$�/�/�/�/��n�&�&����;�	,��N�����O�O�F�M�*�*�*��O�O�F�N�+�+�+���������s�(C;�;'D%�$D%�filterc�,�tj��dS�N)r	rY�rs r�test_filterzTestCurses.test_filtervs��	�
�����r�use_envc�V�tjd��tjd��dS)NFT)r	r^r\s r�test_use_envzTestCurses.test_use_env|s*��	��u������t�����rc���tjdd��}|�|���d��|�|���d��|�|���d��tjdddd��}|�|���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����rf)rbrc��)rhrb)rcrg��)rirj��rh)�	�
)��)rhri)rp���)rrrsrrl)rrl)rhrl)
r	�newwin�assertEqual�getbegyx�getparyx�getmaxyx�subwin�derwin�mvwin�mvderwin)r�win�win2�win3s    r�test_create_windowszTestCurses.test_create_windows�s����m�A�r�"�"�����������0�0�0����������2�2�2����������1�1�1��m�B��A�q�)�)�����������0�0�0����������2�2�2����������2�2�2��z�z�!�Q������������&�1�1�1���������&�1�1�1���������'�2�2�2��z�z�!�R��A�&�&����������&�1�1�1���������&�1�1�1���������'�2�2�2��z�z�!�Q������������&�1�1�1���������&�1�1�1���������'�2�2�2��z�z�!�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�2rc��|j}|�dddd��}|�dd��|�dd��|�|���d��|�|���d��|���|�|���d	��dS)
Nrcrgrhrbrlrork)rhro)rorm)rry�moveru�getyx�	cursyncup)rrr}s   r�test_move_cursorzTestCurses.test_move_cursor�s�������m�m�B��A�q�)�)�����A�q��������A�������������0�0�0���������f�-�-�-��
�
�������������0�0�0�0�0rc�(�|j}|���|�|���d��|���|�|���d��|���|�|���d��|���|�|���d��|���|�|���d��|�dd��|�|�d��d��|�|�d��d��|�|���d��|�ddd��|�|�d��d��|�dddd��}|�ddd	d
��}|���|���|�	��|�|���d��|�|���d��|���|���|���|�
��|�|���d��t|d��r�tj
�d��s�|���|���d
D]�}|�|��|�d��|�|���|��|�|���|���}dSdSdS)NFTrbrhrrrlrcrgrirj�syncok�sunos)FT�a)r�refresh�assertIs�
is_wintouched�touchwin�
untouchwin�	touchline�is_linetouchedry�syncup�syncdownr
r5�platform�
startswithr��addch)rrr}r~r�s     r�test_refresh_controlzTestCurses.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�����A�u�%�%�%��
�
�f�+�+�A�.�.��6�6�6��m�m�B��A�q�)�)���z�z�!�R��A�&�&���
�
�������������
�
�
��
�
�c�'�'�)�)�4�0�0�0��
�
�f�*�*�,�,�d�3�3�3�	�������������������
�
�����
�
�d�(�(�*�*�D�1�1�1��6�8�$�$�	>�S�\�-D�-D�W�-M�-M�	>��N�N����������'�
>�
>�����F�#�#�#��
�
�3�����
�
�c�/�/�1�1�6�:�:�:��
�
�f�2�2�4�4�f�=�=�=�=�	>�	>�	>�	>�
>�
>rc�*�|j}|j}|���|�dd��|�d��|�d��|�d��d}	|�|��n�#t
$r$|�t
|j|��YnUt$rI|�|��}|�	t|��dt|����YnwxYw|�dtj
��|�ddd��|�dddtj
��|�|���d	��|���|�dd��|�d��|�d��|�d��|�t
tf��5|�d
��ddd��n#1swxYwY|�dtj
��|�|���d��dS)Nr�A�A�A�€rlrhriTuĔF)r�encodingr�r�r��UnicodeEncodeError�assertRaises�encode�
OverflowError�assertNotEqual�len�reprr	�A_BOLDr�r��echochar)rrr��c�encodeds     r�test_output_characterz TestCurses.test_output_character�s�������?�����������A�q�������S�������T�������R������	@��L�L��O�O�O�O��!�	F�	F�	F����0�!�(�H�E�E�E�E�E��	@�	@�	@��h�h�x�(�(�G�����G���a��g���?�?�?�?�?�	@����	���S�&�-�(�(�(����Q��3�������Q��3��
�.�.�.��
�
�f�*�*�,�,�d�3�3�3�	���������A�q�������������������������
�
�
� 2�M�B�
C�
C�	&�	&�
�O�O�H�%�%�%�
	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	����V�]�+�+�+��
�
�f�*�*�,�,�e�4�4�4�4�4s+�;B�+D�>AD�D�I�I�Ic	���|j}|j}|j|jfD]�}|�|j��5|�dd��|d��|d��d}	||��n1#t$r$|�t|j	|��YnwxYw|dtj��|ddd��|dddtj��ddd��n#1swxYwY��|j|j
fD]�}|�|j��5|�dd��|dd��|d	d��d
}	||d��n1#t$r$|�t|j	|��YnwxYw|dd��|ddtj��|dddd��|ddddtj��ddd��n#1swxYwY��dS)Nr�abcdsabcduàßçđrlrhri�1234s1234u١٢٣٤rb)rr��addstr�insstr�subTest�__qualname__r�r�r�r�r	r��addnstr�insnstr)rrr��func�ss     r�test_output_stringzTestCurses.test_output_strings�������?���]�F�M�2�	2�	2�D����d�/�0�0�
2�
2����A�q�!�!�!���V������W�
�
�
���N��D��G�G�G�G��)�N�N�N��%�%�&8�!�(�H�M�M�M�M�M�N������V�V�]�+�+�+���Q��6�"�"�"���Q��6�6�=�1�1�1�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2���^�V�^�4�
	5�
	5�D����d�/�0�0�
5�
5����A�q�!�!�!���V�Q������W�a� � � �.��N��D��A�J�J�J�J��)�N�N�N��%�%�&8�!�(�H�M�M�M�M�M�N������V�Q������V�Q��
�.�.�.���Q��6�1�%�%�%���Q��6�1�f�m�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5��
	5�
	5sl�/C-�)A5�4C-�5+B#� C-�"B#�#>C-�-C1	�4C1	�#1G)�E"�!G)�"+F�
G)�F�A
G)�)G-	�0G-	c��|j}dD]�}|�|���5|�t|j|��|�t|j|d��|�t|j|��|�t|j|d��ddd��n#1swxYwY��dS)N)zasa)�argrl)rr�r��
ValueErrorr�r�r�r�)rrr�s   r�&test_output_string_embedded_null_charsz1TestCurses.test_output_string_embedded_null_chars:s
�����"�	F�	F�C����#��&�&�
F�
F��!�!�*�f�m�S�A�A�A��!�!�*�f�n�c�1�E�E�E��!�!�*�f�m�S�A�A�A��!�!�*�f�n�c�1�E�E�E�	
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F����
F�
F�
F�
F��	F�	Fs�BB5�5B9	�<B9	c��|j}|�dddtj��|�dd��|�|���dtjz��|�|�dd��dtjz��|�dd��|�|���dd�d��|�|�d��dd�d	��|�|�dd
��dd�d��|�|�dd
d��d��|�t|jd
��|�t|jdd
d
��dS)Nrrl�ABCDr�ri�Crrs ABCD s ABrhrosBCD ���)
rr�r	r�r�ru�inch�instrr�r��rrs  r�test_read_from_windowz TestCurses.test_read_from_windowDs|������
�
�a��F�F�M�2�2�2����A�q�������������V�]�(:�;�;�;�������Q��*�*�B���,>�?�?�?����A�q���������������+�Y�7�7�7�������a����!��,�f�5�5�5�������a��+�+�B�Q�B�/��9�9�9�������a��A�.�.��8�8�8����*�f�l�B�7�7�7����*�f�l�A�q�"�=�=�=�=�=rc��tjdddd��}dddd�D]}tj|���|�|�dd��d��|�|���d	��|�|�dd
��d��|�|���d��|�|���d
��|�|���d��|�|���d��|�|���d��dS)Nrbrqrhzspam
rfrirl�s)rirlro�p)riro�a�mrc)r	rt�ungetchru�getchr��rr}r�s   r�
test_getchzTestCurses.test_getchTsC���m�A�r�1�a�(�(���$�$�B�$��	�	�A��N�1�����������1�a���'�2�2�2���������f�-�-�-�������1�a���'�2�2�2���������f�-�-�-���������g�.�.�.���������f�-�-�-���������g�.�.�.���������h�/�/�/�/�/rc��tjdddd��}tj��|�tj��|�t|jd��|�t|jddd��dddd�D]}tj|���|�	|�ddd��d	��|�	|�
dd
��d��|�	|�ddd��d
��|�	|�
dd
��d��|�	|�dd��d��|�	|�
dd
��d��|�	|�d��d��|�	|�
dd
��d��|�	|���d��|�	|�
dd
��d��dS)Nrbrqrhip���rizLorem
ipsum
dolor
sit
amet
rfrlsLors Lo         rcsipsums Lo  ipsum  sdolors     dolor  ssissi   dolor  sametsamet dolor  )r	rt�echorE�noechor�r��getstrr�rur�r�s   r�test_getstrzTestCurses.test_getstrcs����m�A�r�1�a�(�(����
�
�
�����
�&�&�&����*�c�j�$�7�7�7����*�c�j�!�Q��=�=�=�4�D�D�b�D�9�	�	�A��N�1�����������A�q�!�,�,�e�4�4�4�������1�a���/�:�:�:�������A�q�"�-�-�x�8�8�8�������1�a���/�:�:�:�������A�q�)�)�8�4�4�4�������1�a���/�:�:�:�������A����.�.�.�������1�a���/�:�:�:���������w�/�/�/�������1�a���/�:�:�:�:�:rc��tjdddd��}t|��|�dd��|���|�|�dd�����d��|�|�dd�����d��|�dd	��|���|�|�dd�����d
��|�|�dd�����d��|j	|j
fD]�}t|��|��|�|�dd�����d��|�|�dd�����d����dS)NrbrgrhrrpsLorem iprl�dolor sit amet,risLorr)r	rt�lorem_ipsumr��clrtoeolrur��rstrip�clrtobotrU�clear)rr}r�s   r�
test_clearzTestCurses.test_clearys����m�A�r�1�a�(�(���C��������A����������������1�a���/�/�1�1�;�?�?�?�������1�a���/�/�1�1�3E�F�F�F�����A����������������1�a���/�/�1�1�6�:�:�:�������1�a���/�/�1�1�3�7�7�7��Y��	�*�	<�	<�D�������D�F�F�F����S�Y�Y�q�!�_�_�3�3�5�5�s�;�;�;����S�Y�Y�q�!�_�_�3�3�5�5�s�;�;�;�;�		<�	<rc��tjdddd��}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)NrbrgrhrsLoem ipsum     rjsLoem ipum      rlsconsectetur    �adipiscing elitrissed do eiusmod ro�               sLorem ipsum    r�r�)r	rtr�r��delchrur��deleteln�insertlnr��insdelln�rr}s  r�test_insert_deletezTestCurses.test_insert_delete�s����m�A�r�1�a�(�(���C��������A�����	�	����������1�a���*<�=�=�=��	�	�!�Q����������1�a���*<�=�=�=�����A����������������1�a���*<�=�=�=�������1�a���*<�=�=�=�������1�a���*<�=�=�=�������1�a���*<�=�=�=�������1�a���*<�=�=�=�����A����������������1�a���*<�=�=�=�������1�a���*<�=�=�=�������1�a���*<�=�=�=��	�	�����C��������A�������Q����������1�a���*<�=�=�=�������1�a���*<�=�=�=�������1�a���*<�=�=�=�������1�a���*<�=�=�=��	�	�����C��������A�������R����������1�a���*<�=�=�=�������1�a���*<�=�=�=�������1�a���*<�=�=�=�������1�a���*<�=�=�=�=�=rc���tjdddd��}t|��|�d��|���|�|�dd��d��|�d��|�|�dd��d��|�d��|�|�dd��d	��|�|�dd��d	��|�|�d
d��d��|�d��dS)NrbrgrhTrr�r����r�riF)r	rtr��scrollok�scrollrur�r�s  r�test_scrollzTestCurses.test_scroll�s)���m�A�r�1�a�(�(���C�������T�����
�
����������1�a���*<�=�=�=��
�
�1�
�
�
�������1�a���*<�=�=�=��
�
�2����������1�a���*<�=�=�=�������1�a���*<�=�=�=�������1�a���*<�=�=�=����U�����rc�>�tjdddd��}|�tj��|�tj��|�tj��|���|���dS)Nrbrgrh)r	rt�attronr��attroff�attrset�standout�standendr�s  r�test_attributeszTestCurses.test_attributes�sq���m�A�r�1�a�(�(���
�
�6�=�!�!�!����F�M�"�"�"����F�M�"�"�"��������������r�chgatc��tjdddd��}|�ddd��|�ddd��|�dd��|�tj��|�|�dd	��d
��|�|�dd��dtjz��|�|�dd��d
tjz��|�dd��|�dtj��|�|�dd��d��|�|�dd��dtjz��|�|�dd��dtjz��|�|�dd��d��|�ddtj	��|�|�dd��d��|�|�dd��dtj	z��|�|�dd��d
tj	z��|�ddd	tj��|�|�dd��dtj	z��|�|�dd��dtjz��|�|�dd��dtjz��|�|�dd��dtj	z��|�|�dd��d
tj	z��dS)Nrbrgrhr�Lorem ipsumrizdolor sit ametrprjr�r��� rl�L�o�eror��l�rrcr�rs)
r	rtr�r�r��A_BLINKrur�r��A_UNDERLINEr�s  r�
test_chgatzTestCurses.test_chgat�s���m�A�r�1�a�(�(���
�
�1�a��'�'�'��
�
�1�a�)�*�*�*�����A�����	�	�&�.�!�!�!�������!�Q����1�1�1�������!�Q����6�>�)A�B�B�B�������!�R���'�F�N�*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����6�3E�)E�F�F�F�������!�R���'�F�4F�*F�G�G�G��	�	�!�Q��6�>�*�*�*�������!�Q����6�3E�)E�F�F�F�������!�Q����6�>�)A�B�B�B�������!�R���'�F�N�*B�C�C�C�������!�R���'�F�4F�*F�G�G�G�������!�R���'�F�4F�*F�G�G�G�G�Grc��tjdddd��}|�ddd��|�|���d��|�d��|�|���d��|�d	��|�|���d
��|�d��|�|���d��|�d��|�|���d��|�d
tj��|�|���d
tjz��|�|�dd��d��|�|�dd��d��|�d��|�	d��|�|���d��|�|�dd��d��|�|�dd��d��|�	d
tj��|�|���d
tjz��|�|�dd��dtjz��|�|�dd��d
tjz��dS)Nrbrgrhrr�)rr��_�_�#�#r�r��#r�)
r	rtr��assertIn�getbkgd�bkgdsetru�	A_REVERSEr��bkgdr�s  r�test_backgroundzTestCurses.test_background�s����m�A�r�1�a�(�(���
�
�1�a��'�'�'��
�
�c�k�k�m�m�W�-�-�-�	���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����6�3C�)C�D�D�D�������!�Q����6�3C�)C�D�D�D�D�Drc	�*�tjdddd��}t|��tjdddd��}td��D]}|�|dd	���|�|��|�|�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)Nrb�rirorj�rrr�_________________ssectetur_________rlspiscing_elit,____rhs_do_eiusmod______s_________________ssectetur       __spiscing elit,  __s do eiusmod    __rss__r_sit_amet_____s__ectetur________s__r sit amet_____s__ectetur   _____)	r	rtr��ranger��overlayrur��	overwrite)r�srcwin�dstwin�is    r�test_overlayzTestCurses.test_overlays�����q�"�a��+�+���F������q�"�a��+�+���q���	(�	(�A��M�M�!�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����v�q�!�Q��1�b�1�1�1�������a��+�+�-A�B�B�B�������a��+�+�-A�B�B�B�������a��+�+�-A�B�B�B������A�q�!�Q��3�3�3�������a��+�+�-A�B�B�B�������a��+�+�-A�B�B�B�������a��+�+�-A�B�B�B�B�Brc��tjdddd��}|���|�dd��|���|���tj��dS)Nrbrgrhrl)r	rt�noutrefresh�redrawln�	redrawwinr��doupdater�s  r�test_refreshzTestCurses.test_refresh,si���m�A�r�1�a�(�(�����������Q������
�
�������
�
�
�������r�resizec�,�tjdddd��}|�dd��|�|���d��|�dd��|�|���d��dS)Nrbrgrhro�)ror)rbrg)r	rtrrurxr�s  r�test_resizezTestCurses.test_resize4s����m�A�r�1�a�(�(���
�
�1�b�������������1�1�1��
�
�1�b�������������1�1�1�1�1r�enclosec�,�tjdddd��}|�|�dd��d��|�|�dd��d��|�|�dd��d��|�|�dd	��d��|�|�d
d	��d��|�|�dd��d��dS)NrbrgrhTrlFrorr�rjr)r	rtr�rr�s  r�test_enclosezTestCurses.test_enclose<s����m�A�r�1�a�(�(���
�
�c�k�k�!�Q�'�'��.�.�.��
�
�c�k�k�!�Q�'�'��/�/�/��
�
�c�k�k�!�Q�'�'��/�/�/��
�
�c�k�k�!�R�(�(�$�/�/�/��
�
�c�k�k�!�R�(�(�%�0�0�0��
�
�c�k�k�!�R�(�(�%�0�0�0�0�0rc�,�tjdddd��}|�ddd��tj��5}|�|��~|�d��tj|��}|�|�	��d��|�|�
��d��|�|�dd��d	��ddd��dS#1swxYwYdS)
Nrbrqrlrhr�rrk)rbrqs Lorem ipsum)r	rtr�rKrL�putwin�seek�getwinrurvrxr�)rr}�fs   r�test_putwinzTestCurses.test_putwinFs+���m�A�r�1�a�(�(���
�
�1�a��'�'�'�
�
#�
%�
%�	?���J�J�q�M�M�M��
�F�F�1�I�I�I��-��"�"�C����S�\�\�^�^�V�4�4�4����S�\�\�^�^�W�5�5�5����S�Y�Y�q�!�_�_�o�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s�B:D	�	D
�D
c
��
�tjdddd��}|�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z��|�|�
dd��d2tjz��|�|�
d.d��d0��dS)3Nrbrcrh�|�!�-r��+�\r��/rs
+--------\rls
|        !ros
#________/�|�!�-�_�+�\r��/r��Br��D�E�F�G�H�I�:�~rps~~~~~~~~s
:        :�:�~rjs ----- �-r�ri�ar��;�;)r	rt�borderrur�r��	TypeError�boxr��hliner��vline�
A_STANDOUTr�r�s  r�test_borders_and_linesz!TestCurses.test_borders_and_linesRs����m�A�r�1�a�(�(���
�
�3��S�#���c�3�	(�	(�	(�������1�a���.�9�9�9�������1�a���-�8�8�8�������1�a���-�8�8�8��
�
�4��t�T����d�	,�	,�	,��
�
�2�r�2�r��r�2�r�	#�	#�	#����)�S�Z��b�"�b�"�b�"�b�	:�	:�	:����)�S�Z��b�"�b�"�b�"�b�"�	>�	>�	>����)�S�Z��b�"�b�"�b�"�b�"�	>�	>�	>��
�
�2�r�2�r�2�r�2�.�.�.��
�
�2�r�2�r�2�r�*�*�*��
�
�2�r�2�r�2�&�&�&��
�
�2�r�2�r�"�"�"��
�
�2�r�2�����
�
�2�r�����
�
�2�����
�
��������S����������1�a��+�+�[�9�9�9�������1�a���M�:�:�:�������1�a��+�+�[�9�9�9�����d��������B�������)�S�W�b�"�b�9�9�9����)�S�W�b�1�1�1����	�	�	�����A�����	�	�#�q����������1�a��+�+�Z�8�8�8��	�	�$������	�	�"�a�����	�	�#�q�&�-�(�(�(��	�	�!�Q��Q�����	�	�!�Q��Q��
�.�.�.�����A�����	�	�#�q�����	�	�$������	�	�"�a�����	�	�#�q�&�+�,�,�,��	�	�!�Q��Q�����	�	�!�Q��Q�� 1�2�2�2�������!�Q����6�3D�)D�E�E�E�������!�Q����6�3D�)D�E�E�E�������!�Q����1�1�1�1�1rc�b�|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�ttjd��|�ttjd	��|�ttjd
��|�ttjd��|�t
tjd��dS)
Nr�r�r��
s^J�
rcrsAB��AB�)rur	�unctrlr�rBr�r\s r�test_unctrlzTestCurses.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����-����>�>�>�>�>rc�t�|js|�d��|�tj��d��tj��|�tj��d��tj��|�tj��d��dS)N�requires terminalFT)rAr&r�r	�isendwinrSrr\s r�test_endwinzTestCurses.test_endwin�s����{�	/��M�M�-�.�.�.��
�
�f�o�'�'��/�/�/��
�����
�
�f�o�'�'��.�.�.�������
�
�f�o�'�'��/�/�/�/�/rc�J�|�tjd��t��|�tjd��d��|�tjd��d��|�tjd��t��|�tjd��d��|�tjd��d��|�tjd��ttd��f��|�	tjd����|�	tjd����tjd��}|�t|�|t��tj
|d��tj
|d��}|�|t��tj|��tjd��dS)	N�hc�colsrf�crr��cudrhsabc
)�assertIsInstancer	�	tigetflag�intru�tigetnum�tigetstr�bytes�type�assertIsNone�tparm�putp)rrX�cud_2s   r�
test_terminfozTestCurses.test_terminfo�s������f�.�t�4�4�c�:�:�:�����)�&�1�1�2�6�6�6�����)�$�/�/��4�4�4����f�o�f�5�5�s�;�;�;�������.�.��3�3�3�������.�.��3�3�3����f�o�d�3�3�e�T�$�Z�Z�5H�I�I�I����&�/�$�/�/�0�0�0����&�/�&�1�1�2�2�2��o�e�$�$���?��!�!�#�u�-�-�-��L��a� � � ��L��a�(�(�E��!�!�%��/�/�/��K�������H�����rc��tjd��tj��tj��|�tj��d��tjd��tjdd��dS)NrlF�d�2)r	�delay_output�flushinprr�rR�napms�newpadr\s r�test_misc_module_funcsz!TestCurses.test_misc_module_funcs�ss����A���������������
�
�f�o�'�'��/�/�/���S�����
�b�"�����rc�Z�|�tj��t��|�tj��t��|�tj��t��|�tj��t��|�tj	��t��|�tj
��t��tj��}|�|t��|�t|��d��tj��}|�|t��|�t|��d��dS�Nrl)rYr	�termnamer^�longname�baudrater[�has_ic�bool�has_il�	termattrs�killcharrur��	erasechar)rr�s  r�test_env_querieszTestCurses.test_env_queries�s8�����f�o�/�/��7�7�7����f�o�/�/��7�7�7����f�o�/�/��5�5�5����f�m�o�o�t�4�4�4����f�m�o�o�t�4�4�4����f�.�0�0�#�6�6�6��O�������a��'�'�'�����Q����#�#�#���������a��'�'�'�����Q����#�#�#�#�#rc���|j}|�d��|�d��|�d��|�d��|�d��|�d��t	|d��r*|�d��|�d��|�d��|�d��|�d��|�d��|�dd��tj
��tjd��tjd��tj��dS)NTF�immedokrbrc)r�clearok�idcok�idlokr
rz�leaveokr��	setscrregr	�nonl�nlr�s  r�test_output_optionszTestCurses.test_output_options�s@��������t�������u�������T�������U�������U�������T�����6�9�%�%�	"��N�N�4� � � ��N�N�5�!�!�!����t�������u����������������������B������
�
�
��	�$�����	�%�����	�����rc��|j}|jr�tj��tj��tjd��tjd��tjd��tjd��tj��tjd��tjd��tj��tj��tj	��tj	d��tj	d��tj
d��tj
d��|�d��|�d��tjd��tjd��|�
d��|�
d��tj��tjd��tjd��tj��|�d��|�d��|�d��|�d��|�d��dS)NFT�rlrfrrb)rrAr	�nocbreak�cbreak�	intrflush�raw�norawr�r��	halfdelay�keypad�meta�nodelay�	noqiflush�qiflush�	notimeout�timeoutr�s  r�test_input_optionszTestCurses.test_input_options�s������;�	��O�����M�O�O�O��M�%� � � ��M�$������T�"�"�"���U�#�#�#��J�L�L�L��J�u�����J�t�����L�N�N�N��
������
�
�
���E������D�����������������
�
�d�����
�
�e������D������E�������t�������u�����������t������u��������������������������r�������q�������q�����r�	typeaheadc��tjtj�����tjd��dS)Nrf)r	r�r5�	__stdin__r8r\s r�test_typeaheadzTestCurses.test_typeahead s8������-�-�/�/�0�0�0��������rc��|js|�d��tj��tj��dS)NrQ)rAr&r	�
def_prog_mode�reset_prog_moder\s r�test_prog_modezTestCurses.test_prog_mode%sC���{�	/��M�M�-�.�.�.�������� � � � � rc��tjd���tjd���tj��dS	tj��dS#tj$r|�d��YdSwxYw)N�bel�flashz
beep() failed)r	r]�beep�errorr&r\s r�	test_beepzTestCurses.test_beep+s}���O�E�"�"�.���w�'�'�3��K�M�M�M�M�M�
/���
�
�
�
�
���<�
/�
/�
/��
�
�o�.�.�.�.�.�.�
/�����A�$A<�;A<c��tjd���tjd���tj��dS	tj��dS#tj$r|�d��YdSwxYw)Nr�r�zflash() failed)r	r]r�r�r&r\s r�
test_flashzTestCurses.test_flash5s~���O�E�"�"�.���w�'�'�3��L�N�N�N�N�N�
0����������<�
0�
0�
0��
�
�.�/�/�/�/�/�/�
0���r�c��dD]X\}}tj|���tj|���.	tj|���D#tj$rY�UwxYwdS)N))r�civis)rh�cvvis)rl�cnorm)r	r]�curs_setr�)r�vis�caps   r�
test_curs_setzTestCurses.test_curs_set?s|��B�	�	�H�C����s�#�#�/����$�$�$�$���O�C�(�(�(�(���|�����D�����
	�	s�A�A�A�get_escdelayc��tj��}|�|t��tjd��|�tj��d��tj|��dS)N�)r	r�rYr[�set_escdelayru)r�escdelays  r�
test_escdelayzTestCurses.test_escdelayIsm���&�(�(�����h��,�,�,���B��������,�.�.��3�3�3���H�%�%�%�%�%r�get_tabsizec��tj��}|�|t��tjd��|�tj��d��tj|��dS)Nro)r	r�rYr[�set_tabsizeru)r�tabsizes  r�test_tabsizezTestCurses.test_tabsizeQsm���$�&�&�����g�s�+�+�+���1��������+�-�-�q�1�1�1���7�#�#�#�#�#r�getsyxc��tj��\}}|�|t��|�|t��tjdd��|�tj��d��dS)Nrorb)rorb)r	r�rYr[�setsyxru)r�y�xs   r�test_getsyxzTestCurses.test_getsyxYsq���}�����1����a��%�%�%����a��%�%�%��
�a������������&�1�1�1�1�1rc�(�dtjdddddfS)Nrf��������rM�r	�COLORSr\s r�
bad_colorszTestCurses.bad_colorsas���F�M�:�u�j�%��O�Orc�"�tjdddfS)Nr�r�rMr�r\s r�bad_colors2zTestCurses.bad_colors2ds���
�u�e�U�3�3rc��dS)N)rfr�r�r�r�rMr r\s r�	bad_pairszTestCurses.bad_pairsgs��@�@rc��|�tj��t��|�tj��t��dSr[)rYr	r%rs�can_change_colorr\s r�test_has_colorszTestCurses.test_has_colorsjsF�����f�/�1�1�4�8�8�8����f�5�7�7��>�>�>�>�>rc�.�tj��s|�d��tj��trRtdtj��tj���tdtj	��tj���dSdS)Nr$z	COLORS = )r0zCOLOR_PAIRS = )
r	r%r&r'rr3r�r5r6�COLOR_PAIRSr\s r�test_start_colorzTestCurses.test_start_colorns���� �"�"�	5��M�M�3�4�4�4�������	J��-�f�m�-�-�C�J�?�?�?�?��7�6�#5�7�7�c�j�I�I�I�I�I�I�	J�	Jrc�R�|�tjtj��d��tjd��tjdz
}tj|��|���D](}|�ttj|���)dS)N�rrrrrl)rur	�
color_content�COLOR_BLACKr�r�r�r�)r�maxcolor�colors   r�test_color_contentzTestCurses.test_color_contentvs�������-�f�.@�A�A�9�M�M�M���Q�����=�1�$����X�&�&�&��_�_�&�&�	G�	G�E����j�&�*>��F�F�F�F�	G�	Grc	���tj��s|�d��tjd��}	tjdg|�R�n*#tj$r|�d��YnwxYw|jtjdg|�R�tjdddd��|�tjd��d��tjdddd��|�tjd��d��tjdz
}tj|��}tj|g|�R�|jtj|g|�R�tj|ddd��|�tj|��d	��|�	��D]+}|�
ttj|ddd���,d
D]}}|�
ttjd|dd��|�
ttjdd|d��|�
ttjddd|���~dS)Nzcannot change colorrz)cannot change color (init_color() failed)r���)r�r�r�rl��)rr�r�)rfi�)r	r�r&r��
init_colorr�rErur�r�r�r�)r�oldr�r��comps     r�test_init_colorzTestCurses.test_init_color�sp���&�(�(�	1��M�M�/�0�0�0��"�1�%�%��	G���a�&�#�&�&�&�&�&���|�	G�	G�	G��M�M�E�F�F�F�F�F�	G��������)�1�3�s�3�3�3�3���!�Q��1�%�%�%�����-�a�0�0�)�<�<�<���!�T�4��.�.�.�����-�a�0�0�2D�E�E�E��=�1�$���"�8�,�,����(�)�S�)�)�)�)�����)�8�:�c�:�:�:�:���(�A�s�D�1�1�1�����-�h�7�7��H�H�H��_�_�&�&�	M�	M�E����j�&�*;�U�A�q�!�L�L�L�L��	L�	L�D����j�&�*;�Q��a��K�K�K����j�&�*;�Q��4��K�K�K����j�&�*;�Q��1�d�K�K�K�K�	L�	Ls�A�$A8�7A8c��tj}ttd��r�tj��r|dtjzdzz
}tj��rdtjcxkrdkrnnt
|t��}	tj|dz
dd��n#t$rtj}YnwxYw|S)N�ncurses_versionrhrl)rrrl)rrrhr)
r	r�r
�has_extended_color_supportr�r��min�	SHORT_MAX�	init_pairr�)r�
pair_limits  r�get_pair_limitzTestCurses.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�?Cc��ttd��s>|�tjd��tjtjf��tjd��|���dz
}|dkrtj|��|���D](}|�ttj|���)dS)N�use_default_colorsrrl)
r
r	ru�pair_content�COLOR_WHITEr�r�r�r�r�)r�maxpair�pairs   r�test_pair_contentzTestCurses.test_pair_content�s����v�3�4�4�	G����V�0��3�3�$�0�&�2D�E�
G�
G�
G���A�����%�%�'�'�!�+���Q�;�;����(�(�(��N�N�$�$�	E�	E�D����j�&�*=�t�D�D�D�D�	E�	Erc� �tjd��}tjdg|�R�|jtjdg|�R�tjddd��|�tjd��d��tjdz
}tjd|d��|�tjd��|df��tjdd|��|�tjd��d|f��|���dz
}|dkr>tj|dd��|�tj|��d��|���D]*}|�ttj|dd���+|�
��D]R}|�ttjd|d��|�ttjdd|���SdS)Nrlrrd)r	r�r�rErur�r�r�r�r�r�)rr�r�r�r�r�s      r�test_init_pairzTestCurses.test_init_pair�s����!�!�$�$�����!�S�!�!�!�!�����(�!�2�c�2�2�2�2����A�q�!�!�!�����,�Q�/�/��8�8�8��=�1�$�����H�a�(�(�(�����,�Q�/�/�(�A��?�?�?����A�x�(�(�(�����,�Q�/�/�!�X��?�?�?��%�%�'�'�!�+���Q�;�;���W�a��+�+�+����V�0��9�9�6�B�B�B��N�N�$�$�	H�	H�D����j�&�*:�D�!�Q�G�G�G�G��%�%�'�'�	I�	I�E����j�&�*:�A�u�a�H�H�H����j�&�*:�A�q�%�H�H�H�H�	I�	Irc��dD]t}tj|��}|�tj|��||��|�tj|tjz��|���u|�tjd��d��|�tjd��d��dS)N)rrlr�r)r	�
color_pairru�pair_numberr�)rr��attrs   r�test_color_attrszTestCurses.test_color_attrs�s����	M�	M�D��$�T�*�*�D����V�/��5�5�t�T�B�B�B����V�/��v�}�0D�E�E�t�L�L�L�L�����*�1�-�-�q�1�1�1�����+�A�.�.��2�2�2�2�2rr�c�Z�tjd��}	tj��n*#tj$r|�d��YnwxYw|�tjd��d��|�|tjtjfddg��dS)Nrz1cannot change color (use_default_colors() failed)rerd)	r	r�r�r�r&rur�r�r�)rr�s  r�test_use_default_colorsz"TestCurses.test_use_default_colors�s����!�!�$�$��	O��%�'�'�'�'���|�	O�	O�	O��M�M�M�N�N�N�N�N�	O��������,�Q�/�/��:�:�:��
�
�c�V�/��1C�D�h�PV�W�X�X�X�X�Xs�*�$A�Ac���|�tjd��d��|�tjd��d��|�tjd��d��|�tjd��d��|�ttjd	��|�tjd
��t��dS)Nr�r�rns^M�s^?rs^@rf�)rur	�keynamer�r�rYr^r\s r�test_keynamezTestCurses.test_keyname�s���������+�+�T�2�2�2�������+�+�U�3�3�3�������,�,�e�4�4�4�������*�*�E�2�2�2����*�f�n�b�9�9�9����f�n�S�1�1�5�9�9�9�9�9r�has_keyc�.�tjd��dS)Nrn)r	r�r\s r�test_has_keyzTestCurses.test_has_key�s����r�����r�getmousec��tjtj��\}}|dkr|�d��tjd��tjddddtj��tj��}dS)Nrzmouse stuff not availablerc)r	�	mousemask�BUTTON1_PRESSEDr&�
mouseinterval�
ungetmouser�)r�	availmask�oldmask�ms    r�
test_getmousezTestCurses.test_getmouse�st��%�/��0F�G�G���G���>�>��M�M�5�6�6�6���R� � � ���!�Q��1�f�&<�=�=�=��O�����r�panelc��tjdd��}tj�|��}|�tjjd���5|���ddd��dS#1swxYwYdS)Nrcz!userptr should fail since not set)�msg)r	rtr�	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�	�	�
�I�I�K�K�K�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A=�=B�Bc�|�tjdd��}tj�|��}t	��}tj|��}td��D]}|�|���|�d��|�	tj|��|d��dS)Nrcrfzset_userptr leaked references)
r	rtrr
�objectr5�getrefcountr	�set_userptrru)rrr
�obj�nrefsrs      r�test_userptr_memory_leakz#TestCurses.test_userptr_memory_leaks����M�"�b�!�!���L�"�"�1�%�%���h�h�����$�$���s���	�	�A�
�M�M�#�����	�
�
�d����������-�-�u�8�	:�	:�	:�	:�	:rc����tjdd��}tj�|���G�fd�d��}��|������d��dS)Nrcc���eZdZ�fd�ZdS)�+TestCurses.test_userptr_segfault.<locals>.Ac�2����d��dSr[)r)rrs �r�__del__z3TestCurses.test_userptr_segfault.<locals>.A.__del__s����!�!�$�'�'�'�'�'rN)�__name__�
__module__r�r)rs�rr�rs.�������
(�
(�
(�
(�
(�
(�
(rr�)r	rtrr
r)rrr�rs   @r�test_userptr_segfaultz TestCurses.test_userptr_segfaults�����M�"�b�!�!����&�&�q�)�)��	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	���!�!�#�#����
���$�����rc��tjdd��}tj�|��}t	|t|����dS)Nrc)r	rtrr
rr_)rrrs   r�test_disallow_instantiationz&TestCurses.test_disallow_instantiationsF��
�M�"�b�!�!����&�&�q�)�)��$�T�4��;�;�7�7�7�7�7r�is_term_resizedc���tjtj}}|�tj||��d��|�tj|dz
|dz
��d��dS)NFrlT)r	�LINES�COLSr�r �r�linesrVs   r�test_is_term_resizedzTestCurses.test_is_term_resized's_���l�F�K�t���
�
�f�,�U�D�9�9�5�A�A�A��
�
�f�,�U�1�W�d�1�f�=�=�t�D�D�D�D�Dr�resize_termc���tj��tjtj}}|dz
}|dz}tj||��|�tj|��|�tj|��tj||��|�tj|��|�tj|��dSrn)r	�update_lines_colsr"r#r'ru�rr%rV�	new_lines�new_colss     r�test_resize_termzTestCurses.test_resize_term-s���� �"�"�"��l�F�K�t���A�I�	��!�8����9�h�/�/�/������y�1�1�1������h�/�/�/���5�$�'�'�'������u�-�-�-������d�+�+�+�+�+r�
resizetermc���tj��tjtj}}|dz
}|dz}tj||��|�tj|��|�tj|��tj||��|�tj|��|�tj|��dSrn)r	r)r"r#r.rur*s     r�test_resizetermzTestCurses.test_resizeterm;s���� �"�"�"��l�F�K�t���A�I�	��!�8����)�X�.�.�.������y�1�1�1������h�/�/�/���%��&�&�&������u�-�-�-������d�+�+�+�+�+rc��tjd��|�|j���d��tjd��|�|j���d��tjd��|�|j���d��dS)Nr�r��Br��C)r	r�rur�getkeyr\s r�test_ungetchzTestCurses.test_ungetchIs�����t���������+�+�-�-�s�3�3�3���s���������+�+�-�-�s�3�3�3���r���������+�+�-�-�s�3�3�3�3�3rc�`�tjd��|j���dS)Ni)r	r�rr4r\s r�test_issue6243zTestCurses.test_issue6243Qs,����t������������r�	unget_wchr�)�c)rbrpz.unget_wch is broken in ncurses 5.7 and earlierc
��|j}|j}dD]�}	|�|��n#t$rY�%wxYw	t	j|��n:#t$r-}|�d|�d|j�d|����Yd}~nd}~wwxYw|���}|�	||��t|��}t	j|��|���}|�	||����dS)N)r��ér�u􏿿z
unget_wch(z) failed with encoding z: )rr�r�r�r	r8�	Exception�fail�get_wchru�ord)rrr��ch�err�read�codes       r�test_unget_wchzTestCurses.test_unget_wchUsQ������?��7�	'�	'�B�
��	�	�(�#�#�#�#��%�
�
�
���
����
8�� ��$�$�$�$���
8�
8�
8��	�	�	��R�R�����#�#�7�8�8�8�8�8�8�8�8�����
8�����>�>�#�#�D����T�2�&�&�&��r�7�7�D���T�"�"�"��>�>�#�#�D����T�2�&�&�&�&�!	'�	's#�*�
7�7�A�
B�#B�Bc�>�|j}ddl}|j}|�|��|�t
��5d|_ddd��n#1swxYwY||_|�t
��5|`ddd��dS#1swxYwYdS)Nrrc)r�codecsr��lookupr�rB)rrrFr�s    r�
test_encodingzTestCurses.test_encodingms������
�
�
��?���
�
�h����
�
�
�y�
)�
)�	!�	!� �F�O�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�"���
�
�
�y�
)�
)�	 �	 ���	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 s$�A�A�A�B�B�Bc�
�|j}	tj|j��}|�|��n#t
$rYnwxYw|jj�d��d}|�d|��dS)NrJrz[y, x,])	r�inspect�	signaturer��assertFalser��__doc__�splitr�)rrrK�human_readable_signatures    r�test_issue21088zTestCurses.test_issue21088xs������	��)�&�,�7�7�I����Y�'�'�'�'���	�	�	��D�	����$*�<�#7�#=�#=�d�#C�#C�A�#F� ��
�
�i�!9�:�:�:�:�:s�.8�
A�Ac��tjdddd��}tj�|d���}|���\}}|�|dz
|dz
��|�d��dS)NrbrgrhT)�insert_moder�)r	rt�textpad�Textboxrxr�_insert_printable_char)rr}rCr%rVs     r�test_issue13051zTestCurses.test_issue13051�sx���m�A�r�1�a�(�(���n�$�$�S�d�$�;�;���l�l�n�n���t��
�
�5��7�D��F�#�#�#��"�"�3�'�'�'�'�'rN)Prrr��classmethodr<rXrr]r`r�r�r�r�r�r�r�r�r�r�r�r�r�r!r�rrrrrr#rGrOrSrdrlrxr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r(r�r�r�r�r�r�r�r�r�rrrrrrr&r-r0r5r7r�skipIf�getattrr	rDrHrPrVr rrr-r-7s��������'�'��[�'�.�.�.�`��(�#�#���$�#��
��)�$�$���%�$��23�23�23�h	1�	1�	1�.>�.>�.>�`$5�$5�$5�L 5� 5� 5�DF�F�F�>�>�>� 
0�
0�
0�;�;�;�,<�<�<�((>�(>�(>�T������!� ��)�)�H�H�*�)�H�<E�E�E�BC�C�C�:���!� ��*�*�2�2�+�*�2�!� ��+�+�1�1�,�+�1�
?�
?�
?�62�62�62�p?�?�?�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�_�W�W�V�%6��>�>��G�E�G�G�'�'�G�G�'�&�'�*	 �	 �	 �;�;�;�8!� ��*�*�(�(�+�*�(�(�(rr-c�d�eZdZed��d���Zed��d���Zd�ZdS)�	MiscTestsr)c�2�tj��tjtj}}dxt_t_tj��|�tj|��|�tj|��dS)Nr)r	r)r"r#rur$s   r�test_update_lines_colsz MiscTests.test_update_lines_cols�sq��� �"�"�"��l�F�K�t��%&�&���v�{�� �"�"�"������u�-�-�-������d�+�+�+�+�+rr�c���tj}trtdtj��d���|�|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)r1rirrlrh)
r	r�rr3rY�tuplerur�r[�major�minor�patch�assertGreaterEqual)r�vs  r�test_ncurses_versionzMiscTests.test_ncurses_version�s����"���	M��?�v�'=�?�?�t�L�L�L�L����a����d�E�*�*�*�����Q����#�#�#����a��d�C�(�(�(����a��d�C�(�(�(����a��d�C�(�(�(����a�g�s�+�+�+����a�g�s�+�+�+����a�g�s�+�+�+�����1��q�w�'�'�'�����1��q�w�'�'�'�����1��q�w�'�'�'�������+�+�+�������+�+�+�������+�+�+�+�+rc�b�tj��}|�|t��dSr[)r	r�rYrs)r�rs  r�test_has_extended_color_supportz)MiscTests.test_has_extended_color_support�s,���-�/�/�����a��&�&�&�&�&rN)rrr�rr]rerhr rrr[r[�sq��������-�.�.�,�,�/�.�,���+�,�,�,�,�-�,�,�&'�'�'�'�'rr[c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�	TestAsciic��tjjD]0}|�t	tj|��|���1dSr[)r	�ascii�controlnames�
assertTruer
)rrs  r�test_controlnameszTestAscii.test_controlnames�sC���L�-�	?�	?�D��O�O�G�F�L�$�7�7��>�>�>�>�	?�	?rc�<�������fd�}td��D�]o�t����t�g��}|tjj|�����|tjj|�����|tjj|�����|tjj|�����|tjj	|�	����|tjj
|�
����|tjj�dk��|tjj�dk��|tjj
�dk��|tjj�dkp�dk��|tjj�dv��|tjjd�cxkodknc��|tjjd�cxkodknc��|tjj�t&jv��|tjj�t&jv����qdd	dt.jt.jd
zfD�]����tj��������tj��������tj��������tj��������tj�	�������tj�
�������tj��������tj�
�������tj��������tj��������tj��������tj��������tj��������tj�����������tj�d	����dS)Nc�������|���5��|���|����|���|��ddd��dS#1swxYwYdS)N)r@r�)r�ru)r��expectedr�rrs  ���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�rfrl)r	�chrr^r	rl�isalnum�isalpha�isdigit�islower�isspace�isupper�isascii�ismeta�isctrl�iscntrl�isblank�isgraph�isprint�ispunct�string�punctuation�isxdigit�	hexdigitsr5�
maxunicoderL)rrs�br�rs`  @@r�test_ctypeszTestAscii.test_ctypes�s������	4�	4�	4�	4�	4�	4�	4�
�s���	@�	@�A��A���A��q�c�
�
�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�&�,�%�q�C�x�0�0�0��E�&�,�%�q�2�v�.�.�.��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�	7�A����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�2�1�5�5�6�6�6�6������,�,�R�0�0�1�1�1�1�1rc��tjj}|�|d��d��|�|d��d��|�|td����td����dS)N�Ár�)r	rlrur?)rrls  r�
test_asciizTestAscii.test_ascii�sz����"�������v����,�,�,������s���S�)�)�)������s�6�{�{�+�+�S��X�X�6�6�6�6�6rc�T�tjj}|�|d��d��|�|d��d��|�|d��d��|�|t	d����t	d����dS)N�JrJ�@�)r	rl�ctrlrur?)rr�s  r�	test_ctrlzTestAscii.test_ctrl�s����|� �������c���D�)�)�)������d���T�*�*�*������c���D�)�)�)������c�#�h�h����T���3�3�3�3�3rc��tjj}|�|d��d��|�|d��d��|�|t	d����d��dS)NrJ�Šr�r��)r	rl�altrur?)rr�s  r�test_altzTestAscii.test_altsr���l��������T���F�+�+�+������S���6�*�*�*������S��X�X����-�-�-�-�-rc��tjj}|�|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��dS)Nr�r�r?� �z^?rJz^Jr�z^@r�z!^Jr�z!A)r	rlrNrur?)rrNs  rrOzTestAscii.test_unctrls�����$����������c�*�*�*���������c�*�*�*���������c�*�*�*���������c�*�*�*����������.�.�.���������t�,�,�,���������t�,�,�,�������C���)�)�3�/�/�/�������D�	�	�*�*�D�1�1�1����������/�/�/����������.�.�.�������F���,�,�e�4�4�4�������F���,�,�d�3�3�3�3�3rN)	rrr�ror�r�r�r�rOr rrrjrj�so������?�?�?�+2�+2�+2�Z7�7�7�4�4�4�.�.�.�4�4�4�4�4rrjc���gd�}|���\}}t|d|���D].\}}|�|d|d|||dz
kz
����/dS)N)	r�zdolor sit amet,�consecteturzadipiscing elit,zsed do eiusmodztempor incididuntzut labore etzdolore magnazaliqua.rrl)rx�	enumerater�)r}�text�maxy�maxxr��lines      rr�r�s���
�
�
�D������J�D�$��T�%�4�%�[�)�)�8�8���4��
�
�1�a��5�t�q�D�1�H�}�5�5�6�7�7�7�7�8�8r�__main__)"rrJrCr�r5rKr�test.supportrrrrr�test.support.import_helperrr	�curses.panel�ImportErrorrr!r(�environ�getr4r�rXr��TestCaser-r[rjr�r�mainr rr�<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��.�T�Y�.�=��D�F�F�������)�4�6�6�`(�`(�`(�`(�`(��"�`(�`(�6�6�F�F�`(�F#!'�!'�!'�!'�!'��!�!'�!'�!'�HU4�U4�U4�U4�U4��!�U4�U4�U4�p8�8�8� �z����H�M�O�O�O�O�O��s�A#�#A+�*A+