Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.11/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.11/test/__pycache__/test_decimal.cpython-311.opt-2.pyc

�

SԚg�`���	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZm
Z
mZmZddl
mZmZmZmZmZmZddlmZddl
mZddl
mZddlZddlZddlZejdkred��ed	d
g���Zed	d
g���Zddl Z!ed
d
g���Z"eej#d	<ed
d
g���Z$eej#d	<ee"ee$iZ%e!ej#d	<ej&ed��Z'eer4e(e�)��j*�+����ndee(e�)��j*�+����iZ,eer8ej-ej.ej/ej0ej1ej2ej3ej4ej5g	ndeej-ej.ej/ej0ej1ej2ej3ej4ej5g	iZ6d�Z7ej8Z8ej9Z9ej:Z:ej;Z;ej<Z<ej=Z=ej>Z>ej?Z?e8e9e:e;e<e=e>e?gZ@eer&e�)�����ndee�)�����iZAd�ZBdZCeDdkrejEdZFneGZFejH�IeF��pejJZKeKejLzeCzejLzZMejH�NeM��aOdZPeQed��rdndZRej&eRd��ZSejTeRd��ZUGd�d��ZVGd�d��ZWe'Gd�deWejX����ZYGd�deWejX��ZZGd �d!��Z[e'Gd"�d#e[ejX����Z\Gd$�d%e[ejX��Z]Gd&�d'��Z^e'Gd(�d)e^ejX����Z_Gd*�d+e^ejX��Z`Gd,�d-��Zae'Gd.�d/eaejX����ZbGd0�d1eaejX��Zcd2�Zdd3�Zeejf��Gd4�d5����Zge'Gd6�d7egejX����ZhGd8�d9egejX��ZiGd:�d;��Zje'Gd<�d=ejejX����ZkGd>�d?ejejX��ZlGd@�dA��Zme'GdB�dCemejX����ZnGdD�dEemejX��ZoGdF�dG��Zpe'GdH�dIepejX����ZqGdJ�dKepejX��ZrGdL�dM��Zse'GdN�dOesejX����ZtGdP�dQesejX��ZuGdR�dS��Zve'GdT�dUevejX����ZwGdV�dWevejX��ZxGdX�dY��Zye'GdZ�d[eyejX����ZzGd\�d]eyejX��Z{Gd^�d_��Z|e'Gd`�dae|ejX����Z}Gdb�dce|ejX��Z~Gdd�de��Ze'Gdf�dgeejX����Z�Gdh�dieejX��Z�eUe'Gdj�dkejX������Z�Gdl�dm��Z�e'Gdn�doe�ejX����Z�Gdp�dqe�ejX��Z�Gdr�dsejX��Z�Gdt�duejX��Z�Gdv�dwejX��Z�e'Gdx�dyejX����Z�e
e'Gdz�d{ejX������Z�d|�Z�d}�Z�d~�Z�da�da�da�da�d�d�Z�eDdkr�ddl�Z�e�j�d���Z�e���d�d�d�d�����e���d�d�d�d�����e�����\Z�Z�e�j�re�dd����dSe�re�dde�e�j�����dSe�dd����dSdS)��N)�is_resource_enabled�requires_IEEE_754�requires_docstrings�requires_legacy_unicode_capi�check_sanitizer)�
TestFailed�run_with_locale�cpython_only�darwin_malloc_err_warning�
is_emscripten�
skip_on_s390x)�import_fresh_module)�threading_helper)�warnings_helper�darwin�test_decimal�decimal�_decimal)�fresh)�blocked�	fractionsztest requires C versionc����t||���|�t��fd��D������dS)Nc3�B�K�|]}|�vr�|n�|V��dS�N�)�.0�s�d�expecteds  ���./usr/local/lib/python3.11/test/test_decimal.py�	<genexpr>z!assert_signals.<locals>.<genexpr>Vs9�����F�F�q�q�H�}�}�q��t�t�a��d�(�F�F�F�F�F�F�)�getattr�
assertTrue�all)�cls�context�attrrrs   `@r �assert_signalsr)TsK���������A��N�N�3�F�F�F�F�F�A�F�F�F�F�F�G�G�G�G�Gr"c��|sdS|�dtt�t|d�����}|�|��dS)N�	r)�prec�rounding�traps)�Context�ROUND_HALF_EVEN�dict�fromkeys�Signals�
setcontext)�m�DefaultTestContexts  r �initr7msY����f�f����
��t�}�}�W�Q�Z��/K�/K�#�����L�L�#�$�$�$�$�$r"�decimaltestdata�__main__F�
DecClampedTz.test requires build with -DEXTRA_FUNCTIONALITYztest requires regular buildc�X�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
S)�IBMTestCasesc
�F�|j���|_|j���|_dg|_tgd���|_|jtkr�|j�d��|j�d��|j�d��|j�d��|j�d��|j�d��|j�d	��|j�d
��|j	|j
|j|j|j
d�|_idd
�dd�dd�dd�dd�dd�dd�dd�dd�dd�d d!�d"d#�d$d%�d&d'�d(d)�d*d+�d,d-�id.d/�d0d1�d2d3�d4d5�d6d7�d8d9�d:d;�d<d=�d>d?�d@dA�dBdC�dDdE�dFdG�dHdI�dJdK�dLdM�dNdO��dPdQdRdS��|_t t"t$t&t(t*t,t.dT�|_|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj dU�|_!dV|_"dS)WN�#)�scbx164�scbx165�expx901�expx902�expx903�expx905�lnx901�lnx902�lnx903�lnx905�logx901�logx902�logx903�logx905�powx1183�powx1184�powx4001�powx4002�powx4003�powx4005�powx4008�powx4010�powx4012�powx4014�pwsx803�pwsx805�powx4302�powx4303�powx4342�powx4343�pwmx325�pwmx326)�	precisionr-�maxexponent�minexponent�clamp�and�logical_and�apply�_apply�class�number_class�
comparesig�compare_signal�comparetotal�
compare_total�
comparetotmag�compare_total_mag�copy�copy_decimal�copyabs�copy_abs�
copynegate�copy_negate�copysign�	copy_sign�	divideint�
divide_int�invert�logical_invert�iscanonical�is_canonical�isfinite�	is_finite�
isinfinite�is_infinite�isnan�is_nan�isnormal�	is_normal�isqnan�is_qnan�issigned�	is_signed�issnan�is_snan�issubnormal�is_subnormal�iszero�is_zero�maxmag�max_mag�minmag�min_mag�	nextminus�
next_minus�nextplus�	next_plus�
nexttoward�next_toward�or�
logical_or�reduce�	normalize�
remaindernear�remainder_near�samequantum�same_quantum�
squareroot�sqrt�toeng�
to_eng_string�
tointegral�to_integral_value�to_integral_exact�
to_sci_string�logical_xor)�tointegralx�tosci�xor)�ceiling�down�floor�	half_down�	half_even�half_up�up�05up)�clamped�conversion_syntax�division_by_zero�division_impossible�division_undefined�inexact�invalid_context�invalid_operation�overflow�rounded�	subnormal�	underflow)r|r~r�r�r�r�r�r�r�r�r�)#rr/r'�readcontext�ignore_list�set�skipped_test_ids�C�add�change_precision�change_rounding_method�change_max_exponent�change_min_exponent�change_clamp�
ChangeDict�NameAdapter�
ROUND_CEILING�
ROUND_DOWN�ROUND_FLOOR�ROUND_HALF_DOWNr0�
ROUND_HALF_UP�ROUND_UP�
ROUND_05UP�RoundingDict�Clamped�InvalidOperation�DivisionByZero�Inexact�Overflow�Rounded�	Subnormal�	Underflow�
ErrorNames�LogicalFunctions��selfs r �setUpzIBMTestCases.setUp�s����|�+�+�-�-����<�/�/�1�1����5���!$�"%�"%�"%�"!�"!���H�<�1����!�%�%�i�0�0�0��!�%�%�i�0�0�0��!�%�%�j�1�1�1��!�%�%�j�1�1�1��!�%�%�j�1�1�1��!�%�%�j�1�1�1��!�%�%�i�0�0�0��!�%�%�i�0�0�0�*.�)>�(,�(C�+/�+C�+/�+C�%)�%6�	8�8���$1�E�-�$1�#�H�$1�#�N�$1�)�)9�$1�+�?�	$1�
,�,?�$1�#�>�
$1�&�j�$1�)��$1�'�{�$1�(��$1�%�%5�$1�*�.�$1�'�{�$1�)��$1�$�H�$1� '�{�!$1�$1�"%�Y�#$1�$'�{�%$1�&%�Y�'$1�(*�.�)$1�*%�Y�+$1�,%�Y�-$1�.%�Y�/$1�0(��1$1�2'�{�3$1�4)��5$1�6!��7$1�8%�[�9$1�:,�,<�;$1�<*�.�=$1�>)��?$1�@$�O�A$1�B)�)<�C$1�$1�D+>�$3�"/�I$1�$1�$1���N*7�&0�'2�+:�+:�)6�$,�&0�2�2���(,�|�';�15��1N�04��0K�37�<�3P�26�,�2O�'+�|�';�/3�|�/L�15��1N�(,��(=�'+�|�';�)-��)?�)-��)?�A�A���
!1����r"c�J�	|jtkrx|jjdkrh|j�d��|j�d��|j�d��|j�|��S|j�||��S)N�@�Ti���?i�9�)	rr��MAX_EMAXr��_unsafe_setprec�_unsafe_setemax�_unsafe_setemin�create_decimal�Decimal)r��vr's   r �read_unlimitedzIBMTestCases.read_unlimiteds���	�
�<�1�����!6�)�!C�!C���,�,�Z�8�8�8���,�,�Z�8�8�8���,�,�[�9�9�9��#�2�2�1�5�5�5��<�'�'��7�3�3�3r"c��trtj�t|d���5}|D]�}|�dd���dd��}	|�|��}�C#|jj$r2}|�d|j	j
zdz|z��Yd}~�d}~wwxYw	ddd��dS#1swxYwYdS)N�utf-8)�encodingz
��
zException "z" raised on line )�
skip_expected�unittest�SkipTest�open�replace�	eval_liner�DecimalException�fail�	__class__�__name__)r��file�f�line�t�	exceptions      r �	eval_filezIBMTestCases.eval_file(sM���	$��#�#�
�$��
)�
)�
)�	e�Q��
e�
e���|�|�F�B�/�/�7�7��b�A�A��e����t�,�,�A�A���|�4�e�e�e��I�I�m�I�,?�,H�H�K^�^�_c�c�d�d�d�d�d�d�d�d�����e����
e�	e�	e�	e�	e�	e�	e�	e�	e�	e�	e�	e�	e����	e�	e�	e�	e�	e�	es;�/B=�A+�*B=�+B,�:(B'�"B=�'B,�,B=�=C�Cc�P�|�d��dkr�|dd�dkr{|�d��sf|�d��ddz|�d��d�d��dz���}n-|�d��d���}|jD]}|�|��dkrdS�|sdSd|vr|�|��S|�|��S)	Nz -> r��--z  --�->��:)�find�
startswith�split�stripr��eval_directive�
eval_equation)r�r�ignores   r r�zIBMTestCases.eval_line7s���6�6�&�>�>�Q���1�R�a�R�5�D�=�=����f�9M�9M�=�������q�!�D�(�������q�!�'�'��-�-�a�0�1�27�%�'�'�
�A�����
�
�a� �&�&�(�(�A��&�	�	�F��v�v�f�~�~��"�"����#��	)��F�
�A�X�X��&�&�q�)�)�)��%�%�a�(�(�(r"c��d�|�d��D��\}}|dkr|j|}n!	t|��}n#t$rYnwxYw|j�|d���}||��dS)Nc3�bK�|]*}|������V��+dSr)r�lower�r�xs  r r!z.IBMTestCases.eval_directive.<locals>.<genexpr>Js4����@�@�a����	�	���)�)�@�@�@�@�@�@r"rr-c��dSrr)�argss r �<lambda>z-IBMTestCases.eval_directive.<locals>.<lambda>Ss��$�r")r
r��int�
ValueErrorr��get)r�r�funct�values    r rzIBMTestCases.eval_directiveIs���@�@�1�7�7�3�<�<�@�@�@���u��J����%�e�,�E�E�
��E�
�
�����
�
�
���
������#�#�E�,>�,>�@�@��
��e�����s�A�
A�Ac�n���tstj��dkrdS�j���	|�d��}|d������}|d}trtd|d���|d���}|dd�}|d������}|d}|dd�}n'#tttf$r
�jj
�wxYwd	�}	|�jvrdS�j�||��}
|
d
krdSt#�j|
��}g}d}d}
�fd�|D���t$�jD]}d�jj|<��D]}d�jj|<�t)|��D�]D\}}|�d
��dzdkrd|
z
}
|
r	|dz|z}�2||z}d}|	|��}|
dvr�t,r��D]�}d�jj|<	|�j�|������d|�d|����nG#|$rYn@t$�j$r)}��d|�d|�d|�d���Yd}~nd}~wwxYwd�jj|<���j�|��}n��|�j��}|�|����F|	|��}t,�rK|
dv�rF�D]�}d�jj|<	||���d|�d|����nG#|$rYn@t$�j$r)}��d|�d|�d|�d���Yd}~nd}~wwxYwd�jj|<���fd�t6�jD��}|D]�}d�jj|<	||���d|�d|�����3#|$rY�:t$�j$r5}��dt9|���d|�d|����Yd}~�~d}~wwxYw|D]}d�jj|<�trtd�j��	t;||���}|
�jvr)t;t?tA|������}nN#t$�j$r%}��d|�d|����Yd}~nd}~wtd|���xYw��!��}|�"tF�����"tF�����$||d|zdz|z����$|�d|zdzt;|��z��dS)Ng�������?rrzTest � )�endrrc��|�dd���dd��}|�dd���dd��}|�dd���dd��}|S)Nz''�SingleQuotez""�DoubleQuote�'r��")r�)�vals r �	FixQuotesz-IBMTestCases.eval_equation.<locals>.FixQuotesjsp���+�+�d�M�2�2�:�:�4��O�O�C��+�+�c�2�&�&�.�.�s�B�7�7�C��+�+�m�S�1�1�9�9�-��M�M�C��Jr"�rescaler�c�N��g|]!}�j|�����"Sr)r�r)rrr�s  �r �
<listcomp>z.IBMTestCases.eval_equation.<locals>.<listcomp>zs(���J�J�J�!�4�?�1�7�7�9�9�5�J�J�Jr"r")r�r�zDid not raise z in zRaised z when z	 disabledc���g|]}|�v�|��	Srr)r�e�theirexceptionss  �r r(z.IBMTestCases.eval_equation.<locals>.<listcomp>�s#���^�^�^�A��o�I]�I]�a�I]�I]�I]r"z; expected rzERROR:��keyzIncorrect answer for z -- got zIncorrect flags set in )%�TEST_ALL�randomr'�clear_flagsr
r�DEBUG�printr�	TypeError�AttributeError�
IndexErrorrr�r�r�rr#r3r.�	enumerate�count�EXTENDEDERRORTESTr�r�r��append�OrderedSignals�type�strr�r�eval�
getexceptions�sort�repr�assertEqual)r�r�Sides�L�idr�valstemp�ans�
exceptionsr%�fname�vals�conglomerate�quoter�ir$r��errorr*�ordered_errors�result�myexceptionsr+s`                      @r r
zIBMTestCases.eval_equationVs[�����	�F�M�O�O�d�2�2��F��� � �"�"�"�	0��G�G�D�M�M�E��a���� � �&�&�(�(�A��1��B��
,��g�r�s�+�+�+�+��a�D�J�J�L�L�E�����u�H��a���� � �&�&�(�(�A��A�$�C��1�2�2��J�J���>�:�6�	0�	0�	0��,�/�/�	0����	�	�	���&�&�&��F�� �$�$�U�E�2�2���I����F����e�,�,��������J�J�J�J�z�J�J�J�� ���.�	.�	.�I�,-�D�L��y�)�)�(�	.�	.�I�,-�D�L��y�)�)���)�)�	�	�F�A�s��y�y��~�~��!�Q�&�&��E�	���
"�+�c�1�C�7���"�S�(��!���	�#���A��:�:�:�$�6�!0�6�6��45���*�5�1�M�!�E�$�,�"=�"=�a�"@�"@�A�A�A�!�I�I�I�%�%�%���&K�L�L�L�L��
 %�!�!�!� �D�&�t�|�4�5�5�5� �I�I�I�'(�q�q�!�!�!�U�U�U�'4�5�5�5�5�5�5�5�5�����5����
56���*�5�1�1��L�/�/��2�2����'�'��4�<�8�8���K�K��N�N�N�N��i��n�n���	.��.P�!P�!P�(�
.�
.��,-���"�5�)�E��E�4�L�L��I�I�I�%�%�%���C�D�D�D�D��
�����D��t�|�,�-�-�-��I�I�I� �q�q�!�!�!�U�U�U�,�-�-�-�-�-�-�-�-�����-����
-.���"�5�)�)�_�^�^�^����)E�^�^�^�N�'�

E�

E��,-���"�5�)�E��E�4�L�L��I�I�I�%�%�%���C�D�D�D�D��
�����D��t�|�,�3�3�3��I�I�I�#�A�w�w�w�w����5�5�2�3�3�3�3�3�3�3�3�����3����(�
.�
.��,-���"�5�)�)��	&��$���%�%�%�	������&�&�F���-�-�-��S��f���.�.�/�/�����t�|�$�	6�	6�	6��I�I�I�5�5�5�!�!�4�5�5�5�5�5�5�5�5�����	��(�A���������)�)�+�+�����d��#�#�#������&�&�&������0�1�4�z�A�F�J�	L�	L�	L�	
�����'�!�+�j�8�3�|�;L�;L�L�	N�	N�	N�	N�	Ns�CD�$D&�-#I,�,J0�3J0�J+�+J0�<M�N!�$N!�8N�N!�&P�Q�Q�"+Q�Q�AS�T�%T�Tc�@���fd�t�jD��S)Nc�8��g|]}�jj|�|��Sr)r'�flags)rr*r�s  �r r(z.IBMTestCases.getexceptions.<locals>.<listcomp>�s(���J�J�J�a�D�L�4F�q�4I�J��J�J�Jr")r3rr�s`r r>zIBMTestCases.getexceptions�s$���J�J�J�J�7�4�<�0�J�J�J�Jr"c��|jtkr,|jjdkr|j�|��dS||j_dS�Nr�)rr��MAX_PRECr'r�r,)r�r,s  r r�zIBMTestCases.change_precision�sJ���<�1�����!6�)�!C�!C��L�(�(��.�.�.�.�.� $�D�L���r"c��||j_dSr)r'r-)r�r-s  r r�z#IBMTestCases.change_rounding_method�s�� (�����r"c��|jtkr,|jjdkr|j�|��dS||j_dSrU)rr�rVr'r��Emin�r��exps  r r�z IBMTestCases.change_min_exponent��J���<�1�����!6�)�!C�!C��L�(�(��-�-�-�-�-� #�D�L���r"c��|jtkr,|jjdkr|j�|��dS||j_dSrU)rr�rVr'r��EmaxrZs  r r�z IBMTestCases.change_max_exponent�r\r"c��||j_dSr)r'rb)r�rbs  r r�zIBMTestCases.change_clamp�s��"�����r"N)r��
__module__�__qualname__r�r�rr�rr
r>r�r�r�r�r�rr"r r<r<�s�������I�K1�K1�K1�Z4�4�4�e�e�e�)�)�)�$���~N�~N�~N�@K�K�K�%�%�%�
)�)�)�$�$�$�
$�$�$�
#�#�#�#�#r"r<c��eZdZ	d�Zd�Zd�Zd�Zeee	j
e���d�������Zd�Z
d�Zd	�Zd
�Zed���Zd�Zd
�Zd�ZdS)�ExplicitConstructionTestc�l�|jj}|�|��|d����dS)N�0�rr�rA�r�r�s  r �test_explicit_emptyz,ExplicitConstructionTest.test_explicit_empty�s6���,�&���������G�G�C�L�L�1�1�1�1�1r"c�V�|jj}|�t|d��dSr)rr��assertRaisesr3rgs  r �test_explicit_from_Nonez0ExplicitConstructionTest.test_explicit_from_None�s*���,�&�����)�W�d�3�3�3�3�3r"c	�p�|jj}|d��}|�t|��d��|d��}|�t|��d��|d��}|�t|��d��|d��}|�t|��d��t	dd	��D]`}d
D][}t	dd��D]H}|d
|z|zz}||��}|�t|��t|�����I�\�adS)N�-�45�{e��	500000123�����-45rre� ����r����r)rr�rAr<�range)r�r�r�n�signrrLs       r �test_explicit_from_intz/ExplicitConstructionTest.test_explicit_from_int�sQ���,�&��
�G�B�K�K������Q����&�&�&�
�G�I��������Q����-�-�-�
�G�C�L�L������Q����'�'�'�
�G�A�J�J������Q����%�%�%��q�"���	5�	5�A��
5�
5���r�1���5�5�A���1��q��)�A����
�
�A��$�$�S��V�V�S��V�V�4�4�4�4�5�
5�	5�	5r"c
��|jj}|jj}|jj}|�t|d����d��|�t|d����d��|�t|d����d��|�t|d����d��|�t|d����d��|�t|d����d	��|�t|d
����d��|�t|d����d
��|�t|d����d��|�t|d����d��dD]9}dD]4}|�t||dz|z����d���5�:|��5}d|j|<|�||d��|�t|ddd��|�||d��|�||d��|�||d��|�||d��|�||d��|�||d��ddd��dS#1swxYwYdS)Nr��NaNrn�45.34�45e2z4.5E+3�uglyz1.3E4 
z1.3E+4z  -7.89z-7.89z  3.45679  z3.45679z	1_3.3e4_0z1.33E+41�1_0_0_0�1000)r�r� u z	9.311E+28T�xyz�1234r�yu1 2 3u 1 2 r�u  z123z1_2_3)	rr�r��localcontextrAr<r.rjr3)r�r�r�r��lead�trail�cs       r �test_explicit_from_stringz2ExplicitConstructionTest.test_explicit_from_strings~���,�&���<�8���|�0��	
����W�W�R�[�[�)�)�5�1�1�1�	
����W�W�T�]�]�+�+�T�2�2�2�	
����W�W�W�-�-�.�.��8�8�8�	
����W�W�V�_�_�-�-�x�8�8�8�	
����W�W�V�_�_�-�-�u�5�5�5�	
����W�W�Z�0�0�1�1�8�<�<�<�����W�W�Y�/�/�0�0�'�:�:�:�����W�W�]�3�3�4�4�i�@�@�@�	
����W�W�[�1�1�2�2�J�?�?�?�����W�W�Y�/�/�0�0�&�9�9�9�2�	.�	.�D�6�
.�
.��� � ��W�W�T�K�-?�%�-G�%H�%H�!I�!I�!,�.�.�.�.�
.��\�^�^�	H�q�(,�A�G�$�%����.���?�?�?����i��&�#�s�C�C�C�
���.��9J�K�K�K����.��9O�P�P�P�
���.���B�B�B����.���H�H�H�
���.���E�E�E�
���.���G�G�G�'	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	Hs�#C
K:�:K>�K>��categoryc�F�ddl}|jj}|j���}|�d��}|�t
||����d��|�t
|�|����d��dS)Nr�9.999999)�	_testcapirr�r/�unicode_legacy_stringrAr<r�)r�r�r�r'rs     r �test_from_legacy_stringsz1ExplicitConstructionTest.test_from_legacy_stringsNs���	�����,�&���,�&�&�(�(���+�+�J�7�7������W�W�Q�Z�Z���*�5�5�5�����W�3�3�A�6�6�7�7��D�D�D�D�Dr"c��|jj}|d��}|�t|��d��|d��}|�t|��d��|d��}|�t|��d��|d��}|�t|��d��|d	��}|�t|��d
��|�t
|d��|�t
|d��|�t
|d
��|�t
||d��ddf��|�t
|d��|�t
|d��|�t
|d��|�t
|d��|�t
|d��|�t
|d��|�t
|d��|�t
|d��dS)N�r�rrre�r)�rwrrr�r�r�rw�r����r~�r�	r�r�r�r+rr�rwr�r�����-4.34913534E-17)rr�F�Infinity)r�r�r�r�r+r)�r�r)�r�rrr�r)rr�zwrong!)rr�r�)rr��1)rr�r)r)r�r�r�Nrr)r)r����r�r+rr)r)r��
r�r+rr)r)r�r�r��arr)rr�rAr<rjr�r�r�rs   r �test_explicit_from_tuplesz2ExplicitConstructionTest.test_explicit_from_tuplesZs7���,�&��
�G�\�#�#������Q����%�%�%�
�G�^�%�%������Q����'�'�'�
�G�*�,�,������Q����)�)�)�
�G�:�<�<������Q���!2�3�3�3�
�G�\�#�#������Q����,�,�,�	
���*�g�/C�E�E�E�	
���*�g�/F�H�H�H����*�g�/G�I�I�I����*�g����
�
�O�Q�/O�P�P�P�	
���*�g�/M�O�O�O����*�g�/G�I�I�I����*�g�/H�J�J�J�	
���*�g�}�>�>�>����*�g�/I�K�K�K����*�g�/G�I�I�I����*�g�/G�I�I�I����*�g�/H�J�J�J�J�Jr"c��|jj}|ddgdg��}|�t|��d��|dgd�dg��}|�t|��d��|gd���}|�t|��d��|dgd�df��}|�t|��d��dS)Nrrerr�r�r�r��rr�rAr<r�s   r �test_explicit_from_listz0ExplicitConstructionTest.test_explicit_from_list�s����,�&���G�Q���Q�K� � ������Q����%�%�%��G�Q�3�3�3�S�9�:�:������Q���!2�3�3�3��G�9�9�9�:�:������Q���!2�3�3�3��G�Q�3�3�3�S�9�:�:������Q���!2�3�3�3�3�3r"c�n�|jj}|�t|d����d��|�t|d����d��|�|d��|d����|�|d��|d����dS)NrFrT)rr��assertIs�boolrArgs  r �test_explicit_from_boolz0ExplicitConstructionTest.test_explicit_from_bool�s����,�&���
�
�d�7�7�1�:�:�&�&��.�.�.��
�
�d�7�7�1�:�:�&�&��-�-�-��������������4�4�4������������
�
�3�3�3�3�3r"c���|jj}|d��}||��}|�t|��d��|d��}||��}|�t|��d��|d��}||��}|�t|��d��|d��}||��}|�t|��d��dS)	Nrmrnrorprqrrrrer��r�r�rr*s    r �test_explicit_from_Decimalz3ExplicitConstructionTest.test_explicit_from_Decimal�s����,�&��
�G�B�K�K���G�A�J�J������Q����&�&�&�
�G�I�����G�A�J�J������Q����-�-�-�
�G�C�L�L���G�A�J�J������Q����'�'�'�
�G�A�J�J���G�A�J�J������Q����%�%�%�%�%r"c	�~�|jj}|d��}|�t|��|��|�t	|��d��|�|t
d���������|�|t
d���������|�|t
d���������|�t	|t
d������t	|d������|�t	|t
d������t	|d������|�t	|t
d������t	|d������|�t	|t
d	������t	|d
������td��D]\}tjd��tj
��d
zdz
z}|�|t
||�������]dS)N皙�����?�90.1000000000000000055511151231257827021181583404541015625�nan�inf�-infr}r��	-Infinity�-0.0�-0���{�G�z�?�@��?)rr�rAr;r<r$�floatr�r�rxr/�expovariate)r�r��rrLrs     r �test_explicit_from_floatz1ExplicitConstructionTest.test_explicit_from_float�sl���,�&���G�C�L�L������a���'�*�*�*�����Q���K�	M�	M�	M�������e���-�-�5�5�7�7�8�8�8�������e���-�-�9�9�;�;�<�<�<�������f�
�
�.�.�:�:�<�<�=�=�=�����W�W�U�5�\�\�2�2�3�3��W�W�U�^�^�,�,�	.�	.�	.�����W�W�U�5�\�\�2�2�3�3��W�W�Z�0�0�1�1�	3�	3�	3�����W�W�U�6�]�]�3�3�4�4��W�W�[�1�1�2�2�	4�	4�	4�����W�W�U�6�]�]�3�3�4�4��W�W�T�]�]�+�+�	-�	-�	-��s���	3�	3�A��"�4�(�(�F�M�O�O�c�,A�C�,G�H�A����Q��g�g�a�j�j� 1� 1�2�2�2�2�	3�	3r"c	��|jj}|jj}|jj}t	j|j�����}d|_|��}|�t|��d��|�	��}|�t|��d��|�
t|j	d��|�	d��}|�||��|�|�	d��|�	d����|d��}|�t|��d��|�	d��}|�t|��d��|�t|�	d����d	��|d
��}|�t|��d��|�	d
��}|�t|��d��|d
��}||��}|�t|��d��|�	|��}|�t|��d��d|_d|j
|<dD]]}|�	|��}|�t||����|�t!|��|���^d|_d|j
|<|�
||j	d��d|_|�t|�	d����d��|�t|�	d����d��|�t|�	d����d��|�t|�	d����d��|�
||j	d��|�
t"|j	d��|�
t|j	dd��|�
||j	d��|�
||j	d��d|_|�
||j	d ��|�
||j	|d ����d!|j
|<|�t|�	d ����d	��|�|j|��d!|j|<|�t|�	|d ������d	��|�|j|��dS)"Nr�re��in�z457E+2�456789z4.57E+5z3.14
r}r�r�z	-4.35E-17rorpz5.00E+8�T)	l����l����l����i�r��l��������z0E-017z0E-17rn�-Infr��NaN123r�)rr�r�r��5678z 1234�12_34�NaN12345F)rr�r�r�ro�
getcontextr,rAr<r�rjr3�assertIsInstancer.r$�
isinstancerrrS)r�r�r�r��ncr�prevdecr�s        r �$test_explicit_context_create_decimalz=ExplicitConstructionTest.test_explicit_context_create_decimal�sd���,�&���<�8���,�&��
�Y�t�|�.�.�0�0�
1�
1�����
�G�I�I������Q����%�%�%�����������Q����%�%�%�	
���)�R�%6��=�=�=�
���c�"�"�����a��)�)�)�����*�*�5�1�1��*�*�8�4�4�	6�	6�	6�
�G�H��������Q����*�*�*����h�'�'������Q����+�+�+�	
����R�.�.�x�8�8�9�9�5�A�A�A�
�G�:�<�<������Q���!2�3�3�3����D�F�F������Q����-�-�-��'�)�$�$���G�G��������Q����-�-�-����g�&�&������Q����+�+�+����%)���!�"�3�	(�	(�A��!�!�!�$�$�A��O�O�J�q�'�2�2�3�3�3����S��V�V�Q�'�'�'�'���� ��������'�2�#4�d�;�;�;��������R�.�.�x�8�8�9�9�7�C�C�C�����R�.�.�t�4�4�5�5�t�<�<�<�����R�.�.�v�6�6�7�7��E�E�E�����R�.�.�x�8�8�9�9�8�D�D�D�	
���*�B�,=�u�E�E�E����*�b�&7��I�I�I����)�R�%6���G�G�G����*�B�,=�w�G�G�G����*�B�,=�w�G�G�G�������*�B�,=�z�J�J�J����*�B�,=�!�'�*�-�-�	/�	/�	/�&+���!�"�����R�.�.�z�:�:�;�;�U�C�C�C������!1�2�3�3�3�%*���!�"�����R�.�.�w�w�z�/B�/B�C�C�D�D�e�L�L�L������!1�2�3�3�3�3�3r"c	���|jj}|j���}|�d��}|�t|��|��|�t
|��d��|�|�td�����	����|�|�td�����
����|�|�td�����
����|�t
|�td������t
|�d������|�t
|�td������t
|�d������|�t
|�td������t
|�d������|�t
|�td	������t
|�d
������d|_td��D]f}tjd
��tj
��dzdz
z}|�|t|�|�������gdS)Nr�z0.1000000000000000055511151231r�r�r�r}r�r�r�r��dr�r�r�r�)rr�r/r�rAr;r<r$r�r�r�r,rxr/r�)r�r�r�r�rLrs      r �'test_explicit_context_create_from_floatz@ExplicitConstructionTest.test_explicit_context_create_from_float$s����,�&��
�\�
!�
!�
#�
#�����c�"�"������a���'�*�*�*�����Q���!A�B�B�B�����)�)�%��,�,�7�7�?�?�A�A�B�B�B�����)�)�%��,�,�7�7�C�C�E�E�F�F�F�����)�)�%��-�-�8�8�D�D�F�F�G�G�G�����R�.�.�u�U�|�|�<�<�=�=��R�.�.�u�5�5�6�6�	8�	8�	8�����R�.�.�u�U�|�|�<�<�=�=��R�.�.�z�:�:�;�;�	=�	=�	=�����R�.�.�u�V�}�}�=�=�>�>��R�.�.�{�;�;�<�<�	>�	>�	>�����R�.�.�u�V�}�}�=�=�>�>��R�.�.�t�4�4�5�5�	7�	7�	7�����s���	=�	=�A��"�4�(�(�F�M�O�O�c�,A�C�,G�H�A����Q��b�&7�&7��&:�&:� ;� ;�<�<�<�<�	=�	=r"c��|jj}dddd�}|���D]1\}}|�t	||����|���2dS)Nr�z	0.0000372z-NaN2400)u1u٠.٠٣٧٢e-٣u-nan౨౪౦౦)rr��itemsrAr<)r�r��test_values�inputrs     r �test_unicode_digitsz,ExplicitConstructionTest.test_unicode_digits<sw���,�&���8C�-7����
 +�0�0�2�2�	<�	<�O�E�8����S������0�0�(�;�;�;�;�	<�	<r"N)r�r`rarhrkr{r�r
rr�ignore_warnings�DeprecationWarningr�r�r�r�r�rr�r�r�r�rr"r rcrc�s*������@�2�2�2�4�4�4�5�5�5�66H�6H�6H�p�!�$�_�$�.@�A�A�A�E�E�B�A�"�!��\�E�)K�)K�)K�V
4�
4�
4�4�4�4�&�&�&�.�3�3���3�.W4�W4�W4�r=�=�=�0	<�	<�	<�	<�	<r"rcc��eZdZeZdS)�CExplicitConstructionTestN�r�r`rar�rrr"r r�r�G��������G�G�Gr"r�c��eZdZeZdS)�PyExplicitConstructionTestN�r�r`ra�Prrr"r r�r�J��������G�G�Gr"r�c�4�eZdZ	d�Zd�Zd�Zd�Zd�Zd�ZdS)�ImplicitConstructionTestc�z�|jj}|�ttdt����dS)NzDecimal(5) + None�rr�rjr3r=�localsrgs  r �test_implicit_from_Nonez0ImplicitConstructionTest.test_implicit_from_NonePs1���,�&�����)�T�+>����I�I�I�I�Ir"c���|jj}|�t|d��dz��d��|�|d��dz|d����dS)Nrwrm�50l2}rr�rgs  r �test_implicit_from_intz/ImplicitConstructionTest.test_implicit_from_intTsk���,�&��	
����W�W�Q�Z�Z�"�_�-�-�t�4�4�4���������l�2�G�G�L�4I�4I�J�J�J�J�Jr"c�z�|jj}|�ttdt����dS)NzDecimal(5) + "3"r�rgs  r �test_implicit_from_stringz2ImplicitConstructionTest.test_implicit_from_string\�1���,�&�����)�T�+=�v�x�x�H�H�H�H�Hr"c�z�|jj}|�ttdt����dS)NzDecimal(5) + 2.2r�rgs  r �test_implicit_from_floatz1ImplicitConstructionTest.test_implicit_from_float`r�r"c��|jj}|�|d��|d��z|d����dS)Nrwrm�2rfrgs  r �test_implicit_from_Decimalz3ImplicitConstructionTest.test_implicit_from_DecimaldsE���,�&����������g�g�b�k�k�1�7�7�2�;�;�?�?�?�?�?r"c�����|jj}Gd�d��}|�t|��|d����d��|�t|d��|����d��|�t	d��d��|�t	d��d	��|�t	d
��d��|�t	d��d
��|�t	d��d��|�t	d��d��gd�}|D]�\}��t|��fd���t|��fd���|�t	d|zdz��d�zdz��|�t	d|zdz��d�zdz����dS)Nc�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�,ImplicitConstructionTest.test_rop.<locals>.Ec�&�dt|��zS)Nzdivmod �r<�r��others  r �
__divmod__z7ImplicitConstructionTest.test_rop.<locals>.E.__divmod__ms�� �3�u�:�:�-�-r"c�&�t|��dzS)Nz rdivmodrrs  r �__rdivmod__z8ImplicitConstructionTest.test_rop.<locals>.E.__rdivmod__os���5�z�z�J�.�.r"c�&�dt|��zS)Nzlt rrs  r �__lt__z3ImplicitConstructionTest.test_rop.<locals>.E.__lt__q����s�5�z�z�)�)r"c�&�dt|��zS)Nzgt rrs  r �__gt__z3ImplicitConstructionTest.test_rop.<locals>.E.__gt__sr	r"c�&�dt|��zS)Nzle rrs  r �__le__z3ImplicitConstructionTest.test_rop.<locals>.E.__le__ur	r"c�&�dt|��zS)Nzge rrs  r �__ge__z3ImplicitConstructionTest.test_rop.<locals>.E.__ge__wr	r"c�&�dt|��zS)Nzeq rrs  r �__eq__z3ImplicitConstructionTest.test_rop.<locals>.E.__eq__yr	r"c�&�dt|��zS)Nzne rrs  r �__ne__z3ImplicitConstructionTest.test_rop.<locals>.E.__ne__{r	r"N)r�r`rarrrrr
rrrrr"r �Er�ls�������
.�
.�
.�
/�
/�
/�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*r"rr�z	divmod 10z
10 rdivmodzDecimal(10) < E()zgt 10zDecimal(10) > E()zlt 10zDecimal(10) <= E()zge 10zDecimal(10) >= E()zle 10zDecimal(10) == E()zeq 10zDecimal(10) != E()zne 10))�+�__add__�__radd__)�-�__sub__�__rsub__)�*�__mul__�__rmul__)�/�__truediv__�__rtruediv__)�%�__mod__�__rmod__)z//�__floordiv__�
__rfloordiv__)z**�__pow__�__rpow__c�.��d�zt|��zS�Nr<r)r�r�lops  �r rz3ImplicitConstructionTest.test_rop.<locals>.<lambda>�s������c�%�j�j�0H�r"c�.��t|���zdzSr)r)r�r�rops  �r rz3ImplicitConstructionTest.test_rop.<locals>.<lambda>�s����E�
�
�S�0@�5�0H�r"zE()zDecimal(10)r<�10)rr�rA�divmodr=�setattr)r�r�r�oplist�symr*r,s     @@r �test_ropz!ImplicitConstructionTest.test_rophs,�����,�&��	*�	*�	*�	*�	*�	*�	*�	*�$	
��������W�W�R�[�[�1�1�;�?�?�?����������Q�Q�S�S�1�1�<�@�@�@�����1�2�2�G�<�<�<�����1�2�2�G�<�<�<�����2�3�3�W�=�=�=�����2�3�3�W�=�=�=�����2�3�3�W�=�=�=�����2�3�3�W�=�=�=�
�
�
��$�	1�	1�M�C��c��A�s�H�H�H�H�I�I�I��A�s�H�H�H�H�I�I�I����T�%�#�+�
�"=�>�>�"�S�[�4�/�
1�
1�
1����T�-�#�"5��"=�>�>�!�C�Z�%�/�
1�
1�
1�
1�	1�	1r"N)	r�r`rar�r�r�r�r�r2rr"r r�r�Ms�������@�J�J�J�K�K�K�I�I�I�I�I�I�@�@�@�01�01�01�01�01r"r�c��eZdZeZdS)�CImplicitConstructionTestNr�rr"r r4r4�r�r"r4c��eZdZeZdS)�PyImplicitConstructionTestNr�rr"r r6r6�r�r"r6c�X�eZdZ	d�Zd�Zd�Zd�Zedd��d���Zd�Z	d	S)
�
FormatTestc���|jj}gd�}|D]3\}}}|�t||��|��|���4|�t
|d��jd��dS)N)�)r*�0E-15z0e-15)r*z2.3E-15z2.3e-15)r*z2.30E+2z2.30e+2)r*z2.30000E-15z2.30000e-15)r*z1.23456789123456789e40z1.23456789123456789e+40)r*�1.5z1.5e+0)r*z0.15z1.5e-1)r*z0.015z1.5e-2)r*z0.0000000000015z1.5e-12)r*z15.0z1.50e+1)r*�-15z-1.5e+1)r*rez0e+0)r*�0E1�0e+1)r*�0.0z0e-1)r*�0.00�0e-2)�.6er:z0.000000e-9)rBrez0.000000e+6)rBr�z9.999999e+0)rBz	9.9999999z1.000000e+1)rBz-1.23e5z-1.230000e+5)rBz
1.23456789e-3z1.234568e-3)r�rere)r�r?r?)r��0E-2r@)r�z0.00E-8�0.0000000000)r�r=re)r�z3.2E1�32)r�z3.2E2�320)r�z3.20E2rF)r�z3.200E2z320.0)r�z3.2E-6z	0.0000032)�.6fr:�0.000000)rGr=rH)rGrerH)�.0frere)rIrAre)rI�
3.14159265�3)�.1frJ�3.1)z.4frJ�3.1416)rGrJ�3.141593)z.7frJ�	3.1415926)z.8frJrJ)z.9frJz3.141592650)�grere)rQr?r?)rQr=r>)�Gr=z0E+1)rQz0E-5z0.00000)rQz0E-6rH)rQz0E-7z0e-7)rQz-0E2z-0e+2)�.0grJrK)z.0nrJrK)z.1grJrK)z.2grJrM)z.5grJrN)z.7grJrO)z.8grJrP)z.9grJrJ)z.10grJrJ)r!r=�0%)r!�0E0rT)r!z0E-1rT)r!rCrT)r!z0E-3z0.0%)r!z0E-4z0.00%)�.3%re�0.000%)rV�0E10rW)rVz0E-10rW)rVz2.34z234.000%)rVz1.234567z123.457%)�.0%�1.23z123%)r*r}r})r��-NaN123r[)z+g�NaN456z+NaN456)z.3e�Infr�)z.16fr�r�)rS�-sNaNr^)r��1.00r_)�6�123�   123)z<6raz123   )z>6rarb)z^6raz 123  )z=+6raz+  123)�#<10r}z
NaN#######)rcz-4.3z
-4.3######)z#<+10�0.0130z
+0.0130###)z#< 10rdz
 0.0130###)z@>10r�z
@-Infinity)z#>5r�r�)z?^5raz?123?)z%^6raz%123%%)z ^6�-45.6z-45.6 )z/=10rez
-/////45.6)z/=+10�45.6z
+/////45.6)z/= 10rfz
 /////45.6)z=10r�z
-Infinity)z^16r�z-Infinity)z>10�1.2345z
1.2345)z<10rgz
1.2345)�,�1234567z	1,234,567)rh�123456�123,456)rh�12345�12,345)rhr�z1,234)rhrara)rh�12rn)rhr�r�)rhrere)rhz-1234567z
-1,234,567)rh�-123456�-123,456)z7,rjrk)z8,rj� 123,456)�08,rjz	0,123,456)z+08,rjz+123,456)z 08,rjrq)rrrorp)z+09,rjz
+0,123,456)z07,�1234.56�1,234.56)rrrsrt)z09,rsz	01,234.56)z010,rsz
001,234.56)z011,rs�0,001,234.56)z012,rsru)z08,.1fz1234.5z01,234.5)rh�
1.23456789rv)z,%z
123.456789z12,345.6789%)z,erjz
1.23456e+5)z,Erjz
1.23456E+5)rLr�r�)rLz-.0r�)rL�-.01r�)�z.1f�0.r?)�z6.1fryz   0.0)rz�-1.z  -1.0)rx�-0.r?)rx�.01r?)rxrwr?)�z.2fryr@)r~r|r@)r~z.001r@)r~z-.001r@)�z.1ery�0.0e+1)rr|r�)�z.1Ery�0.0E+1)r�r|r�)zz.2e�-0.001z-1.00e-3)zz.2gr�r�)zz.2%r�z-0.10%)�zfz-0.0000z0.0000)rx�
-00000.000001r?)rx�-00000.r?)rx�-.0000000000r?)r~r�r@)r~r�r@)r~r�r@)rxz.09�0.1)rxz-.09z-0.1)� z.0fr|z 0)�+z.0fr|z+0)�-z.0fr|re)r�r{�-1)r�r{r�)r�r{r�)zz>6.1fr|zzz-0.0)zz>z6.1fr|zzzz0.0)zx>z6.1fr|zxxx0.0)u
🖤>z6.1fr|u🖤🖤🖤0.0)z>z6.1fr|z0.0)zz3,.10Fz
-6.24E-323rD)r>rery)za=-7.0z0.12345zaaaa0.1)z	<^+15.20%r�z<<+Infinity%<<<)z>,%�sNaN1234567zsNaN1234567%)z=10.10%r�z
   NaN123%rs-020)rr�rA�formatrjr3�
__format__)r�r�r��fmtrrOs      r �test_formattingzFormatTest.test_formatting�s����,�&��N�N�N��^*�	>�	>�N�C��F����V�G�G�A�J�J��4�4�f�=�=�=�=�	
���)�W�W�Q�Z�Z�%:�G�D�D�D�D�Dr"c��|j���5}t|_|�t|j�d��d��d��ddd��dS#1swxYwYdS)Nr�r~r@)rr�r�r-rAr�r��r��ctxs  r �+test_negative_zero_format_directed_roundingz6FormatTest.test_negative_zero_format_directed_rounding{s���
�\�
&�
&�
(�
(�	$�C�(�C�L����V�D�L�$8�$8��$B�$B�F�K�K�"�
$�
$�
$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s�A	A0�0A4�7A4c�z�|�tt|j�d��d��dS)NrZ�fz)rjrr�rr�r�s r �test_negative_zero_bad_formatz(FormatTest.test_negative_zero_bad_format�s2�����*�f�d�l�.B�.B�6�.J�.J�D�Q�Q�Q�Q�Qr"c��	��	��jj�		ddlm}n%#t$r��d��YnwxYw�fd�}d?�	�fd�	}d|gd���d	d
�}d	||g��dd
�}d	|gd���dd
�}d
|ddd|g��dd
�}d�d��|gd���d�d��d
�}��|�	d��|��d����|�	d��|��d����|�	d��|��d����|�	d��|��d����|d|��d����|d|��d����|d|��d����|d|��d����|d|d��d����|d|d��d ����|d|d��d ����|d|d��d!����|d"|d#��d$����|d"|d%��d$����|d"|d&��d'����|d"|d(��d)����|d*|d&��d+����|d*|d(��d+����|d*|d,��d-����|d*|d.��d/����|d*|d0��d/����|d*|d1��d2����|d3|d(��d4����|d3|d,��d4����|d3|d.��d4����|d3|d0��d5����|d3|d1��d6����|d3|d7��d6����|d3|d8��d9����|d3|d:��d;����|�	d<��|d=��d>��dS)@Nr��CHAR_MAX�locale.CHAR_MAX not availablec�f���jtkrd�d�|D����n|S)Nr�c�,�g|]}t|����Sr��chrrs  r r(zCFormatTest.test_n_format.<locals>.make_grouping.<locals>.<listcomp>����0�0�0�q�C��F�F�0�0�0r")rr��join)�lstr�s �r �
make_groupingz/FormatTest.test_n_format.<locals>.make_grouping�s5���59�\�Q�5F�5F�2�7�7�0�0�C�0�0�0�1�1�1�C�Or"ryc����jtkr�|���||��S�|���||���S)N)�_localeconv)rr�r�)r�overrider�r�r�s   ��r �get_fmtz)FormatTest.test_n_format.<locals>.get_fmt�sO����|�q� � ��w�q�z�z�,�,�S�(�;�;�;��w�q�z�z�,�,�S�h�,�G�G�Gr"�.�r�r�rrh��
decimal_point�grouping�
thousands_sepr�r�&rr�rrs¿r�s´z12.7z12,7z1-2&7i�[z123,456,789�	123456789z123 456 789l��c}z123456-78-9012-3z.6nz
1.23457e+8z
1,23457e+8z
1&23457e+8r��03nr��04n�05n�01234�06n�001234�90rm�07nz012,345�08nz	0,012,345�09n�010nz
00,012,345i@�z1-2345-6z	01-2345-6z0-01-2345-6�011n�012nz00-01-2345-6�013nz
000-01-2345-6�-1.5�020nu-0´000´000´000´001¿5�Nry)rr��localer��ImportError�skipTest�decoderA)
r�r�r�r��en_US�fr_FR�ru_RU�crazy�dotsep_wider�s
`        @r �
test_n_formatzFormatTest.test_n_format�s
�����,�&��	;�'�'�'�'�'�'�'���	;�	;�	;��M�M�9�:�:�:�:�:�	;����	P�	P�	P�	P�	P�	H�	H�	H�	H�	H�	H�	H�"�&��y�y�y�1�1�!����"�&���z�2�2� ����"�%�
�i�i�i�0�0�!����"�%�
�q�!�Q��&9�:�:�!����*�0�0��9�9�%�
�i�i�i�0�0�)�0�0��9�9����	
����������%�8�8�&�A�A�A�����������%�8�8�&�A�A�A�����������%�8�8�&�A�A�A�����������%�8�8�'�B�B�B�������E�2�2�M�B�B�B�������E�2�2�K�@�@�@�������E�2�2�M�B�B�B��������6�6�8J�K�K�K�������E�5�9�9�<�H�H�H�������E�5�9�9�<�H�H�H�������E�5�9�9�<�H�H�H�������E�5�9�9�<�H�H�H�	
������u�e�4�4�f�=�=�=�������u�e�4�4�f�=�=�=�������u�e�4�4�g�>�>�>�������u�e�4�4�h�?�?�?��������u�5�5�x�@�@�@��������u�5�5�x�@�@�@��������u�5�5�y�A�A�A��������u�5�5�{�C�C�C��������u�5�5�{�C�C�C��������v�6�6��E�E�E���������6�6�
�C�C�C���������6�6�
�C�C�C���������6�6�
�C�C�C���������6�6��D�D�D���������7�7��G�G�G���������7�7��G�G�G���������7�7��H�H�H���������7�7��I�I�I�	
����������+�v�F�F�H�	J�	J�	J�	J�	Js��9�9�LC_ALL�ps_AFc��|jj}tj��d}tj��d}|dkr)|�d�|d����|dkr)|�d�|d����|�t|d��d��d	��dS)
Nr�r�u٫z5inappropriate decimal point separator ({!a} not {!a})u٬z1inappropriate thousands separator ({!a} not {!a})z
100000000.123ryu100٬000٬000٫123)rr�r��
localeconvr�r�rA)r�r�r�r�s    r �&test_wide_char_separator_decimal_pointz1FormatTest.test_wide_char_separator_decimal_point�s����,�&���)�+�+�O�<�
��)�+�+�O�<�
��H�$�$��M�M�,�,2�F�=�(�,K�,K�
M�
M�
M��H�$�$��M�M�,�,2�F�=�(�,K�,K�
M�
M�
M�	
������� 8� 8�#�>�>�9�	;�	;�	;�	;�	;r"c��Gd�d|jj��}|�d��}|�|jj|j��|�d��}|�|jj|j��dS)Nc��eZdZd�ZdS)�;FormatTest.test_decimal_from_float_argument_type.<locals>.Ac�.�t|��|_dSr)r;�a_type)r�r�s  r �__init__zDFormatTest.test_decimal_from_float_argument_type.<locals>.A.__init__�s��"�1�g�g����r"N�r�r`rar�rr"r �Ar��s#������
&�
&�
&�
&�
&r"r�g@E@�*)rr��
from_floatrAr�)r�r�r�s   r �%test_decimal_from_float_argument_typez0FormatTest.test_decimal_from_float_argument_type�s���	&�	&�	&�	&�	&���$�	&�	&�	&�
�L�L����������-�q�x�8�8�8�
�L�L����������-�q�x�8�8�8�8�8r"N)
r�r`rar�r�r�r�r	r�r�rr"r r8r8�s�������-�WE�WE�WE�r$�$�$�R�R�R�WJ�WJ�WJ�r�_�X�w�'�'�;�;�(�'�;� 9�9�9�9�9r"r8c��eZdZeZdS)�CFormatTestNr�rr"r r�r��r�r"r�c��eZdZeZdS)�PyFormatTestNr�rr"r r�r��r�r"r�c�R�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�ArithmeticOperatorsTestc��|jj}|d��}|d��}|�||z|d����|�||z|d����|dz}|�||d����|�t|��t|����d|z}|�||d����|�t|��t|����||z
}|�||d����|dz
}|�||d����dS)N�-11.1�22.2z11.1rwz-6.1�16.1�rr�rAr;�r�r��d1�d2r�s     r �
test_additionz%ArithmeticOperatorsTest.test_additions\���,�&��
�W�W�
�
��
�W�V�_�_��	
����B�������0�0�0�����B�������0�0�0�
��F������G�G�F�O�O�,�,�,�����a���$�r�(�(�+�+�+�
��F������G�G�F�O�O�,�,�,�����a���$�r�(�(�+�+�+�	�b�������W�W�V�_�_�-�-�-�	�a�������W�W�V�_�_�-�-�-�-�-r"c��|jj}|d��}|d��}|�||z
|d����|�||z
|d����|dz
}|�||d����|�t|��t|����d|z
}|�||d����|�t|��t|����||z}|�||d����|dz}|�||d����dS)	Nr�r�z-33.3z33.3rwz-16.1r�z-38.3r�r�s     r �test_subtractionz(ArithmeticOperatorsTest.test_subtractionsd���,�&��
�W�W�
�
��
�W�V�_�_��	
����B����� 0� 0�1�1�1�����B�������0�0�0�
��F������G�G�G�,�,�-�-�-�����a���$�r�(�(�+�+�+�
��F������G�G�F�O�O�,�,�,�����a���$�r�(�(�+�+�+�	�b�������W�W�W�-�-�.�.�.�	�a�������W�W�W�-�-�.�.�.�.�.r"c��|jj}|d��}|d��}|�||z|d����|�||z|d����|dz}|�||d����|�t|��t|����d|z}|�||d����|�t|��t|����||z}|�||d����|dz}|�||d����dS)N�-5rKr<rwz-25z-75r�r�s     r �test_multiplicationz+ArithmeticOperatorsTest.test_multiplication9sZ���,�&��
�W�T�]�]��
�W�S�\�\��	
����B�������/�/�/�����B�������/�/�/�
��F������G�G�E�N�N�+�+�+�����a���$�r�(�(�+�+�+�
��F������G�G�E�N�N�+�+�+�����a���$�r�(�(�+�+�+�	�b�������W�W�U�^�^�,�,�,�	�a�������W�W�U�^�^�,�,�,�,�,r"c��|jj}|d��}|d��}|�||z|d����|�||z|d����|dz}|�||d����|�t|��t|����d|z}|�||d����|�t|��t|����||z}|�||d����|dz}|�||d����dS)	Nr��2�-2.5z-0.4r�z-1.25z-0.8z-0.625r�r�s     r �
test_divisionz%ArithmeticOperatorsTest.test_divisionUs^���,�&��
�W�T�]�]��
�W�S�\�\��	
����B�������0�0�0�����B�������0�0�0�
��F������G�G�G�,�,�-�-�-�����a���$�r�(�(�+�+�+�
��F������G�G�F�O�O�,�,�,�����a���$�r�(�(�+�+�+�	�b�������W�W�V�_�_�-�-�-�	�a�������W�W�X�.�.�/�/�/�/�/r"c��|jj}|d��}|d��}|�||z|d����|�||z|d����|dz}|�||d����|�t|��t|����d|z}|�||d����|�t|��t|����||z}|�||d����|dz}|�||d����dS)N�5r�rer�r��rr�r�s     r �test_floor_divisionz+ArithmeticOperatorsTest.test_floor_divisionqsZ���,�&��
�W�S�\�\��
�W�S�\�\��	
����R�������.�.�.�����R�������.�.�.�
�!�G������G�G�C�L�L�)�)�)�����a���$�r�(�(�+�+�+�
��G������G�G�C�L�L�)�)�)�����a���$�r�(�(�+�+�+�	�r�	������W�W�S�\�\�*�*�*�	�q�������W�W�S�\�\�*�*�*�*�*r"c��|jj}|d��}|d��}|�||z|d����|�||z|d����|dz}|�||d����|�t|��t|����d|z}|�||d����|�t|��t|����||z}|�||d����|dz}|�||d	����dS)
Nr�r��25rEr��625r��16807�390625r�r�s     r �
test_poweringz%ArithmeticOperatorsTest.test_powering�s^���,�&��
�W�S�\�\��
�W�S�\�\��	
����R�������/�/�/�����R�������/�/�/�
�!�G������G�G�E�N�N�+�+�+�����a���$�r�(�(�+�+�+�
��G������G�G�G�,�,�-�-�-�����a���$�r�(�(�+�+�+�	�r�	������W�W�T�]�]�+�+�+�	�q�������W�W�X�.�.�/�/�/�/�/r"c��|jj}|d��}|d��}|�||z|d����|�||z|d����|dz}|�||d����|�t|��t|����d|z}|�||d����|�t|��t|����||z}|�||d����|dz}|�||d����dS�Nr�r�r�r�r�r�r�s     r �test_modulez#ArithmeticOperatorsTest.test_module�sZ���,�&��
�W�S�\�\��
�W�S�\�\��	
����B�������-�-�-�����B�������-�-�-�
��F������G�G�C�L�L�)�)�)�����a���$�r�(�(�+�+�+�
��F������G�G�C�L�L�)�)�)�����a���$�r�(�(�+�+�+�	�b�������W�W�S�\�\�*�*�*�	�a�������W�W�S�\�\�*�*�*�*�*r"c�p�|jj}|d��}|d��}t||��\}}|�||d����|�||d����|�t	|��t	|����|�t	|��t	|����t|d��\}}|�||d����|�||d����|�t	|��t	|����|�t	|��t	|����td|��\}}|�||d����|�||d����|�t	|��t	|����|�t	|��t	|����dSr�)rr�r.rAr;)r�r�r�r��p�qs      r �test_floor_div_modulez-ArithmeticOperatorsTest.test_floor_div_module�s����,�&��
�W�S�\�\��
�W�S�\�\����B�����A�����G�G�C�L�L�)�)�)�����G�G�C�L�L�)�)�)�����a���$�r�(�(�+�+�+�����a���$�r�(�(�+�+�+���A�����A�����G�G�C�L�L�)�)�)�����G�G�C�L�L�)�)�)�����a���$�r�(�(�+�+�+�����a���$�r�(�(�+�+�+���2�����A�����G�G�C�L�L�)�)�)�����G�G�C�L�L�)�)�)�����a���$�r�(�(�+�+�+�����a���$�r�(�(�+�+�+�+�+r"c�F�|jj}|�|d��
|d����|�|d��|d����|�t|d����t|d������dS)Nrmrq)rr�rA�absrgs  r �test_unary_operatorsz,ArithmeticOperatorsTest.test_unary_operators�s����,�&�����'�'�"�+�+��w�w�s�|�|�4�4�4����'�'�"�+�+��w�w�s�|�|�4�4�4�����W�W�R�[�[�)�)�3�w�w�s�|�|�+<�+<�=�=�=�=�=r"c��|jj}|jj}|jj}|d��}|d��}|d��}|d��}||f||f||f||f||ff}||f||f||f||f||f||f||ff}	tjtjtjtjf}
tj	tj
f}|��5}d|j|<||	zD]^\}
}|
|zD]S}||
|��}|tj
urdnd}|�||d�
||j|
||�����T�_	ddd��n#1swxYwY|��5}d	|j|<|D][\}
}|D]S}||
|��}|tj
urdnd}|�||d�
||j|
||�����T�\|	D]N\}
}|D]F}|�|tj	|
|��|�|tj
|
|���G�O||	zD]"\}
}|
D]}|�|||
|����#	ddd��dS#1swxYwYdS)
Nr}�sNaNr]r�rTFz8expected {0!r} for operator.{1}({2!r}, {3!r}); got {4!r}r)rr�r�r��operator�lt�le�gt�ge�eq�ner.r�r�r�rj)r�r�r�r�ryrrLr��
qnan_pairs�
snan_pairs�	order_ops�equality_opsr�rr��op�gotrs                  r �test_nan_comparisonsz,ArithmeticOperatorsTest.test_nan_comparisons�s����,�&���<�8���|�0���G�E�N�N���G�F�O�O���G�E�N�N���G�C�L�L����V�a��V�a��V�a��V�a��V�;�
���V�a��V�a��V�a��V�a��V�a��V�a��V�K�
��K���h�k�8�;�F�	��{�H�K�/���\�^�^�
	?�s�*+�C�I�&�'�"�Z�/�
?�
?���1�#�l�2�?�?�B��"�Q��(�(�C�')�X�[�'8�'8�t�t�e�H��M�M�(�C�!,�,2�F�$�b�k�1�a��->�->�?�?�?�?�?�
?�
	?�
	?�
	?�
	?�
	?�
	?�
	?�
	?�
	?�
	?�
	?����
	?�
	?�
	?�
	?��\�^�^�	B�s�*+�C�I�&�'�"�
?�
?���1�&�?�?�B��"�Q��(�(�C�')�X�[�'8�'8�t�t�e�H��M�M�(�C�#.�.4�f�$�b�k�1�a��/>�/>�?�?�?�?�?�#�
K�
K���1�&�K�K�B��%�%�&6���Q��J�J�J��%�%�&6���Q��J�J�J�J�K�#�Z�/�
B�
B���1�#�B�B�B��%�%�&6��A�q�A�A�A�A�B�
B�%	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs&�	A/E�E	�E	�C"I
�
I�Ic�$�|jj}|d���|d����}|�|d���d��|��|�t
|d��jd��dS)Nrr��-2)rr�rvrArjr3r�s   r �test_copy_signz&ArithmeticOperatorsTest.test_copy_sign!s����,�&���G�A�J�J� � ������-�-����������-�-�b�1�1�1�5�5�5����)�W�W�Q�Z�Z�%9�4�@�@�@�@�@r"N)r�r`rar�r�r�r�r�r�rrrrrrr"r r�r��s�������D�.�.�.�8/�/�/�8-�-�-�80�0�0�8+�+�+�80�0�0�8+�+�+�8,�,�,�6>�>�>�8B�8B�8B�tA�A�A�A�Ar"r�c��eZdZeZdS)�CArithmeticOperatorsTestNr�rr"r rr(r�r"rc��eZdZeZdS)�PyArithmeticOperatorsTestNr�rr"r rr+r�r"rc
��|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|d��}	|d��}
|	|
z}|j	�
��|j���|	|
z}|��5}
|�
|
j|��|�||
j|	d��|�
|
j|��|��5}|�
|j|��|�
|j|��|�||j|	|d����|�
|j|��~ddd��n#1swxYwY|�|
j|��~
ddd��n#1swxYwY|�||d����|�||d����|��}|�
|j|��||||fD]"}|�|j|���#dS)Nrr�rr	�0.333333333333333333333333)rr�r�r�r�r�r�r�r��finish1r��synchro�waitr$rSrj�divide�compare�assertFalserA)r&r�r�r�r�r�r�r�r�r��d3�test1�test2�c2�c3�c1�sigs                 r �thfunc1r.0s����k�!�G��{�3���[�/�N��{�#�H���%�I��k�!�G���'�J��;�+�L�	�����B�	�����B��r�E�E��K�O�O�����K�������r�E�E�	�����2����r�x��(�)�)�)�������B��:�:�:����r�x��/�0�0�0�
�\�^�^�	�r��N�N�2�8�G�,�-�-�-��N�N�2�8�N�3�4�4�4����-�r�z�2�w�w�v���O�O�O��N�N�2�8�$4�5�6�6�6��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�����!1�2�3�3�3���������������������O�O�E�7�7�#?�@�@�A�A�A��O�O�E�7�7�#?�@�@�A�A�A�	����B��N�N�2�8�G�$�%�%�%���N�4D�D�'�'��������
�&�&�&�&�'�'s8�=A(G1�%BF9�-G1�9F=	�=G1�F=	�$G1�1G5�8G5c	���|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|d��}	|d��}
|	|
z}|��}d|_	|	|
z}
|��5}|�
|j|��|�||j
|d��d��|�
|j|��||��5}|�
|j|��|�|j|��d|j|<|�||j|d��d��|�
|j|��~ddd��n#1swxYwY|�|j|��|�|j|��~ddd��n#1swxYwY|j���|j���|�||d����|�|
|d	����|�|j|��|�
|j|��||||fD]"}|�|j|���#dS)
Nrr���1e425000000��Tz1e-425000000r z0.333333333333333333)rr�r�r�r�r�r�r�r�r,r$rSrj�multiplyr&r.r$r"r��finish2rA)r&r�r�r�r�r�r�r�r�r�r'r(�thiscontextr)r*r+r-s                 r �thfunc2r6Ws9���k�!�G��{�3���[�/�N��{�#�H���%�I��k�!�G���'�J��;�+�L�	�����B�	�����B��r�E�E��*�,�,�K��K���r�E�E�	����
�2����r�x��(�)�)�)�����2�;���
�0F�0F��L�L�L����r�x��)�*�*�*�
�\�+�
&�
&�	�"��N�N�2�8�G�,�-�-�-��O�O�B�H�X�.�/�/�/�"&�B�H�Y�����Y��	�7�7�>�3J�3J�C�P�P�P��N�N�2�8�I�.�/�/�/��
	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	������+�,�,�,�������+�,�,�,��
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��K�O�O�����K�O�O�����O�O�E�7�7�#?�@�@�A�A�A��O�O�E�7�7�#9�:�:�;�;�;��O�O�K�%�i�0�1�1�1��N�N�;�$�W�-�.�.�.���N�4D�D�0�0������)�#�.�/�/�/�/�0�0s9�A2H�BF,� H�,F0	�0H�3F0	�4AH�H�Hc��eZdZ	d�ZdS)�
ThreadingTestc�l�|jj}|jtkr!|jjs|�d��|j}|j}|j}d|_d|_d|_tj	��|_
tj	��|_tj	��|_tj
t|f���}tj
t|f���}|���|���|j���|j���t$|jD]"}|�|j|���#|���|���||_||_||_dS)Nzcompiled without threading�r����)�targetr)r�DefaultContextr��HAVE_THREADSr�r,r^rY�	threading�Eventr"r!r4�Threadr.r6�startr#r3r&rSr�)r�r=�	save_prec�	save_emax�	save_emin�th1�th2r-s        r �test_threadingzThreadingTest.test_threading�sr����4���<�1���T�\�%>���M�M�6�7�7�7�#�'�	�"�'�	�"�'�	� ���'���(��� ��(�(��� ��(�(��� ��(�(�����g�T�G�<�<�<����g�T�G�<�<�<���	�	�����	�	�������������������4�<�(�	8�	8�C����^�1�#�6�7�7�7�7����
�
�
����
�
�
�'���'���'����r"N)r�r`rarHrr"r r8r8�s&������:�
$(�$(�$(�$(�$(r"r8c��eZdZeZdS)�CThreadingTestNr�rr"r rJrJ�r�r"rJc��eZdZeZdS)�PyThreadingTestNr�rr"r rLrL�r�r"rLc��eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�
UsabilityTestc��|jj}|d��}|d��}|d��}|�||��|�||��|�||��|�||��|�||��|�||��|�||��|�||��|�|d��|�d|��|�|d��|�|d��|�|d��|�|t����|�|t��tt|td������}|dd�}tj
|��|���|�||��dS)Nz23.42rn�rmr�g�����Y@@r�)rr��
assertGreater�assertGreaterEqual�
assertLess�assertLessEqualrA�assertNotEqual�object�list�maprxr/�shuffler?)r�r��da�db�dcr��bs       r �test_comparison_operatorsz'UsabilityTest.test_comparison_operators�s����,�&��
�W�W�
�
��
�W�W�
�
��
�W�T�]�]��	
���2�r�"�"�"�����B�'�'�'�����B�������R��$�$�$�����R� � � ����B��#�#�#����R��$�$�$�����B�'�'�'�	
���2�r�"�"�"�����B��������R� � � �	
���B��'�'�'����B��%�%�%����B����)�)�)����B��'�'�'�
��W�e�C�j�j�)�)�*�*��
�q�q�q�T����q����	����������A�����r"c��|jj}|d��}|d��}|�|d��|�|d��|�|d��|�|d��|�|d��|�|d��|�d|��|�d|��|�d|��|�d|��|�d|��|�d|��|�d|d����dS)N�0.25�3.0�@��?g�?r�r�)rr�rSrTrQrRrUrA�r�r�rZr[s    r �test_decimal_float_comparisonz+UsabilityTest.test_decimal_float_comparison�sN���,�&��
�W�V�_�_��
�W�U�^�^������C� � � ����R��%�%�%����2�t�$�$�$�����D�)�)�)����B��$�$�$�����T�"�"�"����3��#�#�#�����R�(�(�(�����b�!�!�!����T�2�&�&�&����D�"�%�%�%�����b�!�!�!����C������0�0�0�0�0r"c��|jj}|d��}|d��}|�|d��|�d|��|�|d��|�d|��|�d|��|�|d��|�|d��|�d|��|�|�d��t��|�|�d��t��|�|�d��t��|�|�d��t��dS)Nr`ray�?y�?y@y@�?)	rr�rUrAr�r�NotImplementedr
rrds    r �test_decimal_complex_comparisonz-UsabilityTest.test_decimal_complex_comparison�s\���,�&��
�W�V�_�_��
�W�U�^�^�����B��)�)�)����V�b�)�)�)�����g�'�'�'����'�B�'�'�'����&�2�&�&�&�����f�&�&�&����B��)�)�)����V�b�)�)�)��
�
�b�i�i��'�'��8�8�8��
�
�b�i�i��'�'��8�8�8��
�
�b�i�i��'�'��8�8�8��
�
�b�i�i��'�'��8�8�8�8�8r"c
�	�|jj}t|jj}|jj}|jj}|jj}trtjnd}trtj	nd}trtj
nd}|||���}	||	��5||	_|�|d��|dd����|�|dd��|d����|�|dd��|d	t|��z����|�|d
t|��z��|dd����|�|dd��|d	t|��z����|�|d
t|��z��|dd����|�|d��|dd
����|�|dd
��|d����d|	_|�|d��dz|dd����|�|dd��|d��dz��|�|dd��|dt|��z����|�|dt|��z��|dd����|�|d��|dd����|�|d��|dd����|�|d��|dd����|�|d��|dd����|�||d��j|dd����|�t,|dd���|d������|�|d��|dd����|�|dd��|d����ddd��dS#1swxYwYdS)N�ɚ;�6e�ilʈ�r^rYrrl	��Z��mH;5�Bru�1ez-1el��!�0QYr�r�i,r�i�6l�c(	�9er�l�g�]�{l�����g�]r�r�i����)rr�r�Fractionr/r�r�r�r��MIN_EMIN�	MIN_ETINYr,rSr<rArUrTrRrQrjrr�rgr)
r��Dr�r/r�r��emax�emin�etinyr�s
          r � test_decimal_fraction_comparisonz.UsabilityTest.test_decimal_fraction_comparisons����L� ���d�l�#�,���,�&���|�0���<�8���-�q�z�z�I���.�q�z�z�J�� �1����k���G��D�)�)�)��
�\�!�_�_�	5�	5��A�F��O�O�A�A�a�D�D�!�!�A�&K�"L�"L�M�M�M��O�O�A�A�b�!F�G�G���1���N�N�N��O�O�A�A�a��F�F�A�A�d�S��Z�Z�&7�$8�$8�9�9�9��O�O�A�A�e�c�%�j�j�0�1�1�1�1�Q�q�6�6�:�:�:��O�O�A�A�a� 9�:�:�A�A�d�S��Z�Z�>O�<P�<P�Q�Q�Q��O�O�A�A�e�c�%�j�j�0�1�1�1�1�Q�7P�3Q�3Q�R�R�R����Q�Q�u�X�X�q�q��2�w�w�/�/�/����Q�Q�q��W�W�a�a��h�h�/�/�/��A�F������!���Q����!�A���/�/�/������!�A�����!���Q��/�/�/�� � ���9�j�!9�!9�1�1�T�C��I�I�=M�;N�;N�O�O�O��#�#�A�A�d�S��Y�Y�&6�$7�$7���9�j�9Q�9Q�R�R�R����q�q��x�x���;�s�);�);�<�<�<����q�q��x�x���<��)<�)<�=�=�=��O�O�A�A�f�I�I�q�q��S�'9�'9�:�:�:��O�O�A�A�f�I�I�q�q��c�':�':�;�;�;����.���%������2�c���K�K�K��M�M�.�!�!�B�s�)�)�*:�*:�1�1�U�8�8�*D�*D�E�E�E������%���!�!�B�s�)�)�4�4�4������"�S�	�	�1�1�U�8�8�4�4�4�7	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s�OQ3�3Q7�:Q7c�D�|jj}|d��}tj|��}|�t	|��t	|����tj|��}|�t	|��t	|����dS)Nz43.24)rr�rorArD�deepcopy)r�r�rr�r\s     r �test_copy_and_deepcopy_methodsz,UsabilityTest.test_copy_and_deepcopy_methods1s����,�&���G�G�����I�a�L�L������A����1���&�&�&�
�]�1�
�
������B����A���'�'�'�'�'r"c�F����jj��jj}�fd�}|�d����|�d����|�d����|�d����|�d�����fd�dD��}|��d	���d
���d���d���d
���d���d���d���d���d���d���d���d���d���d���d��g��|D];}��||��tt
|�������<gd�}|D]H}t|��}�|��}��||��t|�����I|��5}	�d��}
d|	_||
��}d|	_||
��}d|	_||
��}
��||����||
��d|	_dd z}
��|�|
����||
����ddd��dS#1swxYwYdS)!Nc�z��t|��}|���}��||��|Sr)�hash�__hash__rA)rr�r]r�s   �r �hashitz.UsabilityTest.test_hash_method.<locals>.hashit?s6����Q���A��
�
���A����Q��"�"�"��Hr"rPr�r��nan123�-NaNc	�h��g|].}tdd��D]}dD]}�|d|z|zz������/S)���r�rtr)rx)rr5ryrzr�s    �r r(z2UsabilityTest.test_hash_method.<locals>.<listcomp>Lsu���,�,�,�� %�c�2���,�,��#*�	,�,� �	�w�t�Q��T�A�X��/�/�,�,�,�,�,r")r������rs�!�=�>�?�@�A�Br�r�r@z-0.000rXz-0E12�10.0z	-23.00000�1230E100z
-4.5678E50l��z	1.634E100z
90.697E100z
188.83E100z
1652.9E100�	56531E100)r�r�r?z-.0e1z34.0�2.5z
112390.625z	-0.515625z123456789.1�r�r��'iLi�)	rr�r��extendrAr}rr�r,)r�r�rr�r�test_stringsrr�rr�r�h1�h2�h3r�s`             @r �test_hash_methodzUsabilityTest.test_hash_method:s������,�&���|�0��	�	�	�	�	�	��w�w�r�{�{������w�w�z�"�"�#�#�#���w�w�{�#�#�$�$�$���w�w�x� � �!�!�!���w�w�v������,�,�,�,�!A�,�,�,��
	������
�
����
�
���������!�!��������� � ���������$�$���
�#�#����%�%���)�*�*����$�$����%�%����%�%����%�%����$�$�)�	�	�	�0!�	>�	>�E����V�V�E�]�]�D��U���,<�,<�=�=�=�=�B�B�B���	1�	1�A��a���A����
�
�A����V�V�A�Y�Y��Q���0�0�0�0�
�\�^�^�	<�q���
�&�&�A��A�F������B��A�F������B��A�F������B����R��$�$�$����R��$�$�$��A�F����A����V�V�G�G�A�J�J�/�/������;�;�;�#	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�B+J�J�Jc���|jj}|�tt|d����|d��}|�t	|��t�|����Gd�d��}Gd�d||��}|d��}|�t	|��t�|����dS)Nr	r}c��eZdZd�ZdS)�-UsabilityTest.test_hash_method_nan.<locals>.Hc��dS)Nr�rr�s r r~z6UsabilityTest.test_hash_method_nan.<locals>.H.__hash__�s���rr"N)r�r`rar~rr"r �Hr��s#������
�
�
�
�
r"r�c��eZdZdS)�-UsabilityTest.test_hash_method_nan.<locals>.DN)r�r`rarr"r rsr��s�������Dr"rs)rr�rjr3r}rArVr~)r�r�rr�rss     r �test_hash_method_nanz"UsabilityTest.test_hash_method_nan�s����,�&�����)�T�7�7�6�?�?�;�;�;�����������e���f�o�o�e�&<�&<�=�=�=�	�	�	�	�	�	�	�	�	�	�	�	�	���	�	�	���%��������e���f�o�o�e�&<�&<�=�=�=�=�=r"c��|jj}|d��}|d��}d}d}|�t||��|��|�t||��|��|�t	||��|��|�t	||��|��|�t||��|��|�t||��|��|�t	||��|��|�t	||��|��dS)N�15.32z28.5r�r�)rr�r��min�max)r�r�r�r��l1�l2s      r �test_min_and_max_methodsz&UsabilityTest.test_min_and_max_methods�s���,�&��
�W�W�
�
��
�W�V�_�_��
��
��	
�
�
�c�"�R�j�j�"�%�%�%��
�
�c�"�R�j�j�"�%�%�%��
�
�c�"�R�j�j�"�%�%�%��
�
�c�"�R�j�j�"�%�%�%�	
�
�
�c�"�R�j�j�"�%�%�%��
�
�c�"�R�j�j�"�%�%�%��
�
�c�"�R�j�j�"�%�%�%��
�
�c�"�R�j�j�"�%�%�%�%�%r"c��|jj}|�|d����|�|d����dS)Nrz0.372)rr�r&r$rgs  r �test_as_nonzerozUsabilityTest.test_as_nonzero�sL���,�&��	
��������$�$�$�������(�(�)�)�)�)�)r"c��|jj}|d��}|�t|��d��|�t	|��d��dS)Nr�zDecimal('15.32'))rr�rAr<r@r�s   r �test_tostring_methodsz#UsabilityTest.test_tostring_methods�sZ���,�&���G�G��������Q����)�)�)�����a���"4�5�5�5�5�5r"c
��|jj}|d��}|d��}|�t|��d��|�t|��d��|�t	|��d��|�t	|��d��gd�}|D]6\}}|�tj||����|���7|�tt
j|d����|�tt
j|d����|�tt
j|d	����|�tt
j|d
����|�tt
j|d����gd�}|D]6\}}|�tj
||����|���7|�tt
j
|d����|�tt
j
|d����|�tt
j
|d	����|�tt
j
|d
����|�tt
j
|d����gd
�}|D]1\}}|�t||����|���2|�tt|d����|�tt|d����|�tt|d	����|�tt|d
����|�tt|d����gd�}|D]@\}}}	|�tt||��|����|	���AdS)N�66r�r�r�g�p=
ף.@)	�z123.00ro��3.2r�)�3.54r�)�3.899r�)�-2.3r��z-11.0i�����r?r�z-0E3r)�89891211712379812736.1l�{�#'s�{Mr�r	r�r]r�)	r�)r�r��r�r��r�r��r�r�r�r�r�)r�l�{�#'s�{M)r�r�r�r�r�r�r�r�)z-3.5���)r�r�)r�r�)�-0.5r)�0.5r)r;r)r�r)z3.5r�))�123.456r�z0E+4)r�r�z0E+3)r�r�z1E+2)r�ruz1.2E+2)r�rra)r�rz123.5)r�r�123.46)r�r�r�)r�r�z123.4560)z123.455rr�)z123.445rz123.44)r]r�r})r�i��r})�sNaN314r��NaN314)
rr�rArr��mathr�rjr�
OverflowError�ceil�roundr<)
r�r�r�r��
test_pairsrrL�test_triplesryr�s
          r �test_tonum_methodsz UsabilityTest.test_tonum_methods�s����,�&��
�W�T�]�]��
�W�W�
�
��	
����R���"�%�%�%�����R���"�%�%�%�	
����r���B�'�'�'�����r���E�*�*�*�
�
�
�
��	8�	8�D�A�q����T�Z����
�
�3�3�Q�7�7�7�7����*�d�j�'�'�&�/�/�B�B�B����*�d�j�'�'�&�/�/�B�B�B����*�d�j�'�'�(�2C�2C�D�D�D����-���W�W�U�^�^�D�D�D����-���W�W�V�_�_�E�E�E�
�
�
�
��	7�	7�D�A�q����T�Y�w�w�q�z�z�2�2�A�6�6�6�6����*�d�i������A�A�A����*�d�i������A�A�A����*�d�i����1B�1B�C�C�C����-���G�G�E�N�N�C�C�C����-���G�G�F�O�O�D�D�D����
�$�	3�	3�D�A�q����U�7�7�1�:�:�.�.��2�2�2�2����*�e�W�W�V�_�_�=�=�=����*�e�W�W�V�_�_�=�=�=����*�e�W�W�X�->�->�?�?�?����-�������?�?�?����-�������@�@�@����� $�	;�	;�G�A�q�!����S��w�w�q�z�z�1�!5�!5�6�6��:�:�:�:�	;�	;r"c�*�|jj}dD]�}t||����}|�t	j|����t	jd|��}|�||�d��rdnd����dS)N)r��nan1234�-nanz-nan2468r�rg�)	rr�r�r$r�r�rurAr	)r�r�rr�rzs     r �test_nan_to_floatzUsabilityTest.test_nan_to_float s����,�&��7�	G�	G�A��g�g�a�j�j�!�!�A��O�O�D�J�q�M�M�*�*�*��=��a�(�(�D����T�1�<�<��+<�+<�#E�4�4�#�F�F�F�F�		G�	Gr"c��|jj}dD].}||��}|�tt|���/dS)N)�snanz-snan�snan1357z	-snan1234)rr�rjrr�)r�r�rrs    r �test_snan_to_floatz UsabilityTest.test_snan_to_float*sM���,�&��;�	4�	4�A����
�
�A����j�%��3�3�3�3�	4�	4r"c��|jj}|d��}|�|tt	|������|d��}|�|tt	|������|d��}|�|tt	|������|d��}|�|tt	|������dS)Nr�r�r�r�)rr�rAr=r@r�s   r �test_eval_round_tripz"UsabilityTest.test_eval_round_trip0s����,�&��
�G�\�#�#������D��a���M�M�*�*�*�
�G�^�%�%������D��a���M�M�*�*�*�
�G�*�,�,������D��a���M�M�*�*�*�
�G�:�<�<������D��a���M�M�*�*�*�*�*r"c�L�|jj}|d��}|�|���d��|d��}|�|���d��|d��}|�|���d��|d��}|�|���d��|d	��}|�|���d
��|d��}|�|���d��|d
��}|�|���d��|d��}|�|���d��|d��}|�|���d��|d��}|�|���d��|d��}|�|���d��|d��}|�|���d��|d��}|�|���d��dS)Nrr�rqr�r�r�r�)rr�r�)r�rrr�rrwr�r�r�)r�r�rrwr�r�r�)r�rrr�%)rr�r�)rrr�)rr�ry)rr�ry)rr��N�rrr�)rrry)rr�r�)r)rrr�rr�)rr�r�)rr�rA�as_tupler�s   r �
test_as_tuplezUsabilityTest.test_as_tupleCso���,�&��
�G�A�J�J����������|�5�5�5�
�G�C�L�L����������~�7�7�7�
�G�%�&�&����������'L�N�N�N�
�G�J������������~�7�7�7�
�G�3�5�5����������'?�A�A�A��G�'�)�)����������}�5�5�5��G�[�"�"����������}�5�5�5�
�G�4�6�6����������'@�B�B�B��G�(�*�*����������|�5�5�5��G�\�#�#����������|�5�5�5�
�G�^�%�%����������~�6�6�6��G�+�-�-����������~�6�6�6��G�+�-�-����������~�6�6�6�6�6r"c	��|jj}|�t|j|d����|�t|j|d����|�t
|j|d����|�t
|j|d����t
dd��D]�}t
d��D]�}dD]�}|d	|||fz��}|���}|\}}|�|t��|�|t��|�|t��|�
|d
��|�tj
||��d��|�||��||��z|�����dS)Nr�r�r��snan123r�r��)rrz%s%dE%drr)rr�rjr��as_integer_ratiorrxr��tuplerrQrAr��gcd)	r�r�r[�coeffrzr�pqrrs	         r �test_as_integer_ratioz#UsabilityTest.test_as_integer_ratiops���,�&��	
���-�!�2�G�G�E�N�N�	D�	D�	D����-�!�2�G�G�F�O�O�	E�	E�	E����*�!�2�G�G�F�O�O�	E�	E�	E����*�!�2�G�G�I�4F�4F�	H�	H�	H���Q�<�<�	A�	A�C��t���
A�
A��$�A�A�D���	�T�5�#�,>� >�?�?�A��+�+�-�-�B��D�A�q��)�)�"�e�4�4�4��)�)�!�S�1�1�1��)�)�!�S�1�1�1��&�&�q�!�,�,�,��$�$�T�X�a��^�^�Q�7�7�7��$�$�W�W�Q�Z�Z�'�'�!�*�*�%<�a�@�@�@�@�!A�
A�	A�	Ar"c�
�|jj}Gd�d|��}|d��}|d��}||z}|�t|��|��|�|��}|�t|��|��tj|��}|�t|��|��|�||��tj|��}|�t|��|��|�||��|d��}||��}|�t|��|��|�||��||��}|�t|��|��|�||��|�|jd��||��}|�t|��|��|�||��d|_||��}|�t|��|��|�||��|�|jd��dS)Nc��eZdZdZdS)�1UsabilityTest.test_subclassing.<locals>.MyDecimalN)r�r`rar�rr"r �	MyDecimalr��s�������A�A�Ar"r�rr�1.0r+)	rr�r�r;r�rorAryr�)r�r�r�r�r�rrr5s        r �test_subclassingzUsabilityTest.test_subclassing�s\���,�&��	�	�	�	�	��	�	�	��Y�q�\�\��
�Y�q�\�\����G���
�
�d�1�g�g�w�'�'�'��F�F�2�J�J���
�
�d�1�g�g�w�'�'�'��I�b�M�M���
�
�d�1�g�g�y�)�)�)�����B�����M�"�����
�
�d�1�g�g�y�)�)�)�����B����
�G�E�N�N���G�A�J�J���
�
�d�1�g�g�w�'�'�'�����A����
�I�a�L�L���
�
�d�1�g�g�y�)�)�)�����A�����
�
�a�c�4� � � �
�G�A�J�J���
�
�d�1�g�g�w�'�'�'�����A��������I�a�L�L���
�
�d�1�g�g�y�)�)�)�����A�����
�
�a�c�4� � � � � r"c
��|jj}|jj}|��}|�t	|d�������t	|�|d��������dS�Nr)rr�r�rAr<r��r�r�r�r�s    r �test_implicit_contextz#UsabilityTest.test_implicit_context�s����,�&���\�,�
�
�J�L�L������W�W�Q�Z�Z�_�_�.�.�/�/��Q�V�V�G�G�A�J�J�/�/�0�0�	2�	2�	2�	2�	2r"c�T,�|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj	}	|jj
}
|jj}||����5}d|_d|_
d|_|d��}
|d��}|d��}|���|�t#|
�d�����d��|�|j|	��|�|j|
��|���|�||jd���|�|j|��|�|�d���d	��|�|�d���d
��|���|�t#|
�d�����d��|�|j|	��|�|j|
��|���|�||d��jd���|�|j|��|���|�t#|
�d�����d
��|�|j|	��|�|j|
��|���|�||d��jd���|�|j|��|���|�t#|
�d�����d��|�||d��jd���|�|j|��|���|�t#|
�d�����d��|�||jd���|�|j|��|���|�t#|�d�����d��|�||d��jd���|�|j|��|���|�t#|�d�����d��|�||d��jd���|�|j|��|���|�t#|�d�����d��|�||jd���|�|j|��|�t#|� d�����d��|���|�t#|�!d�����d��|�|j|��|�|j|	��|�|j|
��|�|j|��|�|j|��|���|�||j!d���|�|j|��d|_"|�t#|�#d�����d��d|_"|���t#|
�$|d��d�����}|�|d��|�||
j$|d��d���|�|j|��|���t#|
�%dd�����}|�|d��|�||
j%|d��d���|�|j|��|���t#|
�&dd�����}|�|d��|�||
j&dd���|�|j|��|���t#|
�'dd�����}|�|d��|�||
j'dd���|�|j|��|���t#|
�(dd�����}|�|d ��|�||
j(dd���|�|j|��|���t#|
�)dd�����}|�|d��|�||
j)|d��d���|�|j|��|���t#|
�*dd�����}|�|d��|�||
j*|d��d���|�|j|��|���t#|
�+dd�����}|�|d��|�||
j+|d��d���|�|j|��|���t#|
�,dd�����}|�|d��|�||
j,|d��d���|�|j|��|���t#|
�-dd�����}|�|d ��|�||j-dd���|�|j|��|���t#|
�.d!d�����}|�|d"��|�||
j.dd���|�|j|��|���t#|
�/dd�����}|�|d#��|�||
j/d$d���|�|j|��|���t#|
�0d!d�����}|�|d"��|�||
j0d$d���|�|j|��|���t#|
�1d!d%d�����}|�|d&��|�||
j1|d��d%d���|�|j|��td|_3t#|d'���4dd�(����}|�|d��tj|_3t#|d'���4dd�(����}|�|d)��t#|d'���4tld�(����}|�|d��|���|�||d��j4d���|�|j|��td|_3t#|d'���7dd�(����}|�|d��tj|_3t#|d'���7dd�(����}|�|d)��t#|d'���7tld�(����}|�|d��|���|�||d��j7d���|�|j|��td|_3t#|d'���8dd�(����}|�|d��tj|_3t#|d'���8dd�(����}|�|d)��t#|d'���8tld�(����}|�|d��|���|�||d��j8d���|�|j|��tl|_3t#|d*���9|d+��dd�,����}|�|d-��tj|_3t#|d*���9|d+��dd�,����}|�|d.��t#|d*���9|d+��tld�,����}|�|d-��|���|�||j9|d/��tld�(��|�|j|��ddd��n#1swxYwY||����5}d|_d|_
d|_|d�0��5}|�|jd��|�|j
d��|�|jd��ddd��n#1swxYwYddd��dS#1swxYwYdS)1Nr�r2i����111�1e9999z1e-9999�r'z1.609487E+48FTz4.709530ruz2.045323r�r�1111000z
9.999999E+999r	r�re�
+Subnormalz0E-1005r�Nan891287828�
NaN1287828i  r�r}�e�101ror-r�11100z1.11E+9r�r��225r;�r-r'r�z1.50001z1e-3)r[r-r'z1.501z1.500z1e-10)r�):rr�r/r�r�r�r�r�r�r�r�r�r,r^rYr0rAr<r[r$rSrjr�r�r��ln�log10�logbrzr�r�r�rhr��capitalsr�r%rjrdr�r�r�r�r�r�r��rotate�scaleb�shift�fmar0r-�to_integralr�r�r�r��quantize)r�r�r/r�r�r�r�r�r�r�r�r�r�rr��zrFr's                  r �test_none_argszUsabilityTest.test_none_args�s���,�&���,�&���|�0���<�8����4���<�(���L�*�	��L�*�	��,�&���,�&���,�&��
�\�'�'�)�)�
$�
$�W	7���A�F��A�F��A�F������A����!�!�A���	�"�"�A�
�M�M�O�O�O����S����t��!4�!4�5�5�~�F�F�F��O�O�A�G�G�,�-�-�-��O�O�A�G�G�,�-�-�-�
�M�M�O�O�O����h���t��<�<�<��O�O�A�G�H�-�.�.�.��M�M�!�+�+�d�+�3�3�U�;�;�;��M�M�!�.�.��.�6�6��=�=�=�
�M�M�O�O�O����S����d��!3�!3�4�4�j�A�A�A��O�O�A�G�G�,�-�-�-��O�O�A�G�G�,�-�-�-�
�M�M�O�O�O����.���������M�M�M��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O����S������!6�!6�7�7��D�D�D��O�O�A�G�G�,�-�-�-��O�O�A�G�G�,�-�-�-�
�M�M�O�O�O����.������0A�4��P�P�P��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O����S������!5�!5�6�6��<�<�<����n�g�g�a�j�j�o�t��L�L�L��O�O�A�G�N�3�4�4�4�
�M�M�O�O�O����S��!1�!1�$�!1�!?�!?�@�@�)�L�L�L����.��0@�$��O�O�O��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O����S����d��!;�!;�<�<�o�N�N�N����.������0J�TX��Y�Y�Y��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O����S����T��!:�!:�;�;�Z�H�H�H����.������0I�SW��X�X�X��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O����S����T��!:�!:�;�;�S�A�A�A����h���T��B�B�B��O�O�A�G�H�-�.�.�.����S������!=�!=�>�>��M�M�M�
�M�M�O�O�O����S������!5�!5�6�6�	�B�B�B��O�O�A�G�G�,�-�-�-��O�O�A�G�G�,�-�-�-��O�O�A�G�G�,�-�-�-��O�O�A�G�I�.�/�/�/��O�O�A�G�I�.�/�/�/�
�M�M�O�O�O����h�����=�=�=��O�O�A�G�H�-�.�.�.��A�J����S������!>�!>�?�?��K�K�K��A�J�
�M�M�O�O�O��a�i�i���� 7� 7��i�F�F�G�G�C����S�,�/�/�/����.��	�7�7�6�?�?�TX��Y�Y�Y��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�&�&�t�T�&�:�:�;�;�C����S�$�'�'�'����.��0@�'�'�%�.�.�Z^��_�_�_��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�m�m�C��m�6�6�7�7�C����S�%�(�(�(����.��
�s�D��Q�Q�Q��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�l�l�3��l�5�5�6�6�C����S�%�(�(�(����.���c�4��P�P�P��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�m�m�C��m�6�6�7�7�C����S�$�'�'�'����.��
�s�D��Q�Q�Q��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�e�e�C��e�.�.�/�/�C����S�%�(�(�(����.���w�w�v���PT��U�U�U��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�i�i��T�i�2�2�3�3�C����S�%�(�(�(����.��	�7�7�6�?�?�TX��Y�Y�Y��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�e�e�C��e�.�.�/�/�C����S�%�(�(�(����.���w�w�v���PT��U�U�U��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�i�i��T�i�2�2�3�3�C����S�%�(�(�(����.��	�7�7�6�?�?�TX��Y�Y�Y��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�&�&�s�D�&�9�9�:�:�C����S�$�'�'�'����.��0@�#�t��T�T�T��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�h�h�q�$�h�/�/�0�0�C����S�'�*�*�*����.���#�t��L�L�L��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�h�h�q�$�h�/�/�0�0�C����S�)�,�,�,����.���%���N�N�N��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�g�g�a��g�.�.�/�/�C����S�'�*�*�*����.������M�M�M��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��a�e�e�A�q�$�e�/�/�0�0�C����S�%�(�(�(����h���w�w�x�/@�/@�!�T��R�R�R��O�O�A�G�H�-�.�.�.�)�A�J��g�g�e�n�n�0�0�$��0�M�M�N�N�C����S�#�&�&�&�#�A�J��g�g�e�n�n�0�0�$��0�M�M�N�N�C����S�#�&�&�&��g�g�e�n�n�0�0�(�D�0�Q�Q�R�R�C����S�#�&�&�&�
�M�M�O�O�O����.������0K�UY��Z�Z�Z��O�O�A�G�$4�5�6�6�6�(�A�J��g�g�e�n�n�6�6��d�6�S�S�T�T�C����S�#�&�&�&�#�A�J��g�g�e�n�n�6�6��d�6�S�S�T�T�C����S�#�&�&�&��g�g�e�n�n�6�6��RV�6�W�W�X�X�C����S�#�&�&�&�
�M�M�O�O�O����.������0Q�[_��`�`�`��O�O�A�G�$4�5�6�6�6�(�A�J��g�g�e�n�n�6�6��d�6�S�S�T�T�C����S�#�&�&�&�#�A�J��g�g�e�n�n�6�6��d�6�S�S�T�T�C����S�#�&�&�&��g�g�e�n�n�6�6��RV�6�W�W�X�X�C����S�#�&�&�&�
�M�M�O�O�O����.������0Q�[_��`�`�`��O�O�A�G�$4�5�6�6�6�!�A�J��g�g�i�(�(�1�1�g�g�f�o�o�PT�^b�1�c�c�d�d�C����S�'�*�*�*�#�A�J��g�g�i�(�(�1�1�g�g�f�o�o�PT�^b�1�c�c�d�d�C����S�'�*�*�*��g�g�i�(�(�1�1�g�g�f�o�o�PX�bf�1�g�g�h�h�C����S�'�*�*�*�
�M�M�O�O�O����.��
�G�G�G�<L�<L�W_�im��n�n�n��O�O�A�G�$4�5�6�6�6�oW	7�W	7�W	7�W	7�W	7�W	7�W	7�W	7�W	7�W	7�W	7����W	7�W	7�W	7�W	7�r�\�'�'�)�)�
$�
$�	/���G�L��G�L��G�L���$�'�'�'�
/�1�� � ����+�+�+�� � ����-�-�-�� � ����.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�		/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/sb�ASAU'�U'AU+�U.AU+�V"AX�V'AAX�W9AX�XAX		�X	AX�XAX		�X
AX�XAX!�X$AX!c	���|jj}|�|d���d��|d���|d������|�|d���d��|d���|d������|�|d���d��|d���|d������|�|d���d��|d���|d������|�|d���d��|d���|d������|�|d���d��|d���|d������|�|d���	d��|d���	|d������|�|d���
d��|d���
|d������|�|d���d��|d���|d������|�|d���d��|d���|d������|�|d���
d��|d���
|d������|�|d���d��|d���|d������|�|d���d��|d���|d������|�|d	���d��|d	���|d������|�|d���d
��|d���|d
������|�|d���d��|d���|d������|�|d���d
��|d���|d
������|�|d���d��|d���|d������|�|d���|d��d��|d���|d��|d������|�|d���dd��|d���|d��|d������|�|d���d|d����|d���|d��|d������dS)Nr�r�iu'��i7ror�r�irr�z9.123���r�rui�rm�C)rr�rAr%rjrlrnrdr�r�r�r�r�r�r�r	r�rr�rrrrgs  r �test_conversions_from_intz'UsabilityTest.test_conversions_from_int�	s���,�&����������+�+�A�.�.� �����+�+�G�G�A�J�J�7�7�	9�	9�	9���������2�2�1�5�5� �����2�2�7�7�1�:�:�>�>�	@�	@�	@���������1�1�!�4�4� �����1�1�'�'�!�*�*�=�=�	?�	?�	?���������5�5�a�8�8� �����5�5�g�g�a�j�j�A�A�	C�	C�	C���������3�3�D�9�9� �����3�3�G�G�D�M�M�B�B�	D�	D�	D���������2�2�4�8�8� �����2�2�7�7�4�=�=�A�A�	C�	C�	C���������3�3�D�9�9� �����3�3�G�G�D�M�M�B�B�	D�	D�	D���������)�)�#�.�.� �����)�)�'�'�#�,�,�7�7�	9�	9�	9���������-�-�c�2�2� �����-�-�g�g�c�l�l�;�;�	=�	=�	=���������)�)�#�.�.� �����)�)�'�'�#�,�,�7�7�	9�	9�	9���������-�-�c�2�2� �����-�-�g�g�c�l�l�;�;�	=�	=�	=���������1�1�#�6�6� �����1�1�'�'�#�,�,�?�?�	A�	A�	A���������/�/��4�4� �����/�/������=�=�	?�	?�	?���������4�4�T�:�:� �����4�4�W�W�T�]�]�C�C�	E�	E�	E���������,�,�Q�/�/� �����,�,�W�W�Q�Z�Z�8�8�	:�	:�	:���������3�3�D�9�9� �����3�3�G�G�D�M�M�B�B�	D�	D�	D�������)�)�0�0��6�6� ���)�)�0�0������?�?�	A�	A�	A���������+�+�B�/�/� �����+�+�G�G�B�K�K�8�8�	:�	:�	:�	
��������)�)�'�'�"�+�+�r�:�:� �����)�)�'�'�"�+�+�w�w�r�{�{�C�C�	E�	E�	E���������)�)�"�b�1�1� �����)�)�'�'�"�+�+�w�w�r�{�{�C�C�	E�	E�	E���������)�)�"�g�g�b�k�k�:�:� �����)�)�'�'�"�+�+�w�w�r�{�{�C�C�	E�	E�	E�	E�	Er"N)r�r`rar^rerhrwrzr�r�r�r�r�r�r�r�r�r�r�r�r�rrrr"r rNrN�s_������4�"�"�"�H1�1�1�&9�9�9�((5�(5�(5�T(�(�(�L<�L<�L<�\>�>�>�&�&�&�(*�*�*�6�6�6�e;�e;�e;�NG�G�G�4�4�4�+�+�+�&+7�+7�+7�ZA�A�A�B-!�-!�-!�^2�2�2�m/�m/�m/�^/E�/E�/E�/E�/Er"rNc��eZdZeZdS)�CUsabilityTestNr�rr"r rr�	r�r"rc�,��eZdZeZ�fd�Z�fd�Z�xZS)�PyUsabilityTestc���t�����tj��|_tjd��dS�NiX��superr��sys�get_int_max_str_digits�_previous_int_limit�set_int_max_str_digits�r�r�s �r r�zPyUsabilityTest.setUp�	�<���
���
�
����#&�#=�#?�#?�� ��"�4�(�(�(�(�(r"c�z��tj|j��t�����dSr�rrrr�tearDownrs �r r!zPyUsabilityTest.tearDown�	�3����"�4�#;�<�<�<�
���������r"�r�r`rar�rr�r!�
__classcell__�r�s@r rr�	�V��������G�)�)�)�)�)�
��������r"rc�`�eZdZd�Zd�Zd�Zed���Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�ZdS)
�PythonAPItestsc�v�|jj}|�t|tj����|�t|tj����|�|d��tj��|�	|d��tj��dSr�)
rr�r$�
issubclass�numbers�Numberr&�Realr��assertNotIsInstancergs  r �test_abczPythonAPItests.test_abc�	s����,�&�����
�7�G�N�;�;�<�<�<�����G�W�\�:�:�;�;�;����g�g�a�j�j�'�.�9�9�9�� � ������W�\�:�:�:�:�:r"c��ttjdz��D�]>}|jj}t
jd}|jt
jd<|d��}tj||��}tj|��}|�	||��t�r�t�d��}t�d��}tt
jd<tj||��}	tt
jd<tj|	��}
|�|
tj��|�	|
|��tt
jd<tj||��}tt
jd<tj|��}
|�|
tj��|�	|
|��t�d���
��}t�d���
��}tt
jd<tj||��}	tt
jd<tj|	��}
|�|
tj��|�	|
|��tt
jd<tj||��}tt
jd<tj|��}
|�|
tj��|�	|
|��|t
jd<��@dS)Nrrz-3.141590000z-3.123e81723)rx�pickle�HIGHEST_PROTOCOLrr�r�modules�dumps�loadsrAr�r�r�r��DecimalTuple)r��protor��savedecimalrrr*rr��sxr��sys            r �test_picklezPythonAPItests.test_pickle
s����6�2�Q�6�7�7�0	1�0	1�E��l�*�G��+�i�0�K�&*�\�C�K�	�"����'�'�A���Q��&�&�A���Q���A����Q��"�"�"��"
'��I�I�n�-�-���I�I�n�-�-��)*���I�&��\�!�U�+�+��)*���I�&��L��$�$���%�%�a���3�3�3�� � ��A�&�&�&�)*���I�&��\�!�U�+�+��)*���I�&��L��$�$���%�%�a���3�3�3�� � ��A�&�&�&��I�I�n�-�-�6�6�8�8���I�I�n�-�-�6�6�8�8��)*���I�&��\�!�U�+�+��)*���I�&��L��$�$���%�%�a���8�8�8�� � ��A�&�&�&�)*���I�&��\�!�U�+�+��)*���I�&��L��$�$���%�%�a���8�8�8�� � ��A�&�&�&�%0�C�K�	�"�"�a0	1�0	1r"c	���|jj}tdd��D]�}d|dzz}|�t	||����t	t|������||��}|�t��}|�|t	|����|����|�tt|d����|�tt|d����|�tt|d����|�tt|d����dS)	N������%0.2f�Y@r�r�r�r�)rr�rxrArr�rr�rjrr��r�r�rrrr�s      r �test_intzPythonAPItests.test_int5
s.���,�&���t�S�!�!�	1�	1�A��1�u�9�%�A����S������_�_�c�%��(�(�m�m�<�<�<����
�
�A��
�
�j�)�)�A����W�W�S��V�V�_�_�a�0�0�0�0����*�c�7�7�6�?�?�;�;�;����*�c�7�7�6�?�?�;�;�;����-��g�g�e�n�n�=�=�=����-��g�g�f�o�o�>�>�>�>�>r"c��|jj}tdd��D].}|�t	||����|���/dS)Nrvi)rr�rxr�r�r�r�rs   r �test_small_intszPythonAPItests.test_small_intsF
sR���,�&���r�3���	.�	.�A��M�M�#�g�g�a�j�j�/�/�1�-�-�-�-�	.�	.r"c	��|jj}tdd��D]�}d|dzz}|�t	||����t	t|������||��}|�t��}|�|tj	|����|����dS)Nr=r>r?r@)
rr�rxrArr�rr�r��truncrAs      r �
test_trunczPythonAPItests.test_truncM
s����,�&���t�S�!�!�	8�	8�A��1�u�9�%�A����S������_�_�c�%��(�(�m�m�<�<�<����
�
�A��
�
�j�)�)�A����W�W�T�Z��]�]�3�3�Q�7�7�7�7�	8�	8r"c	���|jj}Gd�d|��}|�t||����|�d��}|�t
|��|��|�t|��d��|�|jd��d}|�|�|��||����|�|�td�����
����|�|�td���������|�|�td	���������|�t|�td������t|d
������|�t|�td������t|d������|�t|�td	������t|d������|�t|jd
��td��D]f}tjd��tj��dzdz
z}|�|t|�|�������gdS)Nc��eZdZd�ZdS)�1PythonAPItests.test_from_float.<locals>.MyDecimalc��d|_dS)Nr�)r)r��_s  r r�z:PythonAPItests.test_from_float.<locals>.MyDecimal.__init__^
s
������r"Nr�rr"r r�rK]
s#������
�
�
�
�
r"r�r�r�r�ls\�&�5$3�|	r�r�r�r}r�r��abcr�r�r�r�)rr�r$r*r�rAr;r<rr�r�r�rjr3rxr/r�)r�r�r�r��bigintrLrs       r �test_from_floatzPythonAPItests.test_from_floatY
s����,�&��	�	�	�	�	��	�	�	�	
���
�9�g�6�6�7�7�7�� � ��%�%������a���)�,�,�,�����Q���K�	M�	M�	M������c�"�"�"�.������-�-�f�5�5�y�y��7H�7H�I�I�I����	�,�,�U�5�\�\�:�:�B�B�D�D�E�E�E����	�,�,�U�5�\�\�:�:�F�F�H�H�I�I�I����	�,�,�U�6�]�]�;�;�G�G�I�I�J�J�J�����Y�1�1�%��,�,�?�?�@�@��W�W�U�^�^�,�,�	.�	.�	.�����Y�1�1�%��,�,�?�?�@�@��W�W�Z�0�0�1�1�	3�	3�	3�����Y�1�1�%��-�-�@�@�A�A��W�W�[�1�1�2�2�	4�	4�	4����)�Y�%9�5�A�A�A��s���	@�	@�A��"�4�(�(�F�M�O�O�c�,A�C�,G�H�A����Q��i�&:�&:�1�&=�&=� >� >�?�?�?�?�	@�	@r"c�2�|jj}|jj}|jj}|dt���}|�|�tj��|d����|dt���}|�|�tj��|d����|d|g���}|�
||jtj��|�t|�d����d��|�t|�d����d	��|�t|�d
����d��dS)Nrw)r,r-z3.1415rN)r,r.��z
Decimal('-0')r�zDecimal('1')r�z
Decimal('10'))rr�r/r�r�rA�create_decimal_from_floatr��pir�rjr@)r�r�r/r�r's     r �test_create_decimal_from_floatz-PythonAPItests.test_create_decimal_from_floaty
s����,�&���,�&���,�&���'�q�:�6�6�6������-�-�d�g�6�6��G�H���	
�	
�	
��'�q�8�4�4�4������-�-�d�g�6�6��G�H���	
�	
�	
��'�q��	�2�2�2�������-��G�	
�	
�	
�
	
����g�?�?��E�E�F�F�(�	*�	*�	*�����g�?�?��D�D�E�E�'�	)�	)�	)�����g�?�?��C�C�D�D�(�	*�	*�	*�	*�	*r"c��|jj}|jj}|jj}|dd���}|�|d���|d����|d����|�|d���|d��t���|d����|�||d	��j|d
��|���|��}|d��}|�||d
��t���}|�||d����dS)Ni��iay��rlz7.335r}z7.34�r-z7.33�10e99999�1e100000r�z0.871831e800�1e797)r'r[r-z	8.71E+799)rr�r/r�rAr	r�rj)r�r�r/r�r�rrs       r �
test_quantizezPythonAPItests.test_quantize�
sk���,�&���,�&���<�8���G��V�,�,�,������G�G���%�%�g�g�e�n�n�5�5��G�F�O�O�	
�	
�	
�	
����G�G���%�%�g�g�e�n�n�z�%�J�J��G�F�O�O�	
�	
�	
�	
�����G�J���(�'�'�*�*=�*=�q�	�	
�	
�	
�

�G�I�I���G�N�#�#��
�J�J�q�g�g�g�&6�&6��J�L�L������G�G�K�0�0�1�1�1�1�1r"c��|jj}|d��}|�|j|��|�|jd��|�|���|��|d��}|�t
|��t
td������|�tt|dd��|�tt|dd��|�tt|dd��|�tt|d	d��dS)
Nz9.8182731e181273rr�r�realr��imag�	conjugate�__complex__)rr�rAr]r^r_�complexr�rjr4r/rDs   r �test_complexzPythonAPItests.test_complex�
s���,�&���G�&�'�'��������#�#�#�������#�#�#����������*�*�*��G�C�L�L���������W�U�1�X�X�%6�%6�7�7�7����.�'�1�f�c�B�B�B����.�'�1�f�c�B�B�B����.�'�1�k�3�G�G�G����.�'�1�m�S�I�I�I�I�Ir"c�$�|jj}|jj}|jj}|jj}|jj}|��}d|_d|_d|_|��5}|�	��|�
|d|��d��|�
|d|���d��|�
||d���d��|�
||���d��|�	��|�||d|���|�|j
|��|�|j
|��|�	��|�
|d���|���d	��|�||d
��j|���|�|j
|��|�|j
|��|�	��|�
|d���|���|d����|�||d��j|���|�|j
|��|�|j
|��|�
|d���|���|d����|�
|d���|���d
��|�
|d���|���|d����|�
|d���|���|d����|�
|d���|���d��|�
|d���|���d��|�
|d���|���d��|�
|d���|���|d����|�
|d���|d���d��|�	��|�||d��j|d��|���|�|j
|��|�|j
|��|�
|d���|d��|���|d����|�
|d���|d��|���|d����|�
|d���|d ��|���|d ����|�
|d!���|d"��|���|d#����|�
|d!���|d"��|���|d����|�
|d���|d$��|���|d%����|�	��|�||d��j |d&��|���|�|j
|��|�|j
|��|�
|d'���!|d(��|���|d)����|�
|d*���"|d+��|d	�,��|d-����|�tF|d��j$|���|�tF|d��j%|���|�tF|d��j&|���|�tF|d��j'|���|�tF|d��j(|���|�tF|d��j)|���|�tF|d��j*|���|�tF|d��j+|���|�|d���,|�����|�|d���-|�����|�tF|d��j.|���|�tF|d��j/|���|�tF|d��j0|���|�
|d.���1|���d��|�
|d���2|���d��|�
|d���3|���d/��|�
|d0���4|���d0��|�
|d1���5|d2��|���d��|�
|d1���6|d2��|���d��|�
|d3���7|d2��|���d��|�
|d4���8d|���d��|�
|d4���8d|���d��|�	��|�||d4��j9d|���|�|j
|��|�|j
|��|�
|d4���:d|���d��|�tF|j;d5|���|�tF|d��j<|���|�
|d���=��d��|�tF|d$��j>|���|�tF|d$��j?|���|�tF|d��j=d6���|�tF|d��j=d6�7��ddd��dS#1swxYwYdS)8Nrrur+r�)r'rrr�rr�r�z0.7r�r�z-0.9z9.73z1E+1�9999�'z-2000i0���raroz0.0625�0.2r�)r'rrer��0.01z0.0101r?z-0.3z0.02z-0.03r�r�r��1e10�9.99r;r��9.9z0.9)�thirdr'rz7E+1i����r�z0.21�11r-�01�23g�������?r)r�)@rr�r/r�r�r�r,r^rYr0rArjr$rSr&r[rrr�r�r�rr�r�r�r%rjr�r�r�r�r�r	r�rr3r|r~r�r�r�r�r�r�r�r��adjustedr_�radixrrzrhr�rdr�r�rrrr�r��	canonicalrrrt)r�rsr/r�r�r��xcr�s        r �test_named_parametersz$PythonAPItests.test_named_parameters�
sU
���L� ���,�&���|�0���<�8���<�(��
�W�Y�Y�����������
�\�^�^�b	B�q�
�M�M�O�O�O����Q�Q�q�"�X�X�q�)�)�)����Q�Q�q�"�-�-�-�q�1�1�1����Q�Q�r��3�3�3�Q�7�7�7����Q�Q�r�]�]�]�A�.�.�.��N�N�������.��5�"��E�E�E��O�O�B�H�%5�6�7�7�7����Q�W�%5�6�7�7�7��N�N�������Q�Q�q�T�T�X�X�b�X�1�1�1�5�5�5����h���!����"��=�=�=��O�O�B�H�X�.�/�/�/����Q�W�X�.�/�/�/��N�N�������Q�Q�q�T�T�W�W�R�W�0�0�!�!�E�(�(�;�;�;����.���"����"��E�E�E��O�O�B�H�%5�6�7�7�7����Q�W�%5�6�7�7�7����Q�Q�q�T�T�Z�Z��Z�3�3�Q�Q�v�Y�Y�?�?�?����Q�Q�r�U�U�-�-�b�-�9�9�2�>�>�>����Q�Q�r�U�U�_�_�R�_�8�8�!�!�F�)�)�D�D�D����Q�Q�v�Y�Y�0�0��0�<�<�a�a��i�i�H�H�H����Q�Q�v�Y�Y�2�2�2�2�>�>��E�E�E����Q�Q�w�Z�Z�9�9�"�9�E�E�u�M�M�M����Q�Q�u�X�X�7�7��7�C�C�S�I�I�I����Q�Q�x�[�[�-�-�b�-�9�9�1�1�U�8�8�D�D�D����Q�Q�x�[�[�0�0��1�0�E�E�r�J�J�J��N�N�������.��a��f�f�3�Q�Q�u�X�X�r�
�
K�
K�
K��O�O�B�H�%5�6�7�7�7����Q�W�%5�6�7�7�7����Q�Q�v�Y�Y�]�]�1�1�X�;�;��]�C�C�Q�Q�u�X�X�N�N�N����Q�Q�v�Y�Y�]�]�1�1�X�;�;��]�C�C�Q�Q�u�X�X�N�N�N����Q�Q�u�X�X�-�-�a�a��i�i��-�D�D��Q�v�Y�Y�
(�
(�
(����Q�Q�v�Y�Y�]�]�1�1�W�:�:�r�]�B�B�A�A�f�I�I�N�N�N����Q�Q�v�Y�Y�.�.�q�q��z�z�2�.�F�F��Q�u�X�X�
'�
'�
'����Q�Q�u�X�X�1�1�!�!�D�'�'�2�1�F�F���%���Q�Q�Q��N�N�������.��a��h�h�/���6���B�
�
H�
H�
H��O�O�B�H�%5�6�7�7�7����Q�W�%5�6�7�7�7����Q�Q�v�Y�Y�5�5�a�a��h�h��5�K�K��Q�v�Y�Y�
(�
(�
(�
���Q�Q�u�X�X�\�\���%���"�A�\�N�N��Q�v�Y�Y�
(�
(�
(�
���i���1���):�B��G�G�G����i���1������D�D�D����i���1���)9�2��F�F�F����i���1����b��A�A�A����i���1����r��B�B�B����i���1����r��B�B�B����i���1������D�D�D����i���1����r��B�B�B����Q�Q�v�Y�Y�0�0��0�<�<�=�=�=��O�O�A�A�f�I�I�2�2�2�2�>�>�?�?�?����i���1������C�C�C����i���1������D�D�D����i���1����R��@�@�@����Q�Q�t�W�W�\�\�"�\�5�5�q�9�9�9����Q�Q�q�T�T�0�0��0�<�<�a�@�@�@����Q�Q�v�Y�Y�3�3�B�3�?�?��N�N�N����Q�Q�v�Y�Y�4�4�R�4�@�@�&�I�I�I����Q�Q�t�W�W�0�0���4���"�0�E�E�q�I�I�I����Q�Q�t�W�W�/�/���$����/�D�D�a�H�H�H����Q�Q�t�W�W�0�0���4���"�0�E�E�q�I�I�I����Q�Q�t�W�W�^�^�A�r�^�:�:�A�>�>�>����Q�Q�t�W�W�^�^�A�r�^�:�:�A�>�>�>��N�N�������h��a��g�g�n�a��
�
=�
=�
=��O�O�B�H�X�.�/�/�/����Q�W�X�.�/�/�/����Q�Q�t�W�W�]�]�2�r�]�:�:�A�>�>�>����i���s�B��G�G�G����i���1������C�C�C����Q�Q�q�T�T�^�^�-�-�q�1�1�1����i���4���)9�2��F�F�F����i���4���)<�b��I�I�I����i���1������E�E�E����i���1����S��A�A�A�Eb	B�b	B�b	B�b	B�b	B�b	B�b	B�b	B�b	B�b	B�b	B�b	B����b	B�b	B�b	B�b	B�b	B�b	Bs�&vx�x	�x	c��|j}|j}|j}|j}|j}|j}|j}|j}|j}	|j	}
|j
}|�t|t����|�t||����|�t||����|�t|t����|�t||����|�t|t����|�t||
����|�t||	����|�t||����|�t||	����|�t||
����|�t||����|�t||����|�t||����|�t|	|����|�t|
|����|�t||����|�t|j|����|�t|j|����|�t|j|����|�t|jt����|�t|j|����dSr)rr�r��FloatOperationr�r�r�r�r�r�r�r$r*�ArithmeticErrorr3�ZeroDivisionError�ConversionSyntax�DivisionImpossible�DivisionUndefined�InvalidContext)r�rr�r�rur�r�r�r�r�r�r�s            r �test_exception_hierarchyz'PythonAPItests.test_exception_hierarchy-s����,��"�3��"�3�� �/�� �/���#���%�	��%�	��/���/���/�����
�#3�_�E�E�F�F�F����
�#3�5E�F�F�G�G�G����
�>�3C�D�D�E�E�E����
�>�9�=�=�>�>�>����
�>�3C�D�D�E�E�E����
�>�3D�E�E�F�F�F����
�8�W�5�5�6�6�6����
�8�W�5�5�6�6�6����
�8�-=�>�>�?�?�?����
�9�g�6�6�7�7�7����
�9�g�6�6�7�7�7����
�9�i�8�8�9�9�9����
�9�.>�?�?�@�@�@����
�9�.>�?�?�@�@�@����
�7�,<�=�=�>�>�>����
�7�,<�=�=�>�>�>����
�7�,<�=�=�>�>�>����
�7�#;�=M�N�N�O�O�O����
�7�#=�?O�P�P�Q�Q�Q����
�7�#<�>N�O�O�P�P�P����
�7�#<�>O�P�P�Q�Q�Q����
�7�#9�;K�L�L�M�M�M�M�Mr"N)r�r`rar/r;rBr
rErHrPrUr[rbrsr|rr"r r(r(�	s�������;�;�;�11�11�11�f?�?�?�"�.�.��\�.�
8�
8�
8�@�@�@�@*�*�*�82�2�2�0J�J�J� nB�nB�nB�`&N�&N�&N�&N�&Nr"r(c��eZdZeZdS)�CPythonAPItestsNr�rr"r r~r~Ur�r"r~c��eZdZeZdS)�PyPythonAPItestsNr�rr"r r�r�Xr�r"r�c���eZdZd�Zeeeje���d�������Z	d�Z
d�Zd�Zd�Z
d�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d �Z&d!�Z'd"�Z(d#�Z)d$�Z*d%�Z+d&�Z,d'�Z-d(�Z.d)�Z/d*�Z0d+�Z1d,�Z2d-�Z3d.�Z4d/�Z5d0�Z6d1�Z7d2�Z8d3�Z9d4�Z:d5�Z;d6�Z<d7�Z=d8�Z>d9�Z?d:�Z@d;�ZAd<�ZBd=�ZCd>�ZDd?�ZEd@�ZFdAS)B�ContextAPItestsc
�J�|jj}|jj}|jj}|jj}|��}|dddddddd���}||fD]�}|�|jd��|�|jt��|�|j	d��|�|j
d��|�|jd��|�|jd��t||dg��t||d|||g����dS)	N)r,r-r^rYrrbrSr.r��?B��rrrSr.)rr/r�r�r�rAr,r-r0r^rYrrbr))r�r/r�r�r�r,r*r�s        r rzContextAPItests.test_none_args]sK���,�&���<�8����4���<�(��
�W�Y�Y��
�W�$��D�t�"�$�d�$�H�H�H���b��		9�		9�A����Q�V�R�(�(�(����Q�Z��9�9�9����Q�V�V�,�,�,����Q�V�W�-�-�-����Q�Z��+�+�+����Q�W�a�(�(�(��4��G�R�0�0�0��4��G�.>��.6�.8�
9�
9�
9�
9�		9�		9r"r�c��ddl}|j���}tD]7}|�|��|_|�|j|���8|�d��}|�tt|d|��|�d��}|�tt|d|��dS)Nrr�r-z	ROUND_UP)
r�rr/�
RoundingModesr�r-rArjr3r/)r�r�r��rndrs     r r�z(ContextAPItests.test_from_legacy_stringsqs���	�����L� � �"�"�� �	.�	.�C�"�8�8��=�=�A�J����Q�Z��-�-�-�-��+�+�B�/�/�����)�W�a��Q�?�?�?��+�+�N�;�;�����)�W�a��Q�?�?�?�?�?r"c��ttjdz��D�]}|jj}t
jd}|jt
jd<|��}tjtj||����}|�	|j
|j
��|�	|j|j��|�	|j|j��|�	|j
|j
��|�	|j|j��|�	|j|j��|�	|j|j��|�	|j|j��t$rt$t&ft&t$fgnt&t&fg}|D�]t\}}t)t*��D�]X\}	}
t)t,|��D�]6\}}
t)t,|��D�]\}}
t/jdd��}
t/jdd��}t/jdd��}t/jd��}t/jd��}|t
jd<|�|
||t*|	||t,|d|�t,|d|����}tj||��}|t
jd<tj|��}|�||j��|�	|j
|
��|�	|j|��|�	|j|��|�	|j
t*|	��|�	|j|��|�	|j|��t5||dt,|d|���t5||d	t,|d|�������8��Z��v|t
jd<��!dS)
Nrrr�rrr)r,rYr^r-rrbrSr.rSr.)rxr1r2rr/rr3r5r4rAr,rYr^r-rrbrSr.r�r�r6r�r:r/�	randranger�r))r�r7r/r8r�r*�combinations�dumper�loader�rirM�fi�tir,rurt�capsrbrrs                    r r;zContextAPItests.test_pickle�s����6�2�Q�6�7�7�9	1�9	1�E��l�*�G��+�i�0�K�&*�\�C�K�	�"���	�	�A���V�\�!�U�3�3�4�4�A����Q�V�Q�V�,�,�,����Q�V�Q�V�,�,�,����Q�V�Q�V�,�,�,����Q�Z���4�4�4����Q�Z���4�4�4����Q�W�a�g�.�.�.����Q�W�a�g�.�.�.����Q�W�a�g�.�.�.�01�>�Q��F�Q��F�+�+��1�v�h�L�".�"
Z�"
Z����&�}�5�5�!Z�!Z�E�B��!*�>�&�+A�!B�!B� Z� Z���A�%.�~�f�/E�%F�%F�Z�Z�E�B��#)�#3�A�s�#;�#;�D�#)�#3�D�!�#<�#<�D�#)�#3�A�s�#;�#;�D�#)�#3�A�#6�#6�D�$*�$4�Q�$7�$7�E�6<�C�K�	�2� &���'+�$�T�+8��+<�+/�u�(6�v�(>�s��s�(C�(6�v�(>�s��s�(C�!/�!�!�A�!'��Q�� 6� 6�A�6<�C�K�	�2� &��Q���A� �1�1�!�V�^�D�D�D� �,�,�Q�V�T�:�:�:� �,�,�Q�V�T�:�:�:� �,�,�Q�V�T�:�:�:� �,�,�Q�Z��r�9J�K�K�K� �,�,�Q�Z��>�>�>� �,�,�Q�W�e�<�<�<�*�4��G�^�F�=S�TW�UW�TW�=X�Y�Y�Y�*�4��G�^�F�=S�TW�UW�TW�=X�Y�Y�Y�Y�?Z� Z�!Z�F&1�C�K�	�"�"�s9	1�9	1r"c��|jj}|�|d��dd|d��dig��|�|d��dddig��dS)Nr�r�r�)rr)rr��assertIn�assertNotInrgs  r �test_equality_with_other_typesz.ContextAPItests.test_equality_with_other_types�sh���,�&���
�
�g�g�b�k�k�C��g�g�b�k�k�5�"�#E�F�F�F���������s�C���&;�<�<�<�<�<r"c��|jj}|jj}|��}|���}|�t|��t|����|�t|j��t|j����|�t|j��t|j����t|j�	����}t|j�	����}|�
||��|�
|j|j��dSr)rr�r/rorUrDrSr.r��keysrA)r�r�r/r�r�k1�k2s       r �	test_copyzContextAPItests.test_copy�s���,�&���,�&���G�I�I��
�F�F�H�H�����B�q�E�E�2�a�5�5�)�)�)����B�q�w�K�K��A�G���5�5�5����B�q�w�K�K��A�G���5�5�5�
�������
 �
 ��
�������
 �
 ������R� � � ������!�'�*�*�*�*�*r"c�v�|jj}|��}|�tt|d��dS)N�_clamp)rr/rjr4r#�r�r/r�s   r �test__clampzContextAPItests.test__clamp�s9���,�&���G�I�I�����.�'�1�h�?�?�?�?�?r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dS�Nrur�)rr�r/rrArjr3�r�r�r/r�rs     r �test_abszContextAPItests.test_abs��z���,�&���,�&���G�I�I��
�E�E�'�'�"�+�+����������r���A�&�&�&����)�Q�U�D�1�1�1�1�1r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dS�Nrr�)rr�r/r�rArjr3r�s     r �test_addzContextAPItests.test_add�����,�&���,�&���G�I�I��
�E�E�'�'�!�*�*�g�g�a�j�j�)�)��������q�!���a�(�(�(�������w�w�q�z�z�1�-�-�q�1�1�1�������q�'�'�!�*�*�-�-�q�1�1�1����)�Q�U�C��3�3�3����)�Q�U�A�s�3�3�3�3�3r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r%rArjr3r�s     r �test_comparezContextAPItests.test_compare�����,�&���,�&���G�I�I��
�I�I�g�g�a�j�j�'�'�!�*�*�-�-��������1�a���!�,�,�,�������7�7�1�:�:�q�1�1�1�5�5�5�������1�g�g�a�j�j�1�1�1�5�5�5����)�Q�Y��Q�7�7�7����)�Q�Y��3�7�7�7�7�7r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/rjrArjr3r�s     r �test_compare_signalz#ContextAPItests.test_compare_signal����,�&���,�&���G�I�I��
���W�W�Q�Z�Z������4�4������)�)�!�Q�/�/��3�3�3�����)�)�'�'�!�*�*�a�8�8�!�<�<�<�����)�)�!�W�W�Q�Z�Z�8�8�!�<�<�<����)�Q�%5�s�A�>�>�>����)�Q�%5�q�#�>�>�>�>�>r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/rlrArjr3r�s     r �test_compare_totalz"ContextAPItests.test_compare_totals����,�&���,�&���G�I�I��
�O�O�G�G�A�J�J����
�
�3�3���������A�.�.��2�2�2������������Q�7�7��;�;�;��������G�G�A�J�J�7�7��;�;�;����)�Q�_�c�1�=�=�=����)�Q�_�a��=�=�=�=�=r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/rnrArjr3r�s     r �test_compare_total_magz&ContextAPItests.test_compare_total_mags���,�&���,�&���G�I�I��
������
�
�G�G�A�J�J�7�7������,�,�Q��2�2�A�6�6�6�����,�,�W�W�Q�Z�Z��;�;�Q�?�?�?�����,�,�Q����
�
�;�;�Q�?�?�?����)�Q�%8�#�q�A�A�A����)�Q�%8�!�S�A�A�A�A�Ar"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/rrrArjr3r�s     r �
test_copy_abszContextAPItests.test_copy_abs$sz���,�&���,�&���G�I�I��
�J�J�w�w�r�{�{�#�#��������B����+�+�+����)�Q�Z��6�6�6�6�6r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/rprArjr3r�s     r �test_copy_decimalz!ContextAPItests.test_copy_decimal-�|���,�&���,�&���G�I�I��
�N�N�7�7�2�;�;�'�'���������+�+�Q�/�/�/����)�Q�^�T�:�:�:�:�:r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/rtrArjr3r�s     r �test_copy_negatez ContextAPItests.test_copy_negate6�|���,�&���,�&���G�I�I��
�M�M�'�'�"�+�+�&�&��������r�*�*�A�.�.�.����)�Q�]�D�9�9�9�9�9r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dS)Nrr�r�r)rr�r/rvrArjr3r�s     r rzContextAPItests.test_copy_sign?s����,�&���,�&���G�I�I��
�K�K����
�
�G�G�B�K�K�0�0��������Q��+�+�Q�/�/�/�������W�W�Q�Z�Z��4�4�a�8�8�8�������Q������4�4�a�8�8�8����)�Q�[�#�r�:�:�:����)�Q�[�!�T�:�:�:�:�:r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dS�Nrrr�r�)rr�r/r$rArjr3r�s     r �test_dividezContextAPItests.test_divideK����,�&���,�&���G�I�I��
�H�H�W�W�Q�Z�Z������,�,��������!�Q����+�+�+�������'�'�!�*�*�a�0�0�!�4�4�4�������!�W�W�Q�Z�Z�0�0�!�4�4�4����)�Q�X�s�A�6�6�6����)�Q�X�q�#�6�6�6�6�6r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/rxrArjr3r�s     r �test_divide_intzContextAPItests.test_divide_intW����,�&���,�&���G�I�I��
�L�L������W�W�Q�Z�Z�0�0��������a��+�+�Q�/�/�/�������g�g�a�j�j�!�4�4�a�8�8�8�������a������4�4�a�8�8�8����)�Q�\�3��:�:�:����)�Q�\�1�c�:�:�:�:�:r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r.rArjr3r�s     r �test_divmodzContextAPItests.test_divmodcr�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dS�Nr�r-)rr�r/r[rArjr3r�s     r �test_expzContextAPItests.test_expor�r"c	�,�|jj}|jj}|��}|�|d��|d��|d����}|�|�ddd��|��|�|�|d��dd��|��|�|�d|d��d��|��|�|�dd|d����|��|�|�|d��|d��d��|��|�t|jddd��|�t|jddd��|�t|jddd��|�t|j|d��|d��d	��|�t|j|d
��|d��d��|�t|d��j|d��d	��|�t|d
��j|d��d��dS)
Nrr�r�r�rK�4r�rz
not a decimalrr�gZd;�O��?)rr�r/rrArjr3r�s     r �test_fmazContextAPItests.test_fmaxsr���,�&���,�&���G�I�I��
�E�E�'�'�!�*�*�g�g�a�j�j�'�'�!�*�*�5�5��������q�!�Q����+�+�+�������w�w�q�z�z�1�a�0�0�!�4�4�4�������q�'�'�!�*�*�a�0�0�!�4�4�4�������q�!�W�W�Q�Z�Z�0�0�!�4�4�4�������w�w�q�z�z�7�7�1�:�:�q�9�9�1�=�=�=����)�Q�U�C��A�6�6�6����)�Q�U�A�s�A�6�6�6����)�Q�U�A�q�#�6�6�6�	
���)�Q�U�!�'�*�-�-�w�w�q�z�z�?�	L�	L�	L����)�Q�U�!�'�!�*�*�g�g�f�o�o�u�	>�	>�	>�	
���)�W�W�Z�%8�%8�%<�!�'�!�*�*�o�	7�	7�	7����)�W�W�Q�Z�Z�^�!�'�&�/�/�5�	2�	2�	2�	2�	2r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r~rArjr3r�s     r �test_is_finitezContextAPItests.test_is_finite��z���,�&���,�&���G�I�I��
�K�K������$�$��������R���!�,�,�,����)�Q�[�$�7�7�7�7�7r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_is_infinitez ContextAPItests.test_is_infinite�r�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_is_nanzContextAPItests.test_is_nan�sz���,�&���,�&���G�I�I��
�H�H�W�W�R�[�[�!�!��������"���q�)�)�)����)�Q�X�t�4�4�4�4�4r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_is_normalzContextAPItests.test_is_normal�r�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_is_qnanzContextAPItests.test_is_qnan��z���,�&���,�&���G�I�I��
�I�I�g�g�b�k�k�"�"��������2����*�*�*����)�Q�Y��5�5�5�5�5r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_is_signedzContextAPItests.test_is_signed�r�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_is_snanzContextAPItests.test_is_snan�r�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_is_subnormalz!ContextAPItests.test_is_subnormal�r�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_is_zerozContextAPItests.test_is_zero�r�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/rrArjr3r�s     r �test_lnzContextAPItests.test_ln�sz���,�&���,�&���G�I�I��
�D�D���������������b���1�%�%�%����)�Q�T�4�0�0�0�0�0r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/rrArjr3r�s     r �
test_log10zContextAPItests.test_log10��z���,�&���,�&���G�I�I��
�G�G�G�G�B�K�K� � �����������a�(�(�(����)�Q�W�d�3�3�3�3�3r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/rrArjr3r�s     r �	test_logbzContextAPItests.test_logb��z���,�&���,�&���G�I�I��
�F�F�7�7�2�;�;�������������Q�'�'�'����)�Q�V�T�2�2�2�2�2r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/rdrArjr3r�s     r �test_logical_andz ContextAPItests.test_logical_and�����,�&���,�&���G�I�I��
�M�M�'�'�!�*�*�g�g�a�j�j�1�1��������q�!�,�,�a�0�0�0�������w�w�q�z�z�1�5�5�q�9�9�9�������q�'�'�!�*�*�5�5�q�9�9�9����)�Q�]�C��;�;�;����)�Q�]�A�s�;�;�;�;�;r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dS)Nr�r�)rr�r/rzrArjr3r�s     r �test_logical_invertz#ContextAPItests.test_logical_invert

s����,�&���,�&���G�I�I��
���W�W�T�]�]�+�+������)�)�$�/�/��3�3�3����)�Q�%5�v�>�>�>�>�>r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r�rArjr3r�s     r �test_logical_orzContextAPItests.test_logical_or
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r�rArjr3r�s     r �test_logical_xorz ContextAPItests.test_logical_xor
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r�rArjr3r�s     r �test_maxzContextAPItests.test_max+
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r�rArjr3r�s     r �test_max_magzContextAPItests.test_max_mag7
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r�rArjr3r�s     r �test_minzContextAPItests.test_minC
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r�rArjr3r�s     r �test_min_magzContextAPItests.test_min_magO
r�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/�minusrArjr3r�s     r �
test_minuszContextAPItests.test_minus[
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r3rArjr3r�s     r �
test_multiplyzContextAPItests.test_multiplyd
����,�&���,�&���G�I�I��
�J�J�w�w�q�z�z�7�7�1�:�:�.�.��������A�q�)�)�1�-�-�-�������G�G�A�J�J��2�2�A�6�6�6�������A�w�w�q�z�z�2�2�A�6�6�6����)�Q�Z��a�8�8�8����)�Q�Z��C�8�8�8�8�8r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_next_minuszContextAPItests.test_next_minusp
s|���,�&���,�&���G�I�I��
�L�L������%�%��������b�)�)�1�-�-�-����)�Q�\�4�8�8�8�8�8r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_next_pluszContextAPItests.test_next_plusy
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r�rArjr3r�s     r �test_next_towardz ContextAPItests.test_next_toward�
r�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_normalizezContextAPItests.test_normalize�
r�r"c���|jj}|jj}|��}|�|�d��|�|d������|�|�d��|�|d������|�|�d��|�|d������dS)Nrorrq)rr�r/rArh)r�r�r/r�s    r �test_number_classz!ContextAPItests.test_number_class�
s����,�&���,�&���G�I�I���������,�,�a�n�n�W�W�S�\�\�.J�.J�K�K�K��������*�*�A�N�N�7�7�1�:�:�,F�,F�G�G�G��������,�,�a�n�n�W�W�S�\�\�.J�.J�K�K�K�K�Kr"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/�plusrArjr3r�s     r �	test_pluszContextAPItests.test_plus�
r�r"c��|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�|�|d��|d����|��|�t|jdd��|�t|jdd��|�|�ddd���d��dS)	Nrr�r�r�rwr�r)�modulor]r�)rr�r/�powerrArjr3r�s     r �
test_powerzContextAPItests.test_power�
sX���,�&���,�&���G�I�I��
�G�G�G�G�A�J�J����
�
�+�+���������A����*�*�*������������Q�/�/��3�3�3��������G�G�A�J�J�/�/��3�3�3������������W�W�Q�Z�Z�8�8�!�<�<�<����)�Q�W�c�1�5�5�5����)�Q�W�a��5�5�5��������Q�!��4�4�a�8�8�8�8�8r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r	rArjr3r�s     r r[zContextAPItests.test_quantize�
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/�	remainderrArjr3r�s     r �test_remainderzContextAPItests.test_remainder�
s����,�&���,�&���G�I�I��
�K�K����
�
�G�G�A�J�J�/�/��������Q��*�*�A�.�.�.�������W�W�Q�Z�Z��3�3�Q�7�7�7�������Q����
�
�3�3�Q�7�7�7����)�Q�[�#�q�9�9�9����)�Q�[�!�S�9�9�9�9�9r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r�rArjr3r�s     r �test_remainder_nearz#ContextAPItests.test_remainder_near�
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/rrArjr3r�s     r �test_rotatezContextAPItests.test_rotate�
r�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �	test_sqrtzContextAPItests.test_sqrt�
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/r�rArjr3r�s     r �test_same_quantumz!ContextAPItests.test_same_quantum�
s����,�&���,�&���G�I�I��
�N�N�7�7�1�:�:�w�w�q�z�z�2�2���������1�-�-�q�1�1�1����������
�
�A�6�6��:�:�:��������7�7�1�:�:�6�6��:�:�:����)�Q�^�S�!�<�<�<����)�Q�^�Q��<�<�<�<�<r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/rrArjr3r�s     r �test_scalebzContextAPItests.test_scaleb�
r�r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/rrArjr3r�s     r �
test_shiftzContextAPItests.test_shifts����,�&���,�&���G�I�I��
�G�G�G�G�A�J�J����
�
�+�+���������A����*�*�*������������Q�/�/��3�3�3��������G�G�A�J�J�/�/��3�3�3����)�Q�W�c�1�5�5�5����)�Q�W�a��5�5�5�5�5r"c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r/�subtractrArjr3r�s     r �
test_subtractzContextAPItests.test_subtractr�r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_to_eng_stringz"ContextAPItests.test_to_eng_string �|���,�&���,�&���G�I�I��
�O�O�G�G�B�K�K�(�(���������,�,�a�0�0�0����)�Q�_�d�;�;�;�;�;r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_to_sci_stringz"ContextAPItests.test_to_sci_string)r#r"c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r/r�rArjr3r�s     r �test_to_integral_exactz&ContextAPItests.test_to_integral_exact2s����,�&���,�&���G�I�I��
��������,�,������,�,�R�0�0�!�4�4�4����)�Q�%8�$�?�?�?�?�?r"c�^�|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��|�t|jdd��dS)Nr�r-r)rr�r/r�rArjr3r�s     r �test_to_integral_valuez&ContextAPItests.test_to_integral_value;s����,�&���,�&���G�I�I��
��������,�,������,�,�R�0�0�!�4�4�4����)�Q�%8�$�?�?�?����)�Q�%8�"�c�B�B�B�B�Br"N)Gr�r`rarr
rrr�r�r�r;r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr	r
r[rrrrrrrr r"r%r'r)rr"r r�r�[s������9�9�9�(�!�$�_�$�.@�A�A�A�@�@�B�A�"�!��\�@�;1�;1�;1�z=�=�=�
+�
+�
+�	@�	@�	@�2�2�2�
4�
4�
4�
8�
8�
8�
?�
?�
?�
>�
>�
>�
B�
B�
B�7�7�7�;�;�;�:�:�:�
;�
;�
;�
7�
7�
7�
;�
;�
;�
7�
7�
7�2�2�2�2�2�2�48�8�8�:�:�:�5�5�5�8�8�8�6�6�6�8�8�8�6�6�6�;�;�;�6�6�6�1�1�1�4�4�4�3�3�3�
<�
<�
<�?�?�?�
;�
;�
;�
<�
<�
<�
4�
4�
4�
8�
8�
8�
4�
4�
4�
8�
8�
8�4�4�4�
9�
9�
9�9�9�9�8�8�8�
<�
<�
<�8�8�8�L�L�L�3�3�3�9�9�9�
9�
9�
9�
:�
:�
:�
?�
?�
?�
7�
7�
7�3�3�3�
=�
=�
=�
7�
7�
7�
6�
6�
6�
9�
9�
9�<�<�<�<�<�<�@�@�@�C�C�C�C�Cr"r�c��eZdZeZdS)�CContextAPItestsNr�rr"r r+r+Er�r"r+c��eZdZeZdS)�PyContextAPItestsNr�rr"r r-r-Hr�r"r-c�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�ContextWithStatementc�@�|jj}|jj}|��}|��5}|��}ddd��n#1swxYwY|��}|�||d��|�||d��|�||d��dS)N�!did not restore context correctly�did not copy the context� __enter__ returned wrong context)rr�r�r��assertIsNot)r�r�r��orig_ctx�	enter_ctx�set_ctx�	final_ctxs       r �test_localcontextz&ContextWithStatement.test_localcontextOs����\�,�
��|�0���:�<�<��
�\�^�^�	#�y� �j�l�l�G�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#��J�L�L�	��
�
�h�	�+N�O�O�O�����7�,F�G�G�G��
�
�g�y�*L�M�M�M�M�Ms�A�A�Ac���|jj}|jj}|jj}|jj}|��}|d���}||��5}|��}ddd��n#1swxYwY|��}|�||d��|�|j|jd��|�||d��|�||d��dS)Nr��r,r1zdid not set correct contextr2r3)rr/r�r�r�rAr,r4)	r�r/r�r�r5�new_ctxr6r7r8s	         r �test_localcontextargz)ContextWithStatement.test_localcontextarg\s)���,�&���\�,�
��|�0���|�0���:�<�<���'�r�"�"�"��
�\�'�
"�
"�	#�i� �j�l�l�G�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#��J�L�L�	��
�
�h�	�+N�O�O�O������w�|�5R�S�S�S�����'�+E�F�F�F��
�
�g�y�*L�M�M�M�M�Ms�A)�)A-�0A-c�2�|j�dtdddd���5}|�|jd��|�|j|jj��|�|jd��|�|jd��|�|jd��|�|j	d��ddd��n#1swxYwY|�
t|jjd���|�
t|jjd���|�
t|jjd	�
��|�
t|jjd���|�
t|jjd�
��|�
t|jjd���|�
t|jjd���|�
t|jjd���|�
t|jjd���|�
t|jjd���|�
t|jjd�
��dS)Nr�i���rr)r,r-rYr^rrb)r_�rYru�r^r�r�rbr�rW�rS�r.)
rr�r�rAr,r-rYr^rrbrjr3rr�s  r �test_localcontext_kwargsz-ContextWithStatement.test_localcontext_kwargsms���
�\�
&�
&��o��2���'�
�
�
	+�����S�X�r�*�*�*����S�\�4�<�+G�H�H�H����S�X�s�+�+�+����S�X�r�*�*�*����S�\�1�-�-�-����S�Y��*�*�*�
	+�
	+�
	+�
	+�
	+�
	+�
	+�
	+�
	+�
	+�
	+����
	+�
	+�
	+�
	+�	
���)�T�\�%>�"��M�M�M����*�d�l�&?�a��H�H�H����*�d�l�&?�b��I�I�I����*�d�l�&?�!��L�L�L����*�d�l�&?�q��I�I�I����)�T�\�%>���L�L�L����)�T�\�%>���K�K�K����)�T�\�%>�b��I�I�I����)�T�\�%>�b��I�I�I����)�T�\�%>�R��H�H�H����)�T�\�%>�R��H�H�H�H�Hs�B-C�C#�&C#c���|j���}|j}|j�d���5}|�|jd��|�|j|��ddd��n#1swxYwY|j�d���5}|�|jd��|�|j|��ddd��dS#1swxYwYdS)Nr�r;r?)rr�r,r�rA)r�r��	orig_prec�ctx2s    r �>test_local_context_kwargs_does_not_overwrite_existing_argumentzSContextWithStatement.test_local_context_kwargs_does_not_overwrite_existing_argument�sc���l�%�%�'�'���H�	�
�\�
&�
&�B�
&�
/�
/�	2�4����T�Y��+�+�+����S�X�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2��\�
&�
&�B�
&�
/�
/�	2�4����T�Y��+�+�+����S�X�y�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s#�7A?�?B�B�%7C)�)C-�0C-c	��|jj}|jj}|jj}|jj}|jj}|jj}|��}|���|d���}|��5}	|�|	j	|j	��|�|	j
|j
��d|	j
|<d|	_|�|jd��|�
||	jd��|�|	j	|��||��5}
|�|
j	|j	��|�|
j
|j
��|�
||
j|d��d��|�|
j	|��|�|
j	|��~
ddd��n#1swxYwY|�|	j	|��~	ddd��n#1swxYwY|�|jd��|�|j	|��|�|j	|��|�|j	|��|�|j	|��dS)N�rAT���z0e-999z3.4e200r)rr�r/r�r�r�r�r0rArSr.rYrUrjr�r$rr&)r�r�r/r�r�r�r�r5r<r,r*s           r �test_nested_with_statementsz0ContextWithStatement.test_nested_with_statements�s����,�&���,�&���\�,�
��|�0���,�&���<�(���:�<�<���������'�s�#�#�#��
�\�^�^�	�r����R�X�x�~�6�6�6����R�X�x�~�6�6�6� $�B�H�W���B�G�����
�t�4�4�4����g�r�'8�(�C�C�C��O�O�B�H�W�-�.�.�.���g�&�&�
�"�� � ���7�=�9�9�9�� � ���7�=�9�9�9��!�!�(�B�H�g�g�i�6H�6H�!�L�L�L�� � ���'�!2�3�3�3������� 2�3�3�3��

�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
���R�X�h�/�0�0�0��!	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�"	
���H�M�4�0�0�0�������0�1�1�1�������1�2�2�2������w�/�0�0�0������x�0�1�1�1�1�1s8�=B4H�1B(G%�H�%G)	�)H�,G)	�-$H�H!�$H!c	�8�|jj}|��5}~|��5}~|��5}~|��5}~ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdSr�rr��r�r�r,r*r+�c4s      r �test_with_statements_gc1z-ContextWithStatement.test_with_statements_gc1�s����|�0��
�\�^�^�	�r������
�2��!�\�^�^��r��%�����2��������������������������������������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sy�B�A7�A �A		�A �	A

�
A �A

�A �A7� A$�$A7�'A$�(A7�+B�7A;	�;B�>A;	�?B�B�Bc	�>�|jj}|��5}||��5}~||��5}~||��5}~~ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdSrrPrQs      r �test_with_statements_gc2z-ContextWithStatement.test_with_statements_gc2�s����|�0��
�\�^�^�	�r���b�!�!�
�R��!�\�"�%�%����%��b�)�)��R���������������������������������������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	sz�B�
A:�
A#�A	�A#�A
�A#�A
�A#�A:�#A'�'A:�*A'�+A:�.B�:A>	�>B�A>	�B�B�Bc	��|jj}|jj}|jj}|jj}|��5}~|d���}||��||��5}~|�|jd��~|d���}||��~|�|��jd��|d���}	||	��|�|��jd��||	��5}
~	|�|
jd��~
|d���}||��~|�|��jd��|��5}|�|jd��~ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr;rr�r�)rr/r�r�r4rAr,)
r�r/r�r�r4r,�n1r*�n2�n3r+�n4rRs
             r �test_with_statements_gc3z-ContextWithStatement.test_with_statements_gc3�s����,�&���|�0���\�,�
��\�,�
�
�\�^�^�	�r����a����B��J�r�N�N�N���b�!�!�
�R��� � ���!�,�,�,���W�!�_�_�_���
�2������ � �����!2�A�6�6�6��W�!�_�_�_���
�2����� � �����!2�A�6�6�6�!�\�"�%�%�
����$�$�R�W�a�0�0�0�� ��a����B��J�r�N�N�N���$�$�Z�Z�\�\�%6��:�:�:�%�����2��(�(���!�4�4�4��������������������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�$G�BF7�=A#F � F		�=F �	F

�
F �F

�F �F7� F$�$F7�'F$�(F7�+G�7F;	�;G�>F;	�?G�G�GN)r�r`rar9r=rFrJrNrSrUr[rr"r r/r/Ks�������N�N�N�N�N�N�"I�I�I�82�2�2�!2�!2�!2�F
�
�
�
�
�
�����r"r/c��eZdZeZdS)�CContextWithStatementNr�rr"r r]r]�r�r"r]c��eZdZeZdS)�PyContextWithStatementNr�rr"r r_r_�r�r"r_c�<�eZdZd�Zd�Zed���Zd�Zd�ZdS)�ContextFlagsc�v���jj}�jj}�jj}�jj}�jj}�jj}�jj}�fd�}|dddtgg���}	|	j	|d��gf|	j
|d��gf|	j|d��|d	��gf|	j|d��|d	��gf|	j
|d��|d	��gfg}
|g|g|g|g|g|||||gg}|
D�]8\}}
|	���||
�}d
�|	j���D��}|D]�}|	���|D]}||	|���||
�}t#|��}|D]}||vr|�|���|�t(���d�|	j���D��}|�t(�����||d
d|�d|�d�z����||dd|�d|��z�����:dS)Nc����jtkrd|j|<|j|r|�dS|�|��dS�NT)rr�rSr.�_raise_error)r'�flagr�s  �r �raise_errorz7ContextFlags.test_flags_irrelevant.<locals>.raise_errorsV����|�q� � �&*��
�d�#��=��&���J����$�$�T�*�*�*�*�*r"r+r;r�)r,rYr^r-r.rSz100E-425000010rrvz
9.87654321c��g|]	\}}|�|��
Srr�r�kr�s   r r(z6ContextFlags.test_flags_irrelevant.<locals>.<listcomp>s!��>�>�>�4�1�a�A�>�Q�>�>�>r"r,c��g|]	\}}|�|��
Srrris   r r(z6ContextFlags.test_flags_irrelevant.<locals>.<listcomp>/s!��E�E�E�3�1�Q�1�E�Q�E�E�Er"z=operation produces different answers depending on flags set: z	expected z, got r�z9operation raises different flags depending on flags set: )rr�r/r�r�r�r�r�r0rfr�r�r3rr0rSr�rWr9r?rDrA)r�r�r/r�r�r�r�r�rgr'�
operations�flagsets�fnrrFrS�extra_flagsrf�new_ans�expected_flags�	new_flagss`                    r �test_flags_irrelevantz"ContextFlags.test_flags_irrelevant�s����,�&���,�&���,�&���,�&���L�*�	��,�&���L�*�	�	+�	+�	+�	+�	+��'�q��I�#2�"�B�H�H�H��
�^�g�g�&6�7�7�8�9�
�\�G�G�A�J�J�<�(�
�[�7�7�<�0�0�'�'�,�2G�2G�H�I�
�
���� 5� 5�w�w�|�7L�7L�M�N�
�
���� 5� 5�w�w�|�7L�7L�M�N��
��I��y�9�+��y�9�+��g�y�'�9�E�G��#�	W�	W�H�B�����!�!�!��"�d�)�C�>�>�7�=�#6�#6�#8�#8�>�>�>�E�'�
W�
W���#�#�%�%�%�'�/�/�D��K���.�.�.�.��"�d�)��"&�e����'�4�4�D��>�1�1�&�-�-�d�3�3�3���#�#��#�+�+�+�F�E�'�-�*=�*=�*?�*?�E�E�E�	����2��&�&�&�� � ��g�!`�!`�;>�3�3����!H�"I�J�J�J�� � ��N�"]�"]�;I�>�>�9�9�"U�#V�W�W�W�W�+
W�
	W�	Wr"c�&�|jj}|jj}|jj}|��}|�|j|j��|�|j|j��|j|_|�|j|j��|�|j|j��d|j|<|j|_|�|j|j��|�|j|j��i}|�|j��|�||j��|�|j|��d||<|�||j��|�|j|��|di}|�||j��|�|j|��dg}|�||j��|�|j|��dS)NTFr�)	rr/r�r�rUrSr.rA�update)r�r/r�r�r�rs      r �test_flag_comparisonsz"ContextFlags.test_flag_comparisons9s����,�&���,�&���,�&���G�I�I��	
���A�G�Q�W�-�-�-����A�G�Q�W�-�-�-��'��������!�'�*�*�*������!�'�*�*�*�������'��������!�'�*�*�*������!�'�*�*�*���	������������A�G�$�$�$������!�$�$�$���'�
����A�q�w�'�'�'����A�G�Q�'�'�'��U�O�����A�q�w�'�'�'����A�G�Q�'�'�'�
�G�����A�q�w�'�'�'����A�G�Q�'�'�'�'�'r"c��|jj}|jj}|jj}|��5}|�|j|��|���|�|d��d��|�|j	|��|���|�|�
d��d��|�|j	|��|���|�d��}|�|j	|��|�|d��|�|j	|��|���|�d��}|�|j	|��|�|d��|�|j	|��d|j|<|���|�
||d��|�|j	|��|���|�
||j
d��|�|j	|��|���|�d��}|�|j	|��|���|�d��}|�|j	|��ddd��dS#1swxYwYdS)Ng@T)rr�rur�r&r.r0rAr$rSr�r�rSrj)r�r�rur�r�rs      r �test_float_operationz!ContextFlags.test_float_operation_s���,�&����4���|�0��
�\�^�^�.	6�q����Q�W�^�4�5�5�5�
�M�M�O�O�O����W�W�S�\�\�3�/�/�/��O�O�A�G�N�3�4�4�4�
�M�M�O�O�O����Q�-�-�c�2�2�C�8�8�8��O�O�A�G�N�3�4�4�4�
�M�M�O�O�O��"�"�3�'�'�A����Q�W�^�4�5�5�5����Q��$�$�$��O�O�A�G�N�3�4�4�4�
�M�M�O�O�O��+�+�C�0�0�A����Q�W�^�4�5�5�5����Q��$�$�$��O�O�A�G�N�3�4�4�4�'+�A�G�N�#�
�M�M�O�O�O����n�g�s�;�;�;��O�O�A�G�N�3�4�4�4�
�M�M�O�O�O����n�a�.>��D�D�D��O�O�A�G�N�3�4�4�4�
�M�M�O�O�O��"�"�3�'�'�A����Q�W�^�4�5�5�5�
�M�M�O�O�O��+�+�C�0�0�A����Q�W�^�4�5�5�5�].	6�.	6�.	6�.	6�.	6�.	6�.	6�.	6�.	6�.	6�.	6�.	6����.	6�.	6�.	6�.	6�.	6�.	6s�LM�M�	Mc�����	�
���
����������jj��jj}�jj��jj}d��fd�	�	�d����d���
d�d��d����d���d�d	��d
����d���td���
td
���d��	�
���
��������fd�	}d���fd�	}|��}||��5}��|j���||d���||d���d|j�<||����||����ddd��dS#1swxYwYdS)Nc�
��|���t||��}|�kr��|||��n��||��d����|j���dSrd)r0r#rjr�r$rS)r�r]r(r'�signalr�rur�s      ��r �assert_attrz7ContextFlags.test_float_comparison.<locals>.assert_attr�s�������!�!�!���4� � �A���'�'��!�!�&�!�Q�/�/�/�/��
�
�a�a��d�d�D�)�)�)��O�O�G�M�.�9�:�:�:�:�:r"r`rarcrbr?r�r�rRr�r�r�r�c���dD]}��
�|||���dD]}���|||�����
�d|d�����d|d�����d|d�����d|d�����d|d����	�
d|d�����d|d����
�d|d����d��dd|d����	�d|d�����
d|d����d��td��d|d��dS)	N)rr
)rrrrr�r�r}r�)r�)r�r{r(r�r|�big_d�big_f�inf_d�inf_f�	neg_inf_d�	neg_inf_f�
neg_zero_d�
neg_zero_f�small_d�small_f�zero_d�zero_fs   ��������������r �doitz0ContextFlags.test_float_comparison.<locals>.doit�s����*�
=�
=����G�U�D�!�V�<�<�<�<�*�
=�
=����E�7�D�!�V�<�<�<�<�
�K���(�A�t�<�<�<��K�
�J��!�T�B�B�B��K�
�F�H�a��>�>�>��K��
�H�a��>�>�>��K����!�T�:�:�:��K�	�9�h��4�@�@�@��K��u�h��4�8�8�8�
�K����!�T�:�:�:��K�������X�q�$�?�?�?��K�	�5�(�A�t�<�<�<��K��y�(�A�t�<�<�<��K�������e���h��4�H�H�H�H�Hr"c����|���td�d��g��}��t|��d����|j���|���|r(��|td�d��g��ntd�d��g��}��|j���|���d�d��dfv}��|j���|���d�d��dddiv}��|j���dS)	Nr@z100.0rr�r�g$@r�r])r0r�rA�lenr$rSrj�sorted)r�r{rr]r�rur�s    ���r �test_containersz;ContextFlags.test_float_comparison.<locals>.test_containers�sU���
�M�M�O�O�O��U�G�G�G�,�,�-�.�.�A����S��V�V�Q�'�'�'��O�O�A�G�N�3�4�4�4�
�M�M�O�O�O��
4��!�!�&�&�3������2H�I�I�I�I��D�'�'�&�/�/�2�3�3���O�O�A�G�N�3�4�4�4�
�M�M�O�O�O�������#�.�.�A��O�O�A�G�N�3�4�4�4�
�M�M�O�O�O��������c�#�6�6�A��O�O�A�G�N�3�4�4�4�4�4r")r{Tr)rr�r/rur�r�r&r.)r�r/r�r�r�r�r�r�rur|r~rr�r�r�r�r�r�r�r�r�r�s`      @@@@@@@@@@@@@@@r �test_float_comparisonz"ContextFlags.test_float_comparison�sn�������������������,�&���,�&����4���|�0��	;�	;�	;�	;�	;�	;�	;��'�&�/�/�������������������W�V�_�_�
����
���
�#�#���G�K�(�(�	��e�����&�M�M�	�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�<	5�	5�	5�	5�	5�	5�	5�	5�*�W�Y�Y��
�\�"�
�
�	6�����Q�W�^�4�5�5�5��D��4� � � � ��O�A�d�+�+�+�+�&*�A�G�N�#��D��>�*�*�*�*��O�A�n�5�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s� AE�E�Ec���|jj}|jj}|jj}|jj}|��}|�|j|��|�|j|��|���d|j|<d|j|<|�	|j|��|�	|j|��dSrd)
rr�r/r�rur&rSr.�clear_trapsr$)r�r�r/r�rur's      r �test_float_operation_defaultz)ContextFlags.test_float_operation_default�s����,�&���,�&���,�&����3���'�)�)�������~�6�7�7�7������~�6�7�7�7�������!%��
�g��(,��
�n�%�����
�n�5�6�6�6�����
�g�.�/�/�/�/�/r"N)	r�r`rarsrvrrxr�r�rr"r rara�sy������@W�@W�@W�D$(�$(�$(�L�36�36���36�jY6�Y6�Y6�v0�0�0�0�0r"rac��eZdZeZdS)�
CContextFlagsNr�rr"r r�r�r�r"r�c��eZdZeZdS)�PyContextFlagsNr�rr"r r�r�r�r"r�c��eZdZ	d�Zd�ZdS)�SpecialContextsc
���|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj	}	t||d|||||	g��|�����}
|j}|j}d}
	dx|_|_||fD]H}||��|��}|�
||��|�|jd���In#t$r}|j}
Yd}~nd}~wwxYw||_||_||
��|
r|
�dS#||_||_||
��|
r|
�wxYw)Nr.i�)r�BasicContext�ExtendedContextr�r4r�r�r�r�r�r)ror,r4rA�	Exceptionr�)r�r�r�r�r4r�r�r�r�r��savecontext�basic_context_prec�extended_context_prec�ex�templater�r*s                 r �test_context_templatesz&SpecialContexts.test_context_templates	s����|�0���,�6���\�,�
��\�,�
��<�8����4���<�(���L�*�	��,�&���t�\�7�
�~�x��G�L�	
�	
�	
�!�j�l�l�'�'�)�)��)�.�� /� 4��
��	�7:�:�L��� 4�(�/�9�
.�
.���
�8�$�$�$��J�L�L��� � ��H�-�-�-�� � ����-�-�-�-�	
.��
�	�	�	���B�B�B�B�B�B�����	����!3�L��#8�O� ��J�{�#�#�#��
���
�
��!3�L��#8�O� ��J�{�#�#�#��
������s1�1AD
�E
�
D(�D#�E
�#D(�(E
�
E)c�N�|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|�	|j
d��|�	|j
d��t||d|||g��|�����}	|j
}
d}	|��}|j
}
d|_
|��}|�	|j
|
��||��|��}|�
||��|�	|j
d��n#t$r}|j}Yd}~nd}~wwxYw|
|_
||	��|r|�dS#|
|_
||	��|r|�wxYw)Nr+r.i�)rr=r�r�r�r4r�r�r�rAr,r)ror4r�r�)r�r=r�r�r�r4r�r�r�r��default_context_precr�r��saveprecr*s               r �test_default_contextz$SpecialContexts.test_default_context-s�����4���|�0���,�6���\�,�
��\�,�
��<�8����4���<�(������*�A�.�.�.�����-�q�1�1�1��t�^�W�
�~�x�8�	
�	
�	
�!�j�l�l�'�'�)�)��-�2��
��	��
���A��v�H�"%�N���
���A����Q�V�X�.�.�.��J�~�&�&�&��
���A����Q��/�/�/����Q�V�S�)�)�)�)���	�	�	���B�B�B�B�B�B�����	����#7�N���J�{�#�#�#��
���
�
��#7�N���J�{�#�#�#��
������s1�BE�F�
E1� E,�'F�,E1�1F�F$N)r�r`rar�r�rr"r r�r�s6������%�"�"�"�H'�'�'�'�'r"r�c��eZdZeZdS)�CSpecialContextsNr�rr"r r�r�Vr�r"r�c��eZdZeZdS)�PySpecialContextsNr�rr"r r�r�Yr�r"r�c��eZdZd�ZdS)�ContextInputValidationc	��|jj}|jj}|���}dD]}}t	||d��|�t
||��d��|�tt||d��|�tt||d���~t	|dd��|�t
|d��d��|�tt|dd��|�tt|dd��|�tt|d	d��|�tt|d	d
��|�tt|d	d��|�tt|d	d��dD]m}|�tt||d��|�tt||d
��|�tt||gd����n|�tt|dd��|�tt|dg��|�tt|di��|�tt|dddi��dD]#}|�t|j|���$|�tt|d
��|�tt|d
��|�t|d���|�t|d���|�t|d
���|�t|d���|�t|dg���|�t|dg���|�t|d���|�t|d���dS)N�r,r^r�rur�rYr�r�rrr�r-r+r��rrbrrtr�rSr.r�r)r,r^rYr-rrbrSr.rWrCrBr�rD�QrE�rr)rr)
rr/r=ror/rAr#rjrr3r4�KeyError�__delattr__)r�r/r=r�r(s     r �test_invalid_contextz+ContextInputValidation.test_invalid_context^s����,�&����4�����!�!��%�	B�	B�D��A�t�V�$�$�$����W�Q��-�-�v�6�6�6����j�'�1�d�B�?�?�?����i��!�T�5�A�A�A�A�	��6�7�#�#�#������F�+�+�W�5�5�5����*�g�q�&�!�<�<�<����)�W�a���A�A�A����)�W�a��R�@�@�@����)�W�a��Q�?�?�?����)�W�a��S�A�A�A����)�W�a��U�C�C�C�*�	D�	D�D����j�'�1�d�B�?�?�?����j�'�1�d�A�>�>�>����i��!�T�7�7�7�C�C�C�C�	
���.�'�1�f�c�B�B�B�	
���)�W�a��"�=�=�=����(�G�Q���<�<�<����(�G�Q��-�a�0�	2�	2�	2�'�	C�	C�D����n�a�m�T�B�B�B�B�	
���)�W�a��3�3�3����)�W�a��3�3�3�	
���)�W�v��>�>�>����)�W�u��=�=�=����*�g�Q��7�7�7����*�g���;�;�;����(�G�C�5��9�9�9����(�G�C�5��9�9�9�	
���)�W�E��:�:�:����)�W�E��:�:�:�:�:r"N)r�r`rar�rr"r r�r�\s#������:;�:;�:;�:;�:;r"r�c��eZdZeZdS)�CContextInputValidationNr�rr"r r�r��r�r"r�c��eZdZeZdS)�PyContextInputValidationNr�rr"r r�r��r�r"r�c��eZdZd�ZdS)�ContextSubclassingc��	���|j��j}�j��j}�j}�j}�j}�j}�j}�j	}�j
}	G��fd�d���}
���}|
��}dD]4}
|�t||
��t||
�����5|j
t|
fiddi��|
d���}|�|jd��|�
|	|j|d��d	��|j
t"|
fid
di��|
t$d���}|�|jt$��|�|�|d
����d��|j
t|
fiddi��|
dd���}|�|jd��|�|d��|d����}|�||d����|||||fD]"}|�|j|���#|j
t|
fiddi��|
dd���}|�|jd��|�
||j|d��|d����|jt4kr(|||fD]"}|�|j|���#|j
t|
fiddi��|
d	���}|�|jd	��|�d��}|�|�|��d��|j
t|
fiddi��|
dd� ��}|�|jd��|�|d����}|�t?|��d!��|j
t"|
fid"di��|
||g�#��}||fD]"}|�|j|���#|� ��tB�D]"}|�"|j|���#|j
t"|
fid$di��|
||g�%��}||fD]"}|�|j#|���#|�$��tB�D]"}|�"|j#|���#dS)&Nc�$��eZdZ			d��fd�	ZdS)�>ContextSubclassing.test_context_subclassing.<locals>.MyContextNc	������	�|��|�||_|�||_|�||_|�||_|�||_|�||_��8t�t��r�fd�t�
�zD����|_
��:t�t��r�fd�t�
�zD����|_dSdS)Nc���i|]}||�v��Srr)rr�rSs  �r �
<dictcomp>z[ContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__.<locals>.<dictcomp>����� Y� Y� Y�A��A��J� Y� Y� Yr"c���i|]}||�v��Srr)rr�r.s  �r r�z[ContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__.<locals>.<dictcomp>�r�r")r�r,r-rYr^rrbr�rWr:rSr.)r�r,r-rYr^rrbrSr.r/rs       ``��r r�zGContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__�s������� � ��&�&�&��#� $�D�I��'�$,�D�M��#� $�D�I��#� $�D�I��'�$,�D�M��$�!&�D�J��$�!�%��.�.�Z� Y� Y� Y� Y���9P�SX�9X� Y� Y� Y��!&�D�J��$�!�%��.�.�Z� Y� Y� Y� Y���9P�SX�9X� Y� Y� Y��!&�D�J�J�J�%�$r")NNNNNNNNr�)r/rs��r �	MyContextr��sA�������IM�@D�%)�
'�
'�
'�
'�
'�
'�
'�
'�
'r"r��r,r-rYr^rrbrSr.r,rurr;�9e2rr-�XYZ)r-r,rjr+rYrw)rYr,z1e-99z2.234e-2000r?r^)r^r,�1e99z
2.234e2000rrB�1E222z1e+222rbr�c)rbr^z!1.000000000000000000000000000E+99rSrDr.rE)%rr�r/r�r�r�r�r�r�r�r�rAr#rjrr,r	r3r�r-rrYr�r$rSr^r�rr�r�rbr<r0r:r&r.r�)r�r�r�r�r�r�r�r�r�r�r�r�rr(rr{r/rs                @@r �test_context_subclassingz+ContextSubclassing.test_context_subclassing�s������,���/���/���/�� �/���/���#���/���%�	��%�	�"�3��	'�	'�	'�	'�	'�	'�	'�	'��	'�	'�	'�4
�G�I�I���I�K�K��'�	A�	A�D����W�Q��-�-�w�q�$�/?�/?�@�@�@�@�	���*�i�?�?�F�2�;�?�?�?��I�1�����������#�#�#����*�A�J�������J�J�J�	���)�Y�E�E�:�e�2D�E�E�E��I�z��2�2�2�������Z�0�0�0������������/�/��3�3�3�	���*�i�>�>�F�1�:�>�>�>��I�2�A�&�&�&��������$�$�$�
�E�E�'�'�'�"�"�G�G�M�$:�$:�;�;������G�G�E�N�N�+�+�+��	�9�g�w�G�	-�	-�F��O�O�A�G�F�O�,�,�,�,�	���*�i�?�?�F�2�;�?�?�?��I�1�1�%�%�%��������#�#�#����(�A�E�7�7�6�?�?�G�G�L�<Q�<Q�R�R�R��<�1���"�H�g�6�
1�
1���������0�0�0�0�	���*�i�C�C�J�r�?�C�C�C��I�q�!�!�!�������Q�'�'�'�
���W�%�%���������+�+�X�6�6�6�	���*�i�?�?�G�A�;�?�?�?��I�A�B�'�'�'�������!�$�$�$�
�F�F�7�7�6�?�?�#�#������Q���!D�E�E�E�	���)�Y�B�B�7�5�/�B�B�B��I�W�n�5�6�6�6����/�	-�	-�F��O�O�A�G�F�O�,�,�,�,�	�
�
����$�W�-�	.�	.�F����Q�W�V�_�-�-�-�-�	���)�Y�B�B�7�5�/�B�B�B��I�W�n�5�6�6�6����/�	-�	-�F��O�O�A�G�F�O�,�,�,�,�	�
�
����$�W�-�	.�	.�F����Q�W�V�_�-�-�-�-�	.�	.r"N)r�r`rar�rr"r r�r��s(������i.�i.�i.�i.�i.r"r�c��eZdZeZdS)�CContextSubclassingNr�rr"r r�r�
r�r"r�c��eZdZeZdS)�PyContextSubclassingNr�rr"r r�r�r�r"r�c� �eZdZd�Zd�Zd�ZdS)�CheckAttributesc���|�tjtj��|�tjtj��|�tjtj��|�tjtj��|�tjdup
tjdu��|�tjdup
tjdu��|�tj	tj	��|�tt��tt����dS)NTF)rAr�rVr�r�rqrrr$r>�__version__�dirr�s r �test_module_attributesz&CheckAttributes.test_module_attributess���	
�����Q�Z�0�0�0������Q�Z�0�0�0������Q�Z�0�0�0������a�k�2�2�2������$�.�I�!�.�E�2I�J�J�J������$�.�I�!�.�E�2I�J�J�J�������
�6�6�6�����Q����Q���(�(�(�(�(r"c�D�d�tt�����D��}d�tt�����D��}|�t|��t|��z
t����dS)Nc�D�g|]}d|vs|�d���|��S��__rM�r	�rrs  r r(z;CheckAttributes.test_context_attributes.<locals>.<listcomp>(�-��O�O�O�1�D�A�I�I�Q�\�\�#�=N�=N�I�Q�I�I�Ir"c�D�g|]}d|vs|�d���|��Sr�r�r�s  r r(z;CheckAttributes.test_context_attributes.<locals>.<listcomp>)r�r")r�r�r/r�rAr��r�rr�s   r �test_context_attributesz'CheckAttributes.test_context_attributes&sx��O�O��A�I�I�K�K�(�(�O�O�O��O�O��A�I�I�K�K�(�(�O�O�O������Q���#�a�&�&��#�%�%�0�0�0�0�0r"c�H�d�tt�d����D��}d�tt�d����D��}|�t	|��t	|��z
t	����dS)Nc�D�g|]}d|vs|�d���|��Sr�r�r�s  r r(z;CheckAttributes.test_decimal_attributes.<locals>.<listcomp>.�-��P�P�P�1�T�Q�Y�Y�a�l�l�3�>O�>O�Y�Q�Y�Y�Yr"r+c�D�g|]}d|vs|�d���|��Sr�r�r�s  r r(z;CheckAttributes.test_decimal_attributes.<locals>.<listcomp>/r�r")r�r�r�rAr�r�s   r �test_decimal_attributesz'CheckAttributes.test_decimal_attributes,s|��P�P��A�I�I�a�L�L�)�)�P�P�P��P�P��A�I�I�a�L�L�)�)�P�P�P������Q���#�a�&�&��#�%�%�0�0�0�0�0r"N)r�r`rar�r�r�rr"r r�r�sA������
)�
)�
)�1�1�1�1�1�1�1�1r"r�c�\�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�ZdS)�Coveragec�D�|jj}|�|d�����d��|�|d�����d��|�|d�����d��dS)N�	1234e9999i'r�rr�)rr�rArorgs  r �
test_adjustedzCoverage.test_adjusted4s����,�&��������-�-�6�6�8�8�%�@�@�@���������0�0�2�2�A�6�6�6���������0�0�2�2�A�6�6�6�6�6r"c��|jj}|jj}|d�����}|�|d��|��}|�|d����}|�|d��dS)Nr+)rr�r�rqrA)r�r�r�rr�s     r �test_canonicalzCoverage.test_canonical<s����,�&���\�,�
��G�A�J�J� � �"�"������A�����J�L�L��
�K�K����
�
�#�#������A�����r"c�J�|jj���}d|_d|_d|_t|_d|_d|_	t|jD]}d|j|<d|j|<�|�
��}d}|�||��dS)Nr�r;rrFz{Context(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[], traps=[]))rr=ror,r^rYr�r-rrbr:rSr.�__repr__rA)r�r�r-rr�s     r �test_context_reprzCoverage.test_context_reprGs����L�'�,�,�.�.�����������$��
���
����!�$�,�/�	!�	!�C� �A�G�C�L� �A�G�C�L�L�
�J�J�L�L��
"��	
����A�����r"c�T
�|jj}|jj}|��5}d|_d|_d|_|�t|d����d��|�|d��dzd��|�|d��dzd	��|�|d��d
zd��|�|d���|d��d��d��|�	|d
���d
d���
��d��|�t|d��d	d
��d	��|�|d�����d��|�	|d���
��d��|�	|d�����d��|�|d�����d��|�|d�����d��|�|d�����d	��|�|d�����d��|�|d��d��|�|d��dzd��|�|d�����d��|�|d�����|d����|�|d�����|d����|�|d�����d��|�|d��
d��|�|d��d
zd��|�|d��d
z
d��|�|d�����d��|�|d�������|�|d�������|�|d�������|�|d�������|�|d�������|�|d�������|�|d�������ddd��n#1swxYwY|��5}d|_d d!z}||��}|���}|�||��|���}|�||��|� |d����}|�||��ddd��dS#1swxYwYdS)"Nrruz-10r��7r�r-rwrr�z1.2rgr}Tz1.01r�F�20�580r�r�r+z2E+1z-1E+1z+Normalr�z1.12345r�r�rer�i�i�)!rr�r�r,r^rYrArrr�r��powr[r�r�rrrrzr�r�r�rhr�r$r|r~r�r�r�rrrtrv)r�r�r�r�rr�r
s       r r�zCoverage.test_implicit_contextZst���,�&���|�0��
�\�^�^�<	4�q��A�F��A�F��A�F�
���S������0�0�"�5�5�5����W�W�S�\�\�A�-�q�1�1�1����W�W�T�]�]�Q�.��2�2�2����W�W�T�]�]�a�/��3�3�3����W�W�U�^�^�/�/�������C�C�Q�G�G�G��M�M�'�'�%�.�.�,�,�Q��2�2�9�9�;�;�T�B�B�B����S������a��3�3�Q�7�7�7����W�W�V�_�_�0�0�2�2�A�6�6�6��M�M�'�'�&�/�/�3�3�5�5�u�=�=�=��M�M�'�'�&�/�/�6�6�8�8�$�?�?�?����W�W�T�]�]�-�-�/�/��3�3�3����W�W�T�]�]�0�0�2�2�A�6�6�6����W�W�U�^�^�0�0�2�2�A�6�6�6����W�W�T�]�]�9�9�;�;�Q�?�?�?����g�g�e�n�n�_�b�1�1�1����W�W�S�\�\�A�-�q�1�1�1����W�W�T�]�]�5�5�7�7��;�;�;����W�W�T�]�]�4�4�6�6������H�H�H����W�W�U�^�^�5�5�7�7����9I�9I�J�J�J����W�W�T�]�]�7�7�9�9�9�E�E�E����g�g�d�m�m�^�R�0�0�0����W�W�T�]�]�Q�.��2�2�2����W�W�T�]�]�Q�.��2�2�2����W�W�Y�/�/�A�A�C�C�Q�G�G�G�
�O�O�G�G�C�L�L�5�5�7�7�8�8�8��O�O�G�G�C�L�L�2�2�4�4�5�5�5��O�O�G�G�C�L�L�2�2�4�4�5�5�5��O�O�G�G�F�O�O�3�3�5�5�6�6�6��O�O�G�G�D�M�M�3�3�5�5�6�6�6��O�O�G�G�C�L�L�0�0�2�2�3�3�3��O�O�G�G�C�L�L�0�0�2�2�3�3�3�y<	4�<	4�<	4�<	4�<	4�<	4�<	4�<	4�<	4�<	4�<	4����<	4�<	4�<	4�<	4�~�\�^�^�	#�q��A�F����A�������A��
�
���A����Q��"�"�"��
�
���A����Q��"�"�"����G�G�A�J�J�'�'�A����Q��"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�	#�	#s%�V+W�W�!W�/B!Z�Z!�$Z!c�|�|jj}|jj}|jj}|jj}|��5}t|d��d��\}}|�||d����|�||d����t|d��d��\}}|�|���o|�����d|j	|<t|d��d��\}}|�|���o|�����d|j	|<|�
��t|d��|d����\}}|�|���o|�����|�|j|��|�
��t|d��d	��\}}|�|���o|�����|�|j|��|�
��t|d
��d
��\}}|�|���o|�����|�|j|��d|j	|<|�
��t|d��d
��\}}|�|���o|�����|�|j|o|j|��ddd��dS#1swxYwYdS)N�10912837129r
�10901935�194r}r�Fr�r�r�)
rr�r�r�r�r.rAr$r�r.r0rSr�)r�r�r�r�r�r�rr�s        r r�zCoverage.test_divmod�s_���,�&���|�0���<�8����4��
�\�^�^�!	5�q��'�'�-�0�0�$�7�7�D�A�q����Q���
� 3� 3�4�4�4����Q������/�/�/��'�'�%�.�.�!�,�,�D�A�q��O�O�A�H�H�J�J�5�1�8�8�:�:�6�6�6�(-�A�G�$�%��'�'�%�.�.�!�,�,�D�A�q��O�O�A�H�H�J�J�5�1�8�8�:�:�6�6�6�(-�A�G�$�%�
�M�M�O�O�O��'�'�%�.�.�'�'�%�.�.�9�9�D�A�q��O�O�A�H�H�J�J�5�1�8�8�:�:�6�6�6��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��'�'�%�.�.�#�.�.�D�A�q��O�O�A�M�M�O�O�:����
�
�;�;�;��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O��'�'�!�*�*�a�(�(�D�A�q��O�O�A�H�H�J�J�5�1�8�8�:�:�6�6�6��O�O�A�G�$4�5�6�6�6�&+�A�G�N�#�
�M�M�O�O�O��'�'�"�+�+�q�)�)�D�A�q��O�O�A�M�M�O�O�:����
�
�;�;�;��O�O�A�G�$4�5�4��G�N�3�
5�
5�
5�A!	5�!	5�!	5�!	5�!	5�!	5�!	5�!	5�!	5�!	5�!	5�!	5����!	5�!	5�!	5�!	5�!	5�!	5s�M)N1�1N5�8N5c��|jj}|jj}|jj}|jj}|��5}d|_|���|�|d��dz|d����|�|j	|��d|_d|_
d|_|���d|j|<|�|d��|d	��z|d
����|�|j	|��ddd��dS#1swxYwYdS)Nr�r�r�r_rruFr�r�r�)
rr�r�r�r�r,r0rAr$rSr^rYr.)r�r�r�r�r�r�s      r r
zCoverage.test_power�si���,�&���|�0���<�(���,�&��
�\�^�^�	/�q��A�F�
�M�M�O�O�O����W�W�U�^�^�s�2�G�G�F�O�O�D�D�D��O�O�A�G�G�,�-�-�-��A�F��A�F��A�F�
�M�M�O�O�O� %�A�G�H�����W�W�U�^�^�w�w�u�~�~�=�w�w�u�~�~�N�N�N��O�O�A�G�H�-�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�C.D6�6D:�=D:c�n�|jj}|jj}|jj}|��5}d|_d|_d|_d|j|<|d���|d����}|�	|�
����ddd��dS#1swxYwYdS)NrruFr��1e1)rr�r�r�r,r^rYr.r	r$r��r�r�r�r�r�rs      r r[zCoverage.test_quantize�s����,�&���|�0���<�8��
�\�^�^�	(�q��A�F��A�F��A�F�(-�A�G�$�%������$�$�W�W�U�^�^�4�4�A��O�O�A�H�H�J�J�'�'�'�
	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(s�A.B*�*B.�1B.c��|jj}|jj}|��}|�|d�����d��|�|���d��dS)Nr�r�)rr�r�rArpr�s    r �
test_radixzCoverage.test_radix�so���,�&���\�,�
��J�L�L����������+�+�-�-�r�2�2�2���������B�'�'�'�'�'r"c	��|jj}dD]=}|�t|d��|��d��t���>dS)N)rrrr rr#r%r'r�r�)rr�r�r#rg)r�r�r(s   r r2zCoverage.test_rop�s`���,�&��M�	N�	N�D��M�M�5�'�'�'�#�,�,��5�5�e�<�<�n�M�M�M�M�	N�	Nr"c��|jj}|jj}|��5}d|_|�t|d�������d��|�t|d�������d��|�t|d���d����d��|�t|d	���d
����d��|�t|d	���d����d
��|�t|d��jd��|�t|d��jdd��ddd��dS#1swxYwYdS)Nr�rir-z9.99e-5rervrwz1.23457rgr�z1.2345000000r�z0E+10rZr�r�)	rr�r�r,rAr<�	__round__rjr3)r�r�r�r�s    r �
test_roundzCoverage.test_rounds����,�&���|�0��
�\�^�^�
	J�q��A�F����S������!:�!:�!<�!<�=�=�t�D�D�D����S����!3�!3�!=�!=�!?�!?�@�@�#�F�F�F����S����!6�!6�!@�!@��!C�!C�D�D�i�P�P�P����S����!2�!2�!<�!<�R�!@�!@�A�A�>�R�R�R����S����!2�!2�!<�!<�S�!A�!A�B�B�G�L�L�L����i������)B�C�H�H�H����i������)B�A�q�I�I�I�
	J�
	J�
	J�
	J�
	J�
	J�
	J�
	J�
	J�
	J�
	J�
	J����
	J�
	J�
	J�
	J�
	J�
	Js�FG�G
�
G
c�|�|j���}|�t|jdg��dS)Nr!)rr/rjrr�)r�r�s  r �test_create_decimalzCoverage.test_create_decimals8���L� � �"�"�����*�a�&6���>�>�>�>�>r"c�H�|jj}|jj}|��5}d|_|ddz��ddzz}|�t|��d��|�|���d��ddd��dS#1swxYwYdS)Nrei�i�r�iSrr)rr�r�r,rArr�r�r�r�r�rs     r rBzCoverage.test_ints����,�&���|�0��
�\�^�^�	1�q��A�F����d�
�#�#�b�$�h�.�A����S��V�V�Q�'�'�'����Q�]�]�_�_�a�0�0�0�		1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s�A'B�B�Bc�V�|jj}|��}d|_ddz}|�|��}|�||��|�|��}|�||��|�|d��}|�||��dS)Nr�i�i�r)rr/r,rrrArtrv)r�r/r�rr�s     r r�zCoverage.test_copy#s����,�&���G�I�I������d�l�O��
�J�J�q�M�M������Q�B����
�M�M�!��������Q�B����
�K�K��1��������Q�B�����r"N)r�r`rar�r�r�r�r�r
r[r�r2rrrBr�rr"r r�r�2s�������7�7�7�	�	�	����&O#�O#�O#�b'5�'5�'5�R/�/�/�((�(�(�(�(�(�N�N�N�J�J�J�"?�?�?�1�1�1� � � � � r"r�c��eZdZeZdS)�	CCoverageNr�rr"r r	r	3r�r"r	c�,��eZdZeZ�fd�Z�fd�Z�xZS)�
PyCoveragec���t�����tj��|_tjd��dSrrrs �r r�zPyCoverage.setUp9rr"c�z��tj|j��t�����dSrr rs �r r!zPyCoverage.tearDown>r"r"r#r%s@r rr6r&r"rc��eZdZ	d�ZdS)�PyFunctionalityc��tj}tj}gd�}|D]3\}}}|�t	||��|��|���4dS)N)
)z.0er�z1e+0)z#.0er�z1.e+0)rIr�r�)z#.0fr��1.)rQ�1.1r)z#grr)rSr�r�)z#.0gr�r)rYr�z100%)z#.0%r�z100.%)r�r�r�rAr�)r�r�r�r�r�rrOs       r �test_py_alternate_formattingz,PyFunctionality.test_py_alternate_formattingEsm���)���~������*�	>�	>�N�C��F����V�G�G�A�J�J��4�4�f�=�=�=�=�	>�	>r"N)r�r`rarrr"r rrBs&������+�>�>�>�>�>r"rc�.�eZdZ	d�Zd�Zd�Zd�Zd�ZdS)�
PyWhiteboxc���tj}tj}|��5}d|_|d��|d��z}|�||d����|d��|d��z}|�||d����|d��|d��z}|d��|d	��z}|�||d
����|d��|d	��z}|dd
z��|d	��z}d|_|d��|d��z}d|_|ddz��|d��z}ddd��dS#1swxYwYdS)Nr�ir�z
0.00390625z-0.6z0.0012885819�256e7l�o�
�z-0.0625rf�152587890625e7rwic
r�152587890625��riB)r�r�r�r,rArs     r �test_py_exact_powerzPyWhitebox.test_py_exact_power]s����)���~��
�\�^�^�	3�q��A�F������'�'�&�/�/�1�A����Q���� 5� 5�6�6�6������'�'�&�/�/�1�A����Q���� 7� 7�8�8�8���� � �G�G�F�O�O�3�A����%�%����);�);�;�A����Q������/�/�/���(�)�)�W�W�Y�-?�-?�?�A����4�� � �G�G�I�$6�$6�6�A��A�F����'�'�7�7�6�?�?�:�A��A�F����3����7�7�6�?�?�2�A�)	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s�D1E!�!E%�(E%c������	�tj}tj}tj}|���}td�ttD����|_||��|d���|d���|d���	|d���d2����	�fd�	}|������j	�j	�����j
�j
�����j�j��|d��|dd��|d	d��|d
d��|dd��|dd��|d
d��|dd��|dd��|d��|dd��|d��|d��|d��|dd��|dd��|d��|d��|d��|dd��|dd��|dd��|d��|dd��|dd��|d d��|d!d��|d"d��|d#��|d$d��|d%d��|d&��|d'��|d(d��|d)d��|d*d��|d+��|d,d��|d-d��|d.d��|d/��|d0��|d1��dS)3Nc3�K�|]}|dfV��	dS)rNrr�s  r r!z=PyWhitebox.test_py_immutability_operations.<locals>.<genexpr>s&����9�9�!��1�v�9�9�9�9�9�9r"z-25e55z33e+33Fc���|r�td|zdz�����j�j�����j�j�����j�j�����j�j�����j�j�����j�j��dStd|zdz�����j�j�����j�j�����j�j��dS)Nzd1.z(d2)z())r=rA�_sign�_int�_exp)�	operation�useOther�b1�b2r�r�r�s  �����r �checkSameDecz@PyWhitebox.test_py_immutability_operations.<locals>.checkSameDec�s1����
3��U�Y�&��/�0�0�0�� � ���2�8�4�4�4�� � ���"�'�2�2�2�� � ���"�'�2�2�2�� � ���2�8�4�4�4�� � ���"�'�2�2�2�� � ���"�'�2�2�2�2�2��U�Y�&��-�.�.�.�� � ���2�8�4�4�4�� � ���"�'�2�2�2�� � ���"�'�2�2�2�2�2r"�__abs__rTrrrr
rrr�	__float__r$r~�__int__�	__trunc__r"r�__neg__�__bool__�__pos__r&rrr�r%r#rr'r�__str__rrror�r%r�r�r�r	r�r�r�r�r)F)r�r�r=r4ror1r:r.rArr r!)
r�r�r=r4r�r&r$r%r�r�s
`     @@@@r �test_py_immutability_operationsz*PyWhitebox.test_py_immutability_operationsxs��������)���)���\�
����!�!���9�9�~�a�'8�9�9�9�9�9����
�1�
�
�
�
�W�X�
�
��
�W�X�
�
��
�W�X�
�
��
�W�X�
�
��
	3�
	3�
	3�
	3�
	3�
	3�
	3�
	3�
	3�
	3�	�����������2�8�,�,�,������"�'�*�*�*������"�'�*�*�*���Y������Y��%�%�%���\�4�(�(�(���X�t�$�$�$���X�t�$�$�$���X�t�$�$�$���X�t�$�$�$���X�t�$�$�$���X�t�$�$�$���[�!�!�!���^�T�*�*�*���Z� � � ���Y������[�!�!�!���Y��%�%�%���Y��%�%�%���Y������Z� � � ���Y������Y��%�%�%���Z��&�&�&���]�D�)�)�)���Z� � � ���_�d�+�+�+���Z��&�&�&���Z��&�&�&���Z��&�&�&���Z��&�&�&���Y������Y��%�%�%���]�D�)�)�)���Z� � � ���Z� � � ���Y��%�%�%���U�D�!�!�!���U�D�!�!�!���[�!�!�!���Z��&�&�&���%�t�,�,�,���^�T�*�*�*���V������_�%�%�%���]�#�#�#�#�#r"c���tj}|d��}||��}|�t|��d��|�t|��t|����dS)Nrmrn)r�r�rAr<rUrDr�s    r �test_py_decimal_idzPyWhitebox.test_py_decimal_id�sg���)���G�B�K�K���G�A�J�J������Q����&�&�&����B�q�E�E�2�a�5�5�)�)�)�)�)r"c��tj}tj}|��5}|d���dt��}|�|�����ddd��dS#1swxYwYdS)Nr}r�)r�r�r��_rescaler�r$r�rs     r �test_py_rescalezPyWhitebox.test_py_rescale�s����)���~��
�\�^�^�	(�q������'�'��8�4�4�A��O�O�A�H�H�J�J�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(s�AA<�<B�Bc�~�tj}|�t|d��jdt
��dS)Nz3.1234r)r�r�rjr�_roundr�rgs  r �test_py__roundzPyWhitebox.test_py__round�s6���)�����*�g�g�h�&7�&7�&>��8�L�L�L�L�Lr"N)r�r`rarr/r1r4r7rr"r rrZsk������*�3�3�3�6M$�M$�M$�^*�*�*�(�(�(�M�M�M�M�Mr"rc�R�eZdZ	ed���Zed���Zed���ZdS)�CFunctionalityc��tj}tj}tj}tj}d�}||��}|�|jd��|�|jd��|�|jd��|||��||��}|�|jd��|�|jd��|�|jd��|||��||��}|�|jd��|�|jd	��|�|jd
��|||��|�	t|d��|�	t|d��|�	t|d
��dS)Nc��|�|jd��t||dg��t||dg��dS)Nrr.rS)rArbr))r�r's  r �assert_restz7CFunctionality.test_c_ieee_context.<locals>.assert_rest�sH�����W�]�A�.�.�.��4��'�2�6�6�6��4��'�2�6�6�6�6�6r"r��`i����r�rLrM�"ii�r�rui)r��IEEEContext�	DECIMAL32�	DECIMAL64�
DECIMAL128rAr,r^rYrjr�r)r�r?r@rArBr<r�s       r �test_c_ieee_contextz"CFunctionality.test_c_ieee_context�s����m���K�	��K�	��\�
�	7�	7�	7�

�K�	�"�"��������#�#�#�������$�$�$�������%�%�%���D�!�����K�	�"�"��������$�$�$�������%�%�%�������&�&�&���D�!�����K�
�#�#��������$�$�$�������&�&�&�������'�'�'���D�!����	
���-��e�<�<�<����*�k�2�6�6�6����*�k�4�8�8�8�8�8r"c���tj}|tjtj���}|�|jtj��|�|jtj��dS)N)rSr.)r�r/r:�
DecRoundedrA�_flags�_trapsr�s   r �test_c_contextzCFunctionality.test_c_contexts[���)���G�!�,�a�l�;�;�;�������1�<�0�0�0������1�<�0�0�0�0�0r"c��tjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjf}|�tjd��|�tjd��|�tjd��|�tjd��t+|��D]\}}|�|d|z���|�tjtjtjztjztjztjztj	ztj
z��|�tjtjtjz��|�tjtjtjztjz��dS)Nrsr��ir)r�r:�DecConversionSyntax�DecDivisionByZero�DecDivisionImpossible�DecDivisionUndefined�DecFpuError�
DecInexact�DecInvalidContext�DecInvalidOperation�DecMallocError�DecFloatOperation�DecOverflowrE�DecSubnormal�DecUnderflowrAr@rArB�IEEE_CONTEXT_MAX_BITSr6�DecIEEEInvalidOperation�	DecErrors�DecTraps)r��condrLr�s    r �test_constantszCFunctionality.test_constants
s���
�L�!�/��1D�
�#�Q�%;�
�M�1�<��)<�
�!�1�#3�
������
�N�A�N�

��	
�����b�)�)�)������b�)�)�)������s�+�+�+�����0�#�6�6�6��d�O�O�	&�	&�D�A�q����Q��1��%�%�%�%�����2��.��0�1��/�0���'��,�	-�
�.�/��)�
*�	+�	+�	+�	
������2��,�-�	.�	.�	.�	
�������Q�]�2�1�>�A�	C�	C�	C�	C�	Cr"N)r�r`ra�requires_extra_functionalityrCrHr]rr"r r9r9�so������)�!�!9�!9�"�!�!9�F"�1�1�"�!�1�"�#C�#C�"�!�#C�#C�#Cr"r9c���eZdZ	d�Zd�Zd�Zd�Zd�Zd�Ze	d���Z
d�Ze	d	���Zd
�Z
d�Zd�Zd
�Zd�Ze	d���Ze	d���Zd�Zd�Zd�Zd�Zd�Zejej�d��d��ejed��ejedd���d��e d���������Z!d�Z"d�Z#d�Z$d S)!�	CWhiteboxc�|�tj}tj}ddz}ddz}|��5}d|_t	d��D]^}tj||��}tjdd��}||z}	||��||��z}
|�|	|
���_	ddd��dS#1swxYwYdS)Nr��#�$i@Brwr�i�)r�r�r�r,rxr/r�rA)r�r�r�r$r%r�rLr�r]rr�s           r �test_bignumzCWhitebox.test_bignum7s���)���~��
��V��
��V��
�\�^�^�	'�q��A�F��1�X�X�
'�
'���$�R��,�,���$�T�4�0�0����F���G�A�J�J�'�'�!�*�*�,��� � ��A�&�&�&�&�
'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	's�A6B1�1B5�8B5c�T�|�ttjdd��dS)Nr+r�)rjr3r�r�r�s r �test_invalid_constructionz#CWhitebox.test_invalid_constructionHs$�����)�Q�Y��5�9�9�9�9�9r"c���tj}tj}tj}tj}||����5|�||d��ddd��dS#1swxYwYdS)N�1e9999999999999999999)r�r�r�r/r�rj)r�r�r�r/r�s     r �test_c_input_restrictionz"CWhitebox.test_c_input_restrictionKs����)���-���)���~��
�\�'�'�)�)�
$�
$�	7�	7����.��5�
7�
7�
7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�A)�)A-�0A-c��tj}tj}|���}d|_d|_d|_t|_d|_	d|_
ttD]}d|j|<d|j
|<�d|j|<d|j
|<|���}d}|�||��dS)Nr�r;rrTaQContext(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[Clamped, InvalidOperation, DivisionByZero, Inexact, FloatOperation, Overflow, Rounded, Subnormal, Underflow], traps=[Clamped, InvalidOperation, DivisionByZero, Inexact, FloatOperation, Overflow, Rounded, Subnormal, Underflow]))r�r=ruror,r^rYr�r-rrbr:rSr.r�rA)r�r=rur�r-rr�s       r �test_c_context_reprzCWhitebox.test_c_context_reprVs����)���)�����!�!�����������$��
���
����!�!�$�	 �	 �C��A�G�C�L��A�G�C�L�L�"&�����"&�����
�J�J�L�L��
O��	
����A�����r"c	��
�tj}tj}tj}tj}tj}tj}tj}tjdk}|��}	|�	t|	jjdd��|�	t|	j
jdd��|�	t|	jj|��|�	t|	j
j|��|�	t t"|	ddg��|�	t t"|	ddg��|�	tt"|	dddi��|�	tt"|	dddi��|	j���}
|
|=d	|
d
<|�	tt"|	d|
��|�	tt"|	d|
��|rdnd}|rd
nd}dD]%}
|�	tt"|	|
|���&|�	tt"|	d|��|�	t||���|�	t||���|�	t||���|�	t&||dz���|�	t&||dz���|�	t&||dz
���|�	t&||dz���|�	t&||dz���dD]�}
|�	t&t"|	|
|dz��|�	t&t"|	|
|dz
��t(jdkrJ|�	tt"|	|
|��|�	tt"|	|
|dz
����tjdkr�|�	t&t-|	d��|dz��|�	t&t-|	d��|dz��|�	t&t-|	d��|dz
��tjdkr�|�	tt-|	d��d��|�	tt-|	d��d��|�	tt-|	d��d��|�	tt-|	d��d��|�	tt-|	d��d��|�	tt-|	d��d��dD]�}
|�	tt"|	|
d��|�	tt"|	|
d��|�	t t"|	|
gd ���|rF|�	tt"|	|
d!��|�	tt"|	|
d"����|�	t t.d#t1����|�	t t.d$t1����|��}|�	t |d%��||��dS)&Nr�i!rrSrr.r�ri�pr�r�r�l�N�Zoiʚ;r�rYr;rAr@rrCrB)r,rYr^rrb�win32r�r�r�i���?rui9�r�r���zwith localcontext("xyz"): passz-with localcontext(context=getcontext()): passr�)r�r/r�r�rur�r�r4rVrjr�rS�__setitem__r.r�__delitem__r3r/ror�r�platformr#�execr�)r�r/r�r�rur�r�r4�HAVE_CONFIG_64r�r�int_max�gt_max_emaxr(�
saved_contexts               r �test_c_context_errorszCWhitebox.test_c_context_errorsssi���)���-���:���)���~���\�
��\�
��*�y�0���G�I�I��	
���(�A�G�$7��a�@�@�@����(�A�G�$7��a�@�@�@����*�a�g�&9�8�D�D�D����*�a�g�&9�;K�L�L�L����)�W�a��3�%�@�@�@����)�W�a��#��?�?�?����(�G�Q��!�A��?�?�?����(�G�Q��!�A��?�?�?�
�G�L�L�N�N��
�n����%�����(�G�Q���;�;�;����(�G�Q���;�;�;�,�8�'�'��� .�9�f�f�E��%�	I�	I�D����j�'�1�d�K�H�H�H�H����*�g�q�&�;�,�G�G�G�	
���*�g�K��@�@�@����*�g�K��@�@�@����*�g�[�L��A�A�A�	
���-��w�q�y��A�A�A����-��w�q�y��A�A�A����-���x��z��B�B�B����-����	��B�B�B����-��7�1�9��E�E�E�B�	L�	L�D����m�W�a��w�q�y�I�I�I����m�W�a���x��z�J�J�J��|�w�&�&��!�!�*�g�q�$��H�H�H��!�!�*�g�q�$����
�K�K�K��
�:��"�"����m�W�Q�8I�-J�-J�%�a�i�
)�
)�
)����m�W�Q�8I�-J�-J�%�a�i�
)�
)�
)����m�W�Q�8I�-J�-J�&�h�q�j�
*�
*�
*�
�:��"�"����j�'�!�5F�*G�*G��K�K�K����j�'�!�5F�*G�*G�(�
*�
*�
*����j�'�!�5F�*G�*G��L�L�L����j�'�!�5F�*G�*G�(�
*�
*�
*����j�'�!�5F�*G�*G�)�
+�
+�
+����j�'�!�5F�*G�*G��K�K�K�*�	I�	I�D����j�'�1�d�B�?�?�?����j�'�1�d�A�>�>�>����i��!�T�7�7�7�C�C�C��
I��!�!�*�g�q�$��F�F�F��!�!�*�g�q�$��H�H�H��	
���)�T�+K� �(�(�	$�	$�	$����)�T�I� �(�(�	$�	$�	$�
#�
���
����)�Z��7�7�7��
�=�!�!�!�!�!r"c��|�tjtj��|�tjtj��|�tjtj��|�tjtj��|�tjtj��|�tjtj��|�tj	tj	��|�tj
tj
��dSr)r�r�r�r�r�r�r�r�r�r0r�r�s r �test_rounding_strings_internedz(CWhitebox.test_rounding_strings_interned�s����
�
�a�j�!�*�-�-�-��
�
�a�l�A�L�1�1�1��
�
�a�o�q��7�7�7��
�
�a�m�Q�]�3�3�3��
�
�a�o�q��7�7�7��
�
�a�'��):�;�;�;��
�
�a�'��):�;�;�;��
�
�a�l�A�L�1�1�1�1�1r"c	�x�tj}tj}tj}tj}tj}tj}tjdk}|��}|rdnd}	|�tt|d|	dz��|�tt|d|	dz
��tjdkrJ|�tt|d|	��|�tt|d|	dz
��dD]�}
|�tt||
|	dz��|�tt||
|	dz
��tjdkrJ|�tt||
|	��|�tt||
|	dz
����|�tt|dd	��|�tt|dd��|�tt|dgd
���|rF|�tt|dd��|�tt|dd��dD]H}
|�tt||
d
��|�tt||
d���IdS)Nr�r�r��_allcrrrrm)rFrGrur�rnror�r)r�r/r�r�r�r�r4rVrjr�r/rrrrr3)r�r/r�r�r�r�r4rtr�rur(s           r �test_c_context_errors_extraz%CWhitebox.test_c_context_errors_extra�sz���)���-���:���~���\�
��\�
��*�y�0���G�I�I��,�8�'�'���	
���-��!�X�w�q�y�I�I�I����-��!�X��x��z�J�J�J��<�7�"�"����j�'�1�h��H�H�H����j�'�1�h����
�K�K�K�)�	K�	K�D����m�W�a��w�q�y�I�I�I����m�W�a���x��z�J�J�J��|�w�&�&��!�!�)�W�a��w�G�G�G��!�!�)�W�a���x��z�J�J�J��	
���*�g�q�(�B�?�?�?����*�g�q�(�A�>�>�>����)�W�a��7�7�7�C�C�C��	I����j�'�1�h��F�F�F����j�'�1�h��H�H�H�)�	@�	@�D����i��!�T�6�B�B�B����i��!�T�3�?�?�?�?�	@�	@r"c�N�tj}tj}tj}tj}tj}tj}|���}d|_t|_
d|_d|_d|_
d|_|�|jd��|�|j
t��|�|jd��|�|jd��|�|j
d��|�|jd��|�|���d��|�|���d��tjdkr�|�d	��|�d	��|�d
��|�|jd	��|�|jd	��|�|jd
��dSdS)Nr>i�iH�rri'�i�r�rjrk)r�r=r�r�r�r�r�ror,r�r-r^rYrrbrA�Etiny�EtoprVr�r�r�)r�r=r�r�r�r�r�r�s        r �test_c_valid_contextzCWhitebox.test_c_valid_contexts����)���)���K�	��)���)���K�	����!�!�����"��
���������
����������$�$�$������]�3�3�3�������'�'�'�������&�&�&������Q�'�'�'������!�$�$�$���������E�*�*�*���������4�(�(�(�
�:��"�"�
���i�(�(�(�
���i�(�(�(�
���j�)�)�)����Q�V�Y�/�/�/����Q�V�Y�/�/�/����Q�V�Z�0�0�0�0�0�
#�"r"c��tj}|���}|�|jd��d|_|�|jd��dS)Nrr)r�r=rorAr|)r�r=r�s   r �test_c_valid_context_extraz$CWhitebox.test_c_valid_context_extra4sX���)�����!�!�������1�%�%�%���������1�%�%�%�%�%r"c	�<�tj}tj}tj}tj}tj}tjdkrdnd}|��5}d|j|<|�||d��j	|dz
��|�||d��j	|��|�||d��j	t|dz����|�tj|d��j	t|dz
����|�t|d��j	|dz
��|�t|d��j	|dz��ddd��dS#1swxYwYdS)	Nr�r�r�TrZrr�r)r�r�r�r�r�rrrVr.rjrrr�)r�r�r�r�r�rrrur�s        r �test_c_roundzCWhitebox.test_c_round=s����)���-���~���:���K�	��Z�)�3�3�'�'���
�\�^�^�
	)�q�(,�A�G�$�%����.������0I�&�h�q�j�
*�
*�
*����.������0I�%�
'�
'�
'����.������0F�!�(�1�*�o�o�
/�
/�
/����a�0�'�'�#�,�,�2H�"�9�Q�;�/�/�/�
1�
1�
1����m�W�W�V�_�_�-F�&�h�q�j�
*�
*�
*����m�W�W�V�_�_�-F�%�a�i�
)�
)�
)�
	)�
	)�
	)�
	)�
	)�
	)�
	)�
	)�
	)�
	)�
	)�
	)����
	)�
	)�
	)�
	)�
	)�
	)s�D)F�F�Fc��tj}tjdk}|�t|d��jdgd��|�t|d��jdd��|�t|d��jg��|�t|d��jd��|rdnd}|�t|d��jd	|z��dS)
Nr�rz=10.10r+z<>=10.10r�r�rvz=%d.1)r�r�rVrjr3r�r)r�r�rt�maxsizes    r �
test_c_formatzCWhitebox.test_c_formatUs����)���*�y�0�����)�W�W�Q�Z�Z�%:�H�b�!�L�L�L����)�W�W�Q�Z�Z�%:�H�a�H�H�H����)�W�W�Q�Z�Z�%:�B�?�?�?����*�g�g�a�j�j�&;�Z�H�H�H�+�8�'�'������*�g�g�l�&;�&;�&F�!�G�+�	-�	-�	-�	-�	-r"c�b�tj}tj}tj}|d��}|�|���d��|�t|jd��|�t|jdd��|�t|jd��|�|���d��|�t|jd��|�t|jdd��|�t|jd��|�|�	��d��|�t|j	d��|�t|j	dd��|�t|j	d��|��5}|d���t��}|�||d����|d���	t��}|�||d����d|j|<|�||d��j	t��ddd��dS#1swxYwYdS)Nr�r-rz99999999999999999999999999.9�100000000000000000000000000Tz999.9)r�r�r�r�rArrjr3r�r�r�r.)r�r�r�r�rr�s      r �test_c_integralzCWhitebox.test_c_integralcs����)���)���~���G�B�K�K����������"�-�-�-����)�Q�]�D�9�9�9����)�Q�]�B��<�<�<����)�Q�]�B�7�7�7�����,�,�.�.��3�3�3����)�Q�%8�$�?�?�?����)�Q�%8�"�c�B�B�B����)�Q�%8�"�=�=�=�����,�,�.�.��3�3�3����)�Q�%8�$�?�?�?����)�Q�%8�"�c�B�B�B����)�Q�%8�"�=�=�=�
�\�^�^�	U�q���6�7�7�I�I�(�S�S�A����Q���(E� F� F�G�G�G���6�7�7�I�I�(�S�S�A����Q���(E� F� F�G�G�G�#�A�G�G�����g�w�w�w�'7�'7�'I�8�T�T�T�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U����	U�	U�	U�	U�	U�	Us�B9J$�$J(�+J(c
��tj}tj}tj}tj}tj}|�|d�����d��|�tt|d��dd��|�t|d��jdd��|�t|d��jd	dd��|�t|d
��j
|d��g��|�t|d
��j
|d��|����|�t|d
��j
|d��d��|�t|d
��j
|d��td
��|��5}|���|�t|j|d��dd��|�t|jd��|�t|jd��|�t|jdddd��|�t|jdd	dd��|�t)|�|d������d��|�|���d��d|j|<|�||d��jd��|�||jdd��|�|j|��|���d|j|<|�||d��jd��|�||jdd��|�|j|��d|j|<d|_|�|t|d
��dd��ddd��dS#1swxYwYdS)Nz9.99e10z99.9E+9rrrKr+rr�r�rvz	1e-100000r�r�r�r��200Tri�)r�r�r�r�r�r�rAr�rjr3r�rhr�r	r�r�rvrqr|r.r<rpr.rr$rSr0r,)r�r�r�r�r�r�r�s       r �test_c_funcszCWhitebox.test_c_funcs�sC���)���-���)���\�
��~��������+�+�9�9�;�;�Y�G�G�G����)�S�'�'�!�*�*�a��=�=�=����)�W�W�Q�Z�Z�%<�c�3�G�G�G����)�W�W�Q�Z�Z�%<�a��c�J�J�J������G�L�!�!�*�G�G�K�,@�,@�"�	
�	
�	
�	
�����G�L�!�!�*�G�G�K�,@�,@�*�*�,�,�	
�	
�	
�	
�����G�L�!�!�*�G�G�K�,@�,@�"�	
�	
�	
�	
�����G�L�!�!�*�G�G�K�,@�,@�(�D�	
�	
�	
�
�\�^�^�	L�q�
�M�M�O�O�O�
���i���g�g�a�j�j�#�s�K�K�K����i���c�:�:�:����i����=�=�=����i���1�a��c�B�B�B����i����A�s�C�H�H�H����S����W�W�S�\�\�!:�!:�;�;�U�C�C�C����Q�W�W�Y�Y��+�+�+�&*�A�G�N�#����n�g�g�a�j�j�.C�Q�G�G�G����n�a�h��1�=�=�=��O�O�A�G�$4�5�6�6�6�
�M�M�O�O�O�(,�A�G�$�%����.����
�
�0E�q�I�I�I����.���!�Q�?�?�?��O�O�A�G�N�3�4�4�4�(,�A�G�$�%��A�F����.��W�W�T�]�]�A�s�K�K�K�5	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls�IP<�<Q�Qc�P�tj}tj}|d��}dD]M}t||��}|�t
|d���|�t
|dd����NdD]M}t||��}|�t
|d���|�t
|dd����N|�t
|jdg���|�t
|jig���|�t
|jgg��|�t
|jdg���|�t
|jig���|�t
|jgg��|�t
|jdg���|�t
|jig���|�t
|jgg��|�t
|j	ddd���|�t
|j	dddd���|�t
|j
dgd���|�t
|j
dgd�	��|�t
|j
dgg��|��}|�t
|jddd�
��|�t
|jddd�
��|�t
|jddd�
��dS)N�10001111111)
r[r�r�rrrrzr�r�r�rhr�r�rr�)r%rjrdr�r�r�r�r�r�rrrr�rrrW)�mod)r�r�r/r#rjr3rr�r�rr	r)r�r�r/rr(�funcr�s       r �test_va_args_exceptionsz!CWhitebox.test_va_args_exceptions�s
���)���)���G�M�"�"��K�	B�	B�D��1�d�#�#�D����i��s��;�;�;����i��s�D��A�A�A�A�D�	B�	B�D��1�d�#�#�D����i��s��;�;�;����i��s�D��A�A�A�A����)�Q�]�T�2��N�N�N����)�Q�]�R���L�L�L����)�Q�]�B��;�;�;����)�Q�%8�4�QS��T�T�T����)�Q�%8�2�r��R�R�R����)�Q�%8�"�b�A�A�A����)�Q�%8�4�QS��T�T�T����)�Q�%8�2�r��R�R�R����)�Q�%8�"�b�A�A�A����)�Q�U�A�q�#��>�>�>����)�Q�U�A�q�#�t��D�D�D����)�Q�Z��B���E�E�E����)�Q�Z��B���F�F�F����)�Q�Z��B��;�;�;��G�I�I�����)�Q�W�a����<�<�<����)�Q�W�a��$��?�?�?����)�Q�W�c�1�$��?�?�?�?�?r"c�^�|�tjjtjtjztjztjztjz��|�tj	jtjtjztjz��dSr)
rAr�r�rGrYrLrUrWr:r=r�s r �test_c_context_templatesz"CWhitebox.test_c_context_templates�s������
�N�!�
�%�a�&9�9�!�-�G�
�N�
��<�
(�	
�	
�	
�
	
���
��#�
�%�a�&9�9�!�-�G�	
�	
�	
�	
�	
r"c���tj}tj}tj}tj}tj}tj}tj}tj}tj	}	tj
}
tj}tj}tj
}
tj}�fd�}|���}��||jv��|���|j���D]}d|j|<�
|j���D]}��|���|���|j���D]\}}��|�����|j�|������|j�d��d����|j�dd��d����t8|jjddd����t;|j��t;|j����t=j|j��}t=j|j��}|j� ��}|�!��||_"��|j|��|���|
|_#��|j|��|�!��|j���}d||<||_|||j��|���|j���}d||<||_|||j��|tj|	tj$|
tj%|tj&|tj'|tj(|tj)|tj*|tji	}tj+tj,tj-tj.tj
tj/tj0g}t;tbt��}te|��D�]}te|��D�]}tfD�]�}tij5tbt|��}tij5tbt|��}tij6dd��}tij6dd	��}tij6d	d��}tij6d	d
��} tij6d	d
��}!tij6d	d
��}"||||||!| to|��to|�����}��|j8|����|j9|����|j:|����|j;|����|j<|!����|j=| ��d	}#|D]
}$|#||$z}#���|j"|#��d	}#|D]
}$|#||$z}#���|j#|#���������|D]7}%|%|_"��|j"|z��|||j���8|D]7}%|%|_#��|j#|z��|||j���8dS)Nc���|D]?}||kr��||���$��||���@dSr)r$r&)r{�signal_dictr-r�s   �r �assertIsExclusivelySetz<CWhitebox.test_c_signal_dict.<locals>.assertIsExclusivelySet
s[���"�
7�
7���&�=�=��O�O�K��$4�5�5�5�5��$�$�[��%5�6�6�6�6�	
7�
7r"Trr�r
rr�i���rrr�)>r�r/r=r�rur�r�r�r�r�r�r�r:rRrYror$r.r�r��valuesr�r&rSrr�rArjr3r�r�	getsizeofr�r0rFrGrErPrVrWrUrLrTrMrNrOrQrSrKr:rxr�r/�sampler�rWr,r-rYr^rrb)&r�r/r=r�rur�r�r�r�r�r�r�r:rRrYr�r�rjr�rr�
IntSignals�IntCond�limr�r�r�rSr.r,rurtrbr��crr�rr\s&`                                     r �test_c_signal_dictzCWhitebox.test_c_signal_dict�si����)���)���-���)���)���:���K�	��K�	��)���)���)���\�
��3��"#�";��	7�	7�	7�	7�	7�
���!�!��	
����A�G�+�,�,�,�	�
�
����������	�	�A��A�G�A�J�J�����!�!�	�	�A��O�O�A�����	�
�
�����G�M�M�O�O�	 �	 �D�A�q����Q������������X�.�.�/�/�/��
�
�a�g�k�k�#�&�&��-�-�-��������S�#�.�.��4�4�4����)�Q�W�[�#�s�C�@�@�@�����Q�W���s�1�7�|�|�4�4�4��M�!�'�"�"���M�!�'�"�"��
�G������	
�
�
�������������(�)�)�)�	�
�
����&�������� 0�1�2�2�2�	
�
�
����
�G�L�L�N�N�� ��.�������~�q�w�7�7�7�	�
�
����
�G�L�L�N�N����)�������y�!�'�2�2�2��1�<�
�1�<�
�1�<�
�Q�^�
�Q�^�
�A�M�
�!�-�
�!�-�
�A�5�

�
��
!�1�#9�1�=�
�
�q�4�a�6F�
�
�
���.��#�$�$���s���	2�	2�A��3�Z�Z�
2�
2��*�2�2�E�"�M�.��*;�Q�?�?�E�"�M�.��*;�Q�?�?�E�!�+�A�u�5�5�D�!�+�F�A�6�6�D�!�+�A�u�5�5�D�"�,�Q��2�2�E�!�+�A�q�1�1�D��)�!�Q�/�/�B���T�E��4�)-�U�$�u�+�+�&*�5�k�k�3�3�3�A��$�$�Q�V�T�2�2�2��$�$�Q�Z��7�7�7��$�$�Q�V�T�2�2�2��$�$�Q�V�T�2�2�2��$�$�Q�Z��6�6�6��$�$�Q�W�e�4�4�4��A�"�+�+���Z��]�*����$�$�Q�X�q�1�1�1��A�"�+�+���Z��]�*����$�$�Q�X�q�1�1�1�1�92�
2�>�	>�	>�D��A�H��O�O�A�H�%<�<�=�=�=�"�"�#3�Q�W�=�=�=�=��	>�	>�D��A�H��O�O�A�H�%<�<�=�=�=�"�"�#3�Q�W�=�=�=�=�	>�	>r"c���tj�	ddlm}n%#t$r|�d��YnwxYwd�}d�fd�	}d|gd���dd	�}d
|gd���dd	�}d|gd���d
d	�}|dkr|�t|d|d��|�t|d|d��|�t|d|d��dS)Nrr�r�c�@�d�d�|D����S)Nr�c�,�g|]}t|����Srr�rs  r r(zJCWhitebox.test_invalid_override.<locals>.make_grouping.<locals>.<listcomp>�r�r")r�)r�s r r�z6CWhitebox.test_invalid_override.<locals>.make_grouping�s#���7�7�0�0�C�0�0�0�1�1�1r"ryc�B���|���||��Sr)r�)rr�r�r�s   �r r�z0CWhitebox.test_invalid_override.<locals>.get_fmt�s!����7�1�:�:�(�(��h�7�7�7r"rh)�r�rr��xxxxxr�r��yyyyy�r�rQr�)r�r�r�r�r�r�rjr)r�r�r�r��invalid_grouping�invalid_dot�invalid_sepr�s       @r �test_invalid_overridezCWhitebox.test_invalid_override{sc����)��	;�'�'�'�'�'�'�'���	;�	;�	;��M�M�9�:�:�:�:�:�	;����	2�	2�	2�	8�	8�	8�	8�	8�	8�"�&��}�}�}�5�5�!�
�
��&�&��y�y�y�1�1�!�
�
��"�&��y�y�y�1�1�%�
�
���s�?�?����j�'�5�.��
5�
5�
5�	
���*�g�u�k�3�G�G�G����*�g�u�k�3�G�G�G�G�Gs��8�8c���tj}tj}tj}|��5}d|j|<dt
jz}|�|||��dt
jdz
z}|�|||��dt
jz}|�|||��dt
jdz
z}|�|||��ddd��dS#1swxYwYdS)NTz0e%drz1e%d)r�r�r�r�r.rr�rjr�s      r �test_exact_conversionzCWhitebox.test_exact_conversion�s9���)���~���-��
�\�^�^�	<�q�(,�A�G�$�%����$�A����.���;�;�;��3�;�,�q�.�)�A����.���;�;�;����$�A����.���;�;�;��3�;�,�q�.�)�A����.���;�;�;�#	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�B+C'�'C+�.C+c���tj}tj}tj}tj}tj}|��5}d|_d|j|<d|j|<d|j|<ddtj	f}|�
t|�|����d��|�
|||��ddtj	f}|�
||j|��|�
|||��ddtj	dz
f}|�
t|�|����d��|�
|||��ddtj	dz
f}|�
||j|��|�
|||��ddtj	dzf}|�
t|j|��|�
t||��ddtj	dz
f}|�
t|j|��|�
t||��d	}|�
t||����d
��d}|�
t||����d
��d}|�
t||����d
��ddd��dS#1swxYwYdS)Nr+Trrz
-0E+999999)rrrz-0E-1000007rr�r^)rr�r�)rr�r�z-sNaN1)r�r�r�r�r�r�r,r.rr�rAr<r�rjr�)r�r�r�r�r�r�r�rs        r �test_from_tuplezCWhitebox.test_from_tuple�s���)���~���-���:���K�	�
�\�^�^�(	8�q��A�F�(,�A�G�$�%� $�A�G�H��!%�A�G�I���B���$�A����S��!1�!1�!�!4�!4�5�5�|�D�D�D����.���;�;�;��I�s�{�+�A����h��(8�!�<�<�<����.���;�;�;��B����Q��'�A����S��!1�!1�!�!4�!4�5�5�}�E�E�E����.���;�;�;��I���|�A�~�.�A����i��)9�1�=�=�=����.���;�;�;��B���A�
�&�A����m�Q�-=�q�A�A�A����m�W�a�8�8�8��B����Q��'�A����m�Q�-=�q�A�A�A����m�W�a�8�8�8��A����S������_�_�g�6�6�6��A����S������_�_�g�6�6�6� �A����S������_�_�h�7�7�7�Q(	8�(	8�(	8�(	8�(	8�(	8�(	8�(	8�(	8�(	8�(	8�(	8����(	8�(	8�(	8�(	8�(	8�(	8s�JK'�'K+�.K+c��tj}tjdk}|�|d�����d��|r[|ddz�����}|ddz�����}|�||dz��dS|ddz�����}|ddz�����}|�||d	z��dS)
Nr�rr�r�i�r�����r�)r�r�rVrQ�
__sizeof__rA)r�r�rtrr�s     r �test_sizeofzCWhitebox.test_sizeof�s���)���*�y�0�����7�7�1�:�:�0�0�2�2�A�6�6�6��	%����U��$�$�/�/�1�1�A����U��$�$�/�/�1�1�A����Q��!��$�$�$�$�$����T�
�#�#�.�.�0�0�A����T�
�#�#�.�.�0�0�A����Q��!��$�$�$�$�$r"c�V��tj}Gd�dt��}Gd�dt��}Gd�dt���G�fd�dt��}|||fD]G}|�|�|d	����|�d	�����HdS)
Nc��eZdZd�Zd�ZdS)�<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Xc��dS�Nrrr�s r r�zMCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.as_integer_ratio�s���qr"c��|Srrr�s r r'zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.__abs__�����r"N�r�r`rar�r'rr"r �Xr��s2������
�
�
�
�
�
�
�
r"r�c��eZdZd�ZdS)�<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Yc��dgdzS�Nrr�rr�s r r'zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Y.__abs__�
���s�3�w�r"N)r�r`rar'rr"r �Yr��#������
�
�
�
�
r"r�c��eZdZd�ZdS)�<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Ic��dgdzSr�rr�s r �
bit_lengthzGCWhitebox.test_internal_use_of_overridden_methods.<locals>.I.bit_lengthr�r"N)r�r`rar�rr"r �Ir�r�r"r�c� ��eZdZ�fd�Zd�ZdS)�<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Zc�0���d���d��fSr�r)r�r�s �r r�zMCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.as_integer_ratio
s�����!���a�a��d�d�|�#r"c��|Srrr�s r r'zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.__abs__r�r"Nr�)r�s�r �Zr�	s=�������
$�
$�
$�
$�
$�
�
�
�
�
r"r�gfffffFY@)r�r�r�rrAr�)r�r�r�r�r�r&r�s      @r �'test_internal_use_of_overridden_methodsz1CWhitebox.test_internal_use_of_overridden_methods�s#����)��	�	�	�	�	��	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	�	�	��	�	�	��a��7�	8�	8�C����W�/�/���E�
�
�;�;�$�/�/��6�6�
8�
8�
8�
8�	8�	8r"�aixzEAIX: default ulimit: test is flaky because of extreme over-allocationzTest is unstable on EmscriptenT)�address�memoryzVASAN/MSAN sanitizer defaults to crashing instead of returning NULL for malloc failure.c�V�gd�}tj}tj}tj}|tjtjtj���}||��5|�|d�����d��|�|d���	��d��|�|d���
��d��|�|d���
��d��|�|ddz���
��d��|�|d	�����d
��|�|d�����d��|�|d�����|d
����|�t|d��d��d��|�|d��dzd��|�|d��dzd��|�|d��dz|d����ddd��dS#1swxYwYdS)N)	rzr�r�rdr�r�r�rr)r,rYr^rrr�rr���l�9V�r��40E9z2.0E+5r�)r�ri�ruz0.0025)r�r�r/r�rVrqr�rAr[rrrr�r.)r��MaxContextSkipr�r/r��
maxcontexts      r �test_maxcontext_exact_arithz%CWhitebox.test_maxcontext_exact_ariths���$<�<�<���)���)���~���W�!�*�1�:�A�J�O�O�O�
�
�\�*�
%�
%�	D�	D����W�W�Q�Z�Z�^�^�-�-�q�1�1�1����W�W�Q�Z�Z�]�]�_�_�a�0�0�0����W�W�Q�Z�Z�-�-�/�/��3�3�3����W�W�U�^�^�1�1�3�3�Q�7�7�7����W�W�R��W�-�-�3�3�5�5�s�;�;�;����W�W�V�_�_�1�1�3�3�R�8�8�8����W�W�Q�Z�Z�_�_�.�.��2�2�2����W�W�V�_�_�1�1�3�3�W�W�X�5F�5F�G�G�G����V�G�G�B�K�K��3�3�V�<�<�<����W�W�R�[�[�A�-�q�1�1�1����W�W�Q�Z�Z�!�^�Q�/�/�/����W�W�S�\�\�R�/����1B�1B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds� H1J�J"�%J"c���tt���j��}|��}d}|�t
|��5t
|��ddd��n#1swxYwY|�t
|��5t|��ddd��n#1swxYwY|�t
|��5t|��ddd��n#1swxYwY|�t
|��5d|tj	<ddd��n#1swxYwY|�t
|��5|tj	ddd��n#1swxYwY|�t
|��5|t���jkddd��n#1swxYwY|�t
|��5t���j|kddd��n#1swxYwY|�t
|��5|�
��ddd��dS#1swxYwYdS)Nzinvalid signal dictT)r;r�r/rS�assertRaisesRegexrr��iterr@r�ro)r��
SignalDict�sd�err_msgs    r �test_c_signaldict_segfaultz$CWhitebox.test_c_signaldict_segfault@s���!�)�)�+�+�+�,�,�
�
�Z�\�\��'��
�
#�
#�J��
8�
8�	�	���G�G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
#�
#�J��
8�
8�	�	���H�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
#�
#�J��
8�
8�	�	���H�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
#�
#�J��
8�
8�	*�	*�%)�B�q�!�"�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*��
#�
#�J��
8�
8�	#�	#��q�!�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#��
#�
#�J��
8�
8�	$�	$��!�)�)�+�+�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$��
#�
#�J��
8�
8�	$�	$�
�I�I�K�K���#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$��
#�
#�J��
8�
8�	�	��G�G�I�I�I�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s��A/�/A3�6A3�B1�1B5�8B5�C3�3C7�:C7�D5�5D9�<D9�E:�:E>�E>� #G�G�G�5#H$�$H(�+H(�
I,�,I0�3I0c�2�t�d��}|�t|d��d��t�d���5|�t|d��d��ddd��dS#1swxYwYdS)Nz6.09e+23r>z6.09E+23rrB)r�r�rAr�r�)r�rs  r �test_format_fallback_capitalsz'CWhitebox.test_format_fallback_capitals^s���
�I�I�j�!�!�������3����4�4�4�
�^�^�Q�^�
'�
'�	9�	9����V�A�s�^�^�Z�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s�%B�B�Bc�F�t�d��}|�t|d��d��t�tj���5|�t|d��d��ddd��dS#1swxYwYdS)Nz6.09z#.1fz6.1rWz6.0)r�r�rAr�r�r�)r�r�s  r �test_format_fallback_roundingz'CWhitebox.test_format_fallback_roundingfs���
�I�I�f���������6�*�*�E�2�2�2�
�^�^�Q�\�^�
2�
2�	7�	7����V�A�v�.�.��6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�$%B�B�BN)%r�r`rardrfrirkrxrzr^r}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��skipIfrrrr	rrr
r�r�r�r�rr"r r`r`3sv������'�'�'�'�":�:�:�	7�	7�	7����:c"�c"�c"�J	2�	2�	2�"�(@�(@�"�!�(@�T$1�$1�$1�L"�&�&�"�!�&�)�)�)�0-�-�-�U�U�U�>9L�9L�9L�v*@�*@�*@�X"�	
�	
�"�!�	
�"�C>�C>�"�!�C>�J#H�#H�#H�J<�<�<�0/8�/8�/8�b%�%�%�8�8�8�:�X�_�S�\�,�,�U�3�3�\�^�^��X�_�]�$D�E�E��X�_�_�_�T�$�?�?�?�E�F�F�
� D� D��]�F�F�F�E�^�^� D�F���<9�9�9�7�7�7�7�7r"r`c��eZdZ	d�Zd�ZdS)�
SignatureTestc���tt��D�]V}|�d��r�tt|��}tt|��}|dks|dkstj|��r�tj|��}tj|��}t|j	�
����}d�|j	�
��D��}|�||d|z���d�|j	���D��}d�|j	�
��D��}	|d	kr|�||	d
|z�����XdS)NrMr�r/c�<�g|]}|�d���|��S)rMr�rs  r r(z5SignatureTest.test_inspect_module.<locals>.<listcomp>s8��.�.�.���<�<��,�,�.�1�.�.�.r"�parameter name mismatch in %s��msgc��g|]	}|j��
Sr��kindrs  r r(z5SignatureTest.test_inspect_module.<locals>.<listcomp>�s��D�D�D�Q�!�&�D�D�Dr"c�^�g|]*}|d�d���|dj��+S)rrMr)r	r�rs  r r(z5SignatureTest.test_inspect_module.<locals>.<listcomp>�sB��0�0�0���A�$�/�/�#�.�.�0�!�A�$�)�0�0�0r"r4�parameter kind mismatch in %s)r�r�r	r#r��inspect�
isfunction�	signaturerW�
parametersr�rAr�r�)
r�r(�p_func�c_func�p_sig�c_sig�c_names�p_names�c_kind�p_kinds
          r �test_inspect_modulez!SignatureTest.test_inspect_modulers�����F�F�	S�	S�D����s�#�#�
���Q��%�%�F��Q��%�%�F��	�!�!�T�Y�%6�%6��"�6�*�*�&7��)�&�1�1���)�&�1�1���u�/�4�4�6�6�7�7��.�.�e�&6�&;�&;�&=�&=�.�.�.��� � ��'�%D�v�%M�!�O�O�O�E�D�%�*:�*A�*A�*C�*C�D�D�D��0�0�U�-=�-C�-C�-E�-E�0�0�0���<�'�'��$�$�V�V�)H�6�)Q�%�S�S�S��1	S�	Sr"c��������tjj�tjj�tt�d��t�d��t�d��t�d��t�d��t�d��t�d��t�d��t�d��t�d��ddtjt���d�tt�d��t�d��t�d��t�d��t�d��t�d��t�d��ddtjt���d�i����fd��d�������fd�}|d	��|d
��dS)Nrr�r�)rrkrr�r
r�r]r�r[r�numr�r-r')rrkr�r]r�r[rrr�r-r'c���g}i}|j���D]d\}}|dkr�|j�kr"|��||���9|j�kr�||||<�Vt	d���||fS)Nr�zunexpected parameter kind)r�r�r�r9r)	�moduler-r�kwargs�name�param�POS�POS_KWD�pdicts	      ���r �mkargsz0SignatureTest.test_inspect_types.<locals>.mkargs�s�����D��F�"�~�3�3�5�5�
B�
B���e��6�>�>�8��:��$�$��K�K��f�
�d� 3�4�4�4�4��Z�7�*�*�#(��=��#6�F�4�L�L�$�%@�A�A�A���<�r"c�8�	|dkrdS|dkrdS|dkrdS|S)Nrr�r�r]r
r�r)rs r �trz,SignatureTest.test_inspect_types.<locals>.tr�s3��
<��C�x�x����C�x�x����C�x�x����Hr"c
�n��tt|��}tt|��}t|��D�]x}|�d��r�t||��}t||��}tj|���r*tj|��}tj|��}t|j	�
����}�fd�|j	�
��D��}	��|	|d|z���d�|j	���D��}
d�|j	���D��}��
|
d�����
|d���|dkr,��|d	d�|
d	d�d
|z���n5��t|��t|
��d
|z����t|��\}}
	t|d��|��|i|
��n&#t$rt!d|�d
|�d|
�����wxYw�t|��\}}
	t|d��|��|i|
����R#t$rt!d|�d
|�d|
�����wxYw��zdS)NrMc�&��g|]
}�|����Srr)rrr
s  �r r(zBSignatureTest.test_inspect_types.<locals>.doit.<locals>.<listcomp>�s!���F�F�F��r�r�!�u�u�F�F�Fr"r�r�c��g|]	}|j��
Srr�rs  r r(zBSignatureTest.test_inspect_types.<locals>.doit.<locals>.<listcomp>����H�H�H��a�f�H�H�Hr"c��g|]	}|j��
Srr�rs  r r(zBSignatureTest.test_inspect_types.<locals>.doit.<locals>.<listcomp>�rr"rr�rr�r+zinvalid signature for z: r)r#r�r�r�r	r�r�r�rWr�r�rAr�r�r�r�r)�ty�p_type�c_typer(r�r�r�r�r�r�r�r�r�kwdsrr	rr�r
s              �����r r�z.SignatureTest.test_inspect_types.<locals>.doit�s:����Q��^�^�F��Q��^�^�F��F���*
c�*
c���?�?�3�'�'��� ���.�.�� ���.�.���%�f�-�-�%c�#�-�f�5�5�E�#�-�f�5�5�E�#�5�#3�#8�#8�#:�#:�;�;�G�F�F�F�F�e�.>�.C�.C�.E�.E�F�F�F�G��$�$�W�g�)H�6�)Q�%�S�S�S�I�H�e�.>�.E�.E�.G�.G�H�H�H�F�H�H�e�.>�.E�.E�.G�.G�H�H�H�F��M�M�&��)�W�5�5�5��M�M�&��)�S�1�1�1��Y����(�(������V�A�B�B�Z�-L�v�-U�)�W�W�W�W��(�(��V���c�&�k�k�-L�v�-U�)�W�W�W�"(���5�!1�!1�J�D�$�c�0����q�	�	�4�0�0�$�?�$�?�?�?�?��$�c�c�c�(�j�f�f�f�VZ�VZ�VZ�\`�\`�)a�b�b�b�c����"(���5�!1�!1�J�D�$�c�0����q�	�	�4�0�0�$�?�$�?�?�?�?��$�c�c�c�(�j�f�f�f�VZ�VZ�VZ�\`�\`�)a�b�b�b�c����I%c�*
c�*
cs�H1�1#I�,J
�
#J0r�r/)	r��_ParameterKind�POSITIONAL_ONLY�POSITIONAL_OR_KEYWORDr�r�r�r�r�)r�r�rr	rr
r
s` @@@@@r �test_inspect_typesz SignatureTest.test_inspect_types�s����������$�4���(�>���a�i�i��l�l��i�i��l�l��)�)�A�,�,��)�)�A�,�,��)�)�A�,�,��)�)�A�,�,��)�)�A�,�,��)�)�A�,�,��I�I�a�L�L� �y�y��|�|���!"�� !�����
0�
0��a�i�i��l�l��i�i��l�l��)�)�A�,�,��)�)�A�,�,��)�)�A�,�,��I�I�a�L�L� �y�y��|�|���!"�� !�����
0�
0�1��4	 �	 �	 �	 �	 �	 �	 �	�	�	�-	c�-	c�-	c�-	c�-	c�-	c�-	c�-	c�-	c�^	
��Y������Y�����r"N)r�r`rarrrr"r r�r�ms?�������S�S�S�8e�e�e�e�er"r�c	��t�|���}tjt��D]g}d|vs|�d��r�|�d��\}}t�
|tvr�E|fd�}ttd|z|��~~~~�hdtfdtffD]W\}}|s�t|dzttj
fd|i��}	|�|�|	�����Xt�vd	d
lm}
m}ttfD]_}|s�|fd�}d�}
|tur|nd	}|t&jd<|�|
|||
|�
����t*t&jd<�`|S)Nz.decTestr�c�<�|�t|z��Sr)r�	directory)r�r�s  r rzload_tests.<locals>.<lambda>s��$�.�.��Q��*G�*G�r"�test_r��Pyr<rr)�DocTestSuite�IGNORE_EXCEPTION_DETAILc�$�|tjd<dS�Nr)rr3)�slfr�s  r r�zload_tests.<locals>.setUps��),���I�&�&�&r"c�.�ttjd<dSr#)�orig_sys_decimalrr3)r$s r r!zload_tests.<locals>.tearDowns��)9���I�&�&�&r")r�r!�optionflags)�
TODO_TESTS�
suiteClass�os�listdirrr	r
r/r<r�r�r;r��TestCase�addTest�loadTestsFromTestCase�doctestr r!rr3r&)r��tests�pattern�filename�head�tail�tester�prefixr��
test_classr r!r�r!r's               r �
load_testsr8�s������!�!�#�#���J�y�)�)�)�)���X�%�%��)<�)<�S�)A�)A�%���^�^�C�(�(�
��d��!�d�*�&<�&<�� (�G�G�G����g��n�f�5�5�5��d�D�&�&��Q�x�$���*�@�@�����	���&�>�1�'��):�;�$�c�*�,�,�
�	�
�
�f�2�2�:�>�>�?�?�?�?���A�A�A�A�A�A�A�A��a�4�	6�	6�C��
��"�
-�
-�
-�
-�
:�
:�
:�58�A�X�X�1�1�1�K�%(�C�K�	�"��M�M�,�,�s�%�(�/:�<�<�<�
=�
=�
=�%5�C�K�	�"�"��Lr"c��tt��tt��t�tnt	d��adSr#)r7r�r��ARITHrr.rr"r �setUpModuler;s3����G�G�G���G�G�G��)�u�u�/B�9�/M�/M�H�H�Hr"c�N�tr*t�tt��t�tt��tst	jdt��ttj	durtd���dS)Nz*C tests skipped: no module named _decimal.rzGInternal error: unbalanced number of changes to sys.modules['decimal'].)r�r4�ORIGINAL_CONTEXTr��warnings�warn�UserWarningr&rr3rrr"r �tearDownModulerA$s����+�!�,�,�'��*�
+�
+�
+��L�L�!�!�$�%�%�%��#��
�B�!�	#�	#�	#��s�{�9�5�5�5��3�4�4�	4�6�5r"c�b�	|a|a|atjt
|rdnddt
g���dS)NrrF)�	verbosity�exit�argv)r:r(r1r��mainr���arith�verbose�
todo_tests�debugs    r �testrL4sB���
�E��J��E��M�(�7�&9�a�a���X�J�W�W�W�W�W�Wr"z:test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]z--debugz-d�
store_truez2shows the test number and context before each test)�action�helpz--skipz-sz%skip over 90% of the arithmetic tests)rHrIrG)NNNN)�r�r*rr
r>r1ror�r+r��test.supportrrrrrrr	r
rrr
�test.support.import_helperrrrr/r�r?rrr�r�rr&�
cfractionsr3�
pfractionsr�
skipUnless�requires_cdecimalr�r�rSr�r3r�r�r�r�r�r�r�r�rur:r)r�r�r�r�r�r�r0r�r�r=r7�TESTDATADIRr�rEr��__file__�path�dirname�curdir�testdir�sepr�isdirr�r8�hasattr�EXTRA_FUNCTIONALITYr^r��skip_if_extra_functionalityr<rcr,r�r�r�r4r6r8r�r�r�rrr.r6�requires_working_threadingr8rJrLrNrrr(r~r�r�r+r-r/r]r_rar�r�r�r�r�r�r�r�r�r�r�r�r�r	rrrr9r`r�r8r;rAr:r.r(r1rL�optparse�OptionParserr�
add_option�
parse_args�optr�skiprKrr"r �<module>rhsg���"������������������������������������
�
�
�
�I�I�I�I�I�I�I�I�I�I�I�I�I�I�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�;�:�:�:�:�:�)�)�)�)�)�)�(�(�(�(�(�(�
�
�
�
����������<�8�����n�-�-�-���	�*��6�6�6����	�J�<�8�8�8��"�"�"�"�!�
 ��[�M�
B�
B�
B�
����I��
 �
 ��[�M�
B�
B�
B�
����I��
�z�1�Z�(�	�)���I��'�H�'��+D�E�E���1�6�U�U�1�<�<�>�>��$�$�&�&�'�'�'�$��U�U�1�<�<�>�>��$�$�&�&�'�'�����'�a�i���A�I�q�{�A�K��j�!�"�A�$6�����"&��a�i���A�I�q�{�A�K��j�!�"�A�$6����	��H�H�H�
�:��
�\�
���
��m����
��#���#��
�\�
��J�
�{���/���
��a�)�Q�\�\�^�^������T��Q�\�\�^�^�������%�%�%� ���z����8�A�;�D�D��D�
�'�/�/�$�
�
�
,�2�9���b�f��{�*�R�V�3�	��G�M�M�)�,�,�,�
���&�g�a��6�6�A�d�d�E��2�x�2��G� I� I��-�h�o��4�6�6��a#�a#�a#�a#�a#�a#�a#�a#�LU<�U<�U<�U<�U<�U<�U<�U<�n
������ 8�(�:K�����������!9�8�;L����K1�K1�K1�K1�K1�K1�K1�K1�Z������ 8�(�:K�����������!9�8�;L����V9�V9�V9�V9�V9�V9�V9�V9�p
������*�h�/�����������:�x�0����hA�hA�hA�hA�hA�hA�hA�hA�T	������6��8I����������� 7��9J����
%'�%'�%'�N*0�*0�*0�Z-��,�.�.�*(�*(�*(�*(�*(�*(�*(�/�.�*(�Z������]�H�$5�����������m�X�%6����nE�nE�nE�nE�nE�nE�nE�nE�`������]�H�$5������
�
�
�
�
�m�X�%6�
�
�
�[N�[N�[N�[N�[N�[N�[N�[N�z
������n�h�&7�����������~�x�'8����hC�hC�hC�hC�hC�hC�hC�hC�T��������(9�������������):����b�b�b�b�b�b�b�b�H������0�(�2C�����������1�8�3D����I0�I0�I0�I0�I0�I0�I0�I0�V������L�(�"3�����������\�8�#4����N�N�N�N�N�N�N�N�`��������(9�������������):����<;�<;�<;�<;�<;�<;�<;�<;�|������4�h�6G�����������5�x�7H����k.�k.�k.�k.�k.�k.�k.�k.�Z������,�h�.?�����������-�x�/@������1�1�1�1�1�h�'�1�1�����1�: � � � � � � � �B�������(�+������
�
�
�
�
��8�,�
�
�
�>�>�>�>�>�h�'�>�>�>�0BM�BM�BM�BM�BM��"�BM�BM�BM�HSC�SC�SC�SC�SC�X�&�SC�SC�SC�j�v7�v7�v7�v7�v7��!�v7�v7���v7�r��D�D�D�D�D�H�%�D�D�����D�N&�&�&�PN�N�N�4�4�4�	
����
�
�
��X�X�X�X��z����O�O�O����Z�[�[�A��L�L��D��<p�L�q�q�q��L�L��D��<c�L�d�d�d��,�,�.�.�K�S�$�
�x�'���5�$�'�'�'�'�'�'�	
�'���4��$�c�i�H�H�H�H�H�H���4��&�&�&�&�&�&��r"

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists