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

�Ke$W��*�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZmZmZmZddlmZmZmZmZmZddlmZddlmZddlmZddlZddlZddlZejdkred	��ed
dg���Z ed
dg�
��Z!ddl"Z#eddg���Z$e!ej%d
<eddg���Z&e ej%d
<e e$e!e&iZ'e#ej%d
<e e r4e(e �)��j*�+����nde!e(e!�)��j*�+����iZ,e e r8e j-e j.e j/e j0e j1e j2e j3e j4e j5g	nde!e!j-e!j.e!j/e!j0e!j1e!j2e!j3e!j4e!j5g	iZ6d�Z7e!j8Z8e!j9Z9e!j:Z:e!j;Z;e!j<Z<e!j=Z=e!j>Z>e!j?Z?e8e9e:e;e<e=e>e?gZ@e e r&e �)�����nde!e!�)�����iZAd�ZBdZCeDdkrejEdZFneGZFejH�IeF��pejJZKeKejLzeCzejLzZMejH�NeM��aOdZPeQe d��rdndZRejSeRd��ZTejUeRd��ZVGd�dejW��ZXGd�deX��ZYGd�deX��ZZGd�dejW��Z[Gd �d!e[��Z\Gd"�d#e[��Z]Gd$�d%ejW��Z^Gd&�d'e^��Z_Gd(�d)e^��Z`Gd*�d+ejW��ZaGd,�d-ea��ZbGd.�d/ea��ZcGd0�d1ejW��ZdGd2�d3ed��ZeGd4�d5ed��Zfd6�Zgd7�Zheji��Gd8�d9ejW����ZjGd:�d;ej��ZkGd<�d=ej��ZlGd>�d?ejW��ZmGd@�dAem��ZnGdB�dCem��ZoGdD�dEejW��ZpGdF�dGep��ZqGdH�dIep��ZrGdJ�dKejW��ZsGdL�dMes��ZtGdN�dOes��ZuGdP�dQejW��ZvGdR�dSev��ZwGdT�dUev��ZxGdV�dWejW��ZyGdX�dYey��ZzGdZ�d[ey��Z{Gd\�d]ejW��Z|Gd^�d_e|��Z}Gd`�dae|��Z~Gdb�dcejW��ZGdd�dee��Z�Gdf�dge��Z�Gdh�diejW��Z�Gdj�dke���Z�Gdl�dme���Z�eVGdn�doejW����Z�Gdp�dqejW��Z�Gdr�dse���Z�Gdt�due���Z�Gdv�dwejW��Z�Gdx�dyejW��Z�Gdz�d{ejW��Z�Gd|�d}ejW��Z�eejSe d~��Gd�d�ejW������Z�ge\�e]�e_�e`�eb�ec�ee�ef�ek�el�en�eo�eq�er�et�eu�ew�ex�ez�e{�e}�e~�e��e��e��e��e��e��e��e��e��e��eY�eZ�Z�e se�d�dd��Z�n,e���de���e���d�e���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)�ag
These are the test cases for the Decimal module.

There are two groups of tests, Arithmetic and Behaviour. The former test
the Decimal arithmetic using the tests provided by Mike Cowlishaw. The latter
test the pythonic behaviour according to PEP 327.

Cowlishaw's tests can be downloaded from:

   http://speleotrove.com/decimal/dectest.zip

This test module can be called from command line with one parameter (Arithmetic
or Behaviour) to test each part, or without parameter to test both parts. If
you're working through IDLE, you can import this test module and call test_main()
with the corresponding argument.
�N)�run_unittest�run_doctest�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)�import_fresh_module)�threading_helper)�warnings_helper�darwin�test_decimal�decimal�_decimal)�fresh)�blocked�	fractionsc����t||���|�t��fd��D������dS)Nc3�B�K�|]}|�vr�|n�|V��dS�N�)�.0�s�d�expecteds  ���;/usr/local/apps/python3/lib/python3.11/test/test_decimal.py�	<genexpr>z!assert_signals.<locals>.<genexpr>Ts9�����F�F�q�q�H�}�}�q��t�t�a��d�(�F�F�F�F�F�F�)�getattr�
assertTrue�all)�cls�context�attrr rs   `@r!�assert_signalsr*RsK���������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!�initr8ksY����f�f����
��t�}�}�W�Q�Z��/K�/K�#�����L�L�#�$�$�$�$�$r#�decimaltestdata�__main__F�
DecClampedTz.test requires build with -DEXTRA_FUNCTIONALITYztest requires regular buildc�Z�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�ZdS)�IBMTestCasesz?Class which tests the Decimal class against the IBM test cases.c
�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}rr�r�r�r�r�r�r�r�r�)#rr0r(�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_DOWNr1�
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�H�|jtkrx|jjdkrh|j�d��|j�d��|j�d��|j�|��S|j�||��S)a2Work around the limitations of the 32-bit _decimal version. The
           guaranteed maximum values for prec, Emax etc. are 425000000,
           but higher values usually work, except for rare corner cases.
           In particular, all of the IBM tests pass with maximum values
           of 1070000000.�@�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_line5s���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>Hs4����@�@�a����	�	���)�)�@�@�@�@�@�@r#rr.c��dSrr)�argss r!�<lambda>z-IBMTestCases.eval_directive.<locals>.<lambda>Qs��$�r#)rr��int�
ValueErrorr��get)r�r�funct�values    r!r
zIBMTestCases.eval_directiveGs���@�@�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>.FixQuoteshsp���+�+�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>xs(���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_flagsrr�DEBUG�printr�	TypeError�AttributeError�
IndexErrorrr�r�r�rr$r4r/�	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!rzIBMTestCases.eval_equationTs[�����	�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#)r4rr�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_dSrV)rr�rWr(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_dSrV)rr�rWr(r��Emaxr[s  r!r�z IBMTestCases.change_max_exponent�r]r#c��||j_dSr)r(rc)r�rcs  r!r�zIBMTestCases.change_clamp�s��"�����r#N)r��
__module__�__qualname__�__doc__r�r�rr�r
rr?r�r�r�r�r�rr#r!r=r=�s�������I�I�K1�K1�K1�Z4�4�4�e�e�e�)�)�)�$���~N�~N�~N�@K�K�K�%�%�%�
)�)�)�$�$�$�
$�$�$�
#�#�#�#�#r#r=c��eZdZeZdS)�
CIBMTestCasesN�r�rarbr�rrr#r!rere���������G�G�Gr#rec��eZdZeZdS)�PyIBMTestCasesN�r�rarb�Prrr#r!riri�rgr#ric��eZdZdZd�Zd�Zd�Zd�Zee	e
je���d�������Z
d�Zd	�Zd
�Zd�Zed���Zd
�Zd�Zd�ZdS)�ExplicitConstructionTestz6Unit tests for Explicit Construction cases of Decimal.c�l�|jj}|�|��|d����dS)N�0�rr�rB�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��assertRaisesr4rqs  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�����-45rro� ����r����r)rr�rBr=�range)r�r�r�n�signrrMs       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��NaNrx�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��localcontextrBr=r/rtr4)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�r0�unicode_legacy_stringrBr=r�)r�r�r�r(rs     r!�test_from_legacy_stringsz1ExplicitConstructionTest.test_from_legacy_stringsPs���	�����,�&���,�&�&�(�(���+�+�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�rrro�r)�r�rr|�r�r�r��r����r��r�	r�r�r�r,rr�r�r�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�rBr=rtr�r�r�rs   r!�test_explicit_from_tuplesz2ExplicitConstructionTest.test_explicit_from_tuples\s7���,�&��
�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)Nrrorr�r�r�r��rr�rBr=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�boolrBrqs  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)	Nrwrxryrzr{r|rror��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�rBr<r=r%�floatr�r�r�r0�expovariate)r�r��rrMrs     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�ro��in�z457E+2�456789z4.57E+5z3.14
r�r�r�z	-4.35E-17ryrzz5.00E+8�T)	l����l����l����i�r��l��������z0E-017z0E-17rx�-Infr��NaN123r�)rr�r�r��5678z 1234�12_34�NaN12345F)rr�r�r�rp�
getcontextr-rBr=r�rtr4�assertIsInstancer/r%�
isinstancerrrT)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�r0r�rBr<r=r%r�r�r�r-r�r0r�)r�r�r�r�rMrs      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��itemsrBr=)r�r��test_values�inputr s     r!�test_unicode_digitsz,ExplicitConstructionTest.test_unicode_digits>sw���,�&���8C�-7����
 +�0�0�2�2�	<�	<�O�E�8����S������0�0�(�;�;�;�;�	<�	<r#N)r�rarbrcrrrur�r�rrr�ignore_warnings�DeprecationWarningr�r�r�r�r�rr�r�r�r�rr#r!rmrm�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#rmc��eZdZeZdS)�CExplicitConstructionTestNrfrr#r!r�r�Irgr#r�c��eZdZeZdS)�PyExplicitConstructionTestNrjrr#r!r�r�Krgr#r�c�6�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�ImplicitConstructionTestz6Unit tests for Implicit Construction cases of Decimal.c�z�|jj}|�ttdt����dS)NzDecimal(5) + None�rr�rtr4r>�localsrqs  r!�test_implicit_from_Nonez0ImplicitConstructionTest.test_implicit_from_NoneQs1���,�&�����)�T�+>����I�I�I�I�Ir#c���|jj}|�t|d��dz��d��|�|d��dz|d����dS)Nr�rw�50l2}rr�rqs  r!�test_implicit_from_intz/ImplicitConstructionTest.test_implicit_from_intUsk���,�&��	
����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�rqs  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�rqs  r!�test_implicit_from_floatz1ImplicitConstructionTest.test_implicit_from_floatar�r#c��|jj}|�|d��|d��z|d����dS)Nr�rw�2rprqs  r!�test_implicit_from_Decimalz3ImplicitConstructionTest.test_implicit_from_DecimalesE���,�&����������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__ns�� �3�u�:�:�-�-r#c�&�t|��dzS)Nz rdivmodrrs  r!�__rdivmod__z8ImplicitConstructionTest.test_rop.<locals>.E.__rdivmod__ps���5�z�z�J�.�.r#c�&�dt|��zS)Nzlt rrs  r!�__lt__z3ImplicitConstructionTest.test_rop.<locals>.E.__lt__r����s�5�z�z�)�)r#c�&�dt|��zS)Nzgt rrs  r!�__gt__z3ImplicitConstructionTest.test_rop.<locals>.E.__gt__trr#c�&�dt|��zS)Nzle rrs  r!�__le__z3ImplicitConstructionTest.test_rop.<locals>.E.__le__vrr#c�&�dt|��zS)Nzge rrs  r!�__ge__z3ImplicitConstructionTest.test_rop.<locals>.E.__ge__xrr#c�&�dt|��zS)Nzeq rrs  r!�__eq__z3ImplicitConstructionTest.test_rop.<locals>.E.__eq__zrr#c�&�dt|��zS)Nzne rrs  r!�__ne__z3ImplicitConstructionTest.test_rop.<locals>.E.__ne__|rr#N)r�rarbr	rr
rrrrrrr#r!�Erms�������
.�
.�
.�
/�
/�
/�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*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�rB�divmodr>�setattr)r�r�r�oplist�symr/r1s     @@r!�test_ropz!ImplicitConstructionTest.test_ropis,�����,�&��	*�	*�	*�	*�	*�	*�	*�	*�$	
��������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�rarbrcr�r�r�r�rr7rr#r!r�r�Ns�������@�@�J�J�J�K�K�K�I�I�I�I�I�I�@�@�@�01�01�01�01�01r#r�c��eZdZeZdS)�CImplicitConstructionTestNrfrr#r!r9r9�rgr#r9c��eZdZeZdS)�PyImplicitConstructionTestNrjrr#r!r;r;�rgr#r;c�Z�eZdZdZd�Zd�Zd�Zd�Zedd��d���Z	d	�Z
d
S)�
FormatTestz#Unit tests for the format function.c���|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+roz0e+0)r+�0E1�0e+1)r+�0.0z0e-1)r+�0.00�0e-2)�.6er?z0.000000e-9)rGroz0.000000e+6)rGr�z9.999999e+0)rGz	9.9999999z1.000000e+1)rGz-1.23e5z-1.230000e+5)rGz
1.23456789e-3z1.234568e-3)r�roro)r�rDrD)r��0E-2rE)r�z0.00E-8z0.0000000000)r�rBro)r�z3.2E1�32)r�z3.2E2�320)r�z3.20E2rJ)r�z3.200E2z320.0)r�z3.2E-6z	0.0000032)�.6fr?�0.000000)rKrBrL)rKrorL)�.0froro)rMrFro)rM�
3.14159265�3)�.1frN�3.1)z.4frN�3.1416)rKrN�3.141593)z.7frN�	3.1415926)z.8frNrN)z.9frNz3.141592650)�groro)rUrDrD)rUrBrC)�GrBz0E+1)rUz0E-5z0.00000)rUz0E-6rL)rUz0E-7z0e-7)rUz-0E2z-0e+2)�.0grNrO)z.0nrNrO)z.1grNrO)z.2grNrQ)z.5grNrR)z.7grNrS)z.8grNrT)z.9grNrN)z.10grNrN)r&rB�0%)r&�0E0rX)r&z0E-1rX)r&rHrX)r&z0E-3z0.0%)r&z0E-4z0.00%)�.3%ro�0.000%)rZ�0E10r[)rZz0E-10r[)rZz2.34z234.000%)rZz1.234567z123.457%)�.0%�1.23z123%)r+r�r�)r��-NaN123r_)z+g�NaN456z+NaN456)z.3e�Infr�)z.16fr�r�)rW�-sNaNrb)r��1.00rc)�6�123�   123)z<6rez123   )z>6rerf)z^6rez 123  )z=+6rez+  123)�#<10r�z
NaN#######)rgz-4.3z
-4.3######)z#<+10�0.0130z
+0.0130###)z#< 10rhz
 0.0130###)z@>10r�z
@-Infinity)z#>5r�r�)z?^5rez?123?)z%^6rez%123%%)z ^6�-45.6z-45.6 )z/=10riz
-/////45.6)z/=+10�45.6z
+/////45.6)z/= 10rjz
 /////45.6)z=10r�z
-Infinity)z^16r�z-Infinity)z>10�1.2345z
1.2345)z<10rkz
1.2345)�,�1234567z	1,234,567)rl�123456�123,456)rl�12345�12,345)rlr�z1,234)rlrere)rl�12rr)rlr�r�)rlroro)rlz-1234567z
-1,234,567)rl�-123456�-123,456)z7,rnro)z8,rn� 123,456)�08,rnz	0,123,456)z+08,rnz+123,456)z 08,rnru)rvrsrt)z+09,rnz
+0,123,456)z07,�1234.56�1,234.56)rvrwrx)z09,rwz	01,234.56)z010,rwz
001,234.56)z011,rw�0,001,234.56)z012,rwry)z08,.1fz1234.5z01,234.5)rl�
1.23456789rz)z,%z
123.456789z12,345.6789%)z,ernz
1.23456e+5)z,Ernz
1.23456E+5)rPr�r�)rPz-.0r�)rP�-.01r�)�z.1f�0.rD)�z6.1fr}z   0.0)r~�-1.z  -1.0)r|�-0.rD)r|�.01rD)r|r{rD)�z.2fr}rE)r�r�rE)r�z.001rE)r�z-.001rE)�z.1er}�0.0e+1)r�r�r�)�z.1Er}�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)r|�
-00000.000001rD)r|�-00000.rD)r|�-.0000000000rD)r�r�rE)r�r�rE)r�r�rE)r|z.09�0.1)r|z-.09z-0.1)� z.0fr�z 0)�+z.0fr�z+0)�-z.0fr�ro)r�r�-1)r�rr�)r�rr�)zz>6.1fr�zzz-0.0)zz>z6.1fr�zzzz0.0)zx>z6.1fr�zxxx0.0)u
🖤>z6.1fr�u🖤🖤🖤0.0)za=-7.0z0.12345zaaaa0.1)z	<^+15.20%r�z<<+Infinity%<<<)z>,%�sNaN1234567zsNaN1234567%)z=10.10%r�z
   NaN123%rs-020)rr�rB�formatrtr4�
__format__)r�r�r��fmtrrPs      r!�test_formattingzFormatTest.test_formatting�s����,�&��G�G�G��P*�	>�	>�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�rE)rr�r�r.rBr�r��r��ctxs  r!�+test_negative_zero_format_directed_roundingz6FormatTest.test_negative_zero_format_directed_roundingts���
�\�
&�
&�
(�
(�	$�C�(�C�L����V�D�L�$8�$8��$B�$B�F�K�K�"�
$�
$�
$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s�A	A0�0A4�7A4c�z�|�tt|j�d��d��dS)Nr^�fz)rtrr�rr�r�s r!�test_negative_zero_bad_formatz(FormatTest.test_negative_zero_bad_formatzs2�����*�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#r�c����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�rrl��
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�90rq�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�Nr�)rr��localer��ImportError�skipTest�decoderB)
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.123r�u100٬000٬000٫123)rr�r��
localeconvr�r�rB)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�rarbr�rr#r!�Ar��s#������
&�
&�
&�
&�
&r#r�g@E@�*)rr��
from_floatrBr�)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�rarbrcr�r�r�r�rr�r�rr#r!r=r=�s�������-�-�PE�PE�PE�d$�$�$�R�R�R�WJ�WJ�WJ�r�_�X�w�'�'�;�;�(�'�;� 9�9�9�9�9r#r=c��eZdZeZdS)�CFormatTestNrfrr#r!r�r��rgr#r�c��eZdZeZdS)�PyFormatTestNrjrr#r!r�r��rgr#r�c�T�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
S)�ArithmeticOperatorsTestz:Unit tests for all arithmetic operators, binary and unary.c��|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.1r�z-6.1�16.1�rr�rBr<�r�r��d1�d2r�s     r!�
test_additionz%ArithmeticOperatorsTest.test_addition�s\���,�&��
�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.3r�z-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�-5rOrAr�z-25z-75r�r�s     r!�test_multiplicationz+ArithmeticOperatorsTest.test_multiplication1sZ���,�&��
�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_divisionMs^���,�&��
�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�ror�r��rr�r�s     r!�test_floor_divisionz+ArithmeticOperatorsTest.test_floor_divisionisZ���,�&��
�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��25rIr��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�r3rBr<)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)Nrwr{)rr�rB�absrqs  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�T�|jj}|jj}|jj}|d��}|d��}|d��}|d��}||f||f||f||f||ff}||f||f||f||f||f||f||ff}	tjtjtjtjf}
tj	tj
f}||	zD]^\}}
|
|zD]S}|||
��}|tj
urdnd}|�||d�||j
||
|�����T�_|��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��sNaNrar�TFz8expected {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/rt)r�r�r�r�r�rrMr��
qnan_pairs�
snan_pairs�	order_ops�equality_opsrr��op�gotr r�s                  r!�test_nan_comparisonsz,ArithmeticOperatorsTest.test_nan_comparisons�sB���,�&���<�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�/����+�	;�	;�D�A�q��,�.�
;�
;���b��A�h�h��#%���#4�#4�4�4�%���
�
�h��*�*0�&� �"�+�q�!�S�+:�+:�;�;�;�;�
;��\�^�^�	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�-C"H�H!�$H!c�$�|jj}|d���|d����}|�|d���d��|��|�t
|d��jd��dS)Nrr��-2)rr�rwrBrtr4r�s   r!�test_copy_signz&ArithmeticOperatorsTest.test_copy_signs����,�&���G�A�J�J� � ������-�-����������-�-�b�1�1�1�5�5�5����)�W�W�Q�Z�Z�%9�4�@�@�@�@�@r#N)r�rarbrcr�r�r�r�r�rrrrrrrr#r!r�r��s�������D�D�.�.�.�8/�/�/�8-�-�-�80�0�0�8+�+�+�80�0�0�8+�+�+�8,�,�,�6>�>�>�5B�5B�5B�nA�A�A�A�Ar#r�c��eZdZeZdS)�CArithmeticOperatorsTestNrfrr#r!r r rgr#r c��eZdZeZdS)�PyArithmeticOperatorsTestNrjrr#r!r"r"rgr#r"c
��|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%rTrt�divide�compare�assertFalserB)r'r�r�r�r�r�r�r�r�r��d3�test1�test2�c2�c3�c1�sigs                 r!�thfunc1r2$s����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%rTrt�multiplyr*r/r(r&r��finish2rB)r'r�r�r�r�r�r�r�r�r�r+r,�thiscontextr-r.r/r1s                 r!�thfunc2r:Ks9���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��eZdZdZd�ZdS)�
ThreadingTestz0Unit tests for thread local contexts in Decimal.c�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_rZ�	threading�Eventr&r%r8�Threadr2r:�startr'r4r*rTr�)r�rA�	save_prec�	save_emax�	save_emin�th1�th2r1s        r!�test_threadingzThreadingTest.test_threadingsr����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�rarbrcrLrr#r!r<r<xs)������:�:�
$(�$(�$(�$(�$(r#r<c��eZdZeZdS)�CThreadingTestNrfrr#r!rNrN�rgr#rNc��eZdZeZdS)�PyThreadingTestNrjrr#r!rPrP�rgr#rPc��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�
UsabilityTestz*Unit tests for Usability cases of Decimal.c��|jj}|d��}|d��}|d��}|�||��|�||��|�||��|�||��|�||��|�||��|�||��|�||��|�|d��|�d|��|�|d��|�|d��|�|d��|�|t����|�|t��tt|td������}|dd�}tj
|��|���|�||��dS)Nz23.42rx�rwr�g�����Y@@r�)rr��
assertGreater�assertGreaterEqual�
assertLess�assertLessEqualrB�assertNotEqual�object�list�mapr�r0�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�rWrXrUrVrYrB�r�r�r^r_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)Nrdrey�?y�?y@y@�?)	rr�rYrBr�r
�NotImplementedrrrhs    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_rZrrl	��Z��mH;5�Br�1ez-1el��!�0QYr�r�i,r�i�6l�c(	�9er�l�g�]�{l�����g�]r�r�i����)rr�r�Fractionr0r�r�r�r��MIN_EMIN�	MIN_ETINYr-rWr=rBrYrXrVrUrtrr�rkr
)
r��Dr�r0r�r��emax�emin�etinyr�s
          r!� test_decimal_fraction_comparisonz.UsabilityTest.test_decimal_fraction_comparison�s����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�rprBrE�deepcopy)r�r�rr�r`s     r!�test_copy_and_deepcopy_methodsz,UsabilityTest.test_copy_and_deepcopy_methods$s����,�&���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__rB)rr�rar�s   �r!�hashitz.UsabilityTest.test_hash_method.<locals>.hashit2s6����Q���A��
�
���A����Q��"�"�"��Hr#rTr�r��nan123�-NaNc	�h��g|].}tdd��D]}dD]}�|d|z|zz������/S)���r�r~r)r�)rr6r�r�r�s    �r!r)z2UsabilityTest.test_hash_method.<locals>.<listcomp>?su���,�,�,�� %�c�2���,�,��#*�	,�,� �	�w�t�Q��T�A�X��/�/�,�,�,�,�,r#)r������r}�!�=�>�?�@�A�Br�r�rEz-0.000r\z-0E12�10.0z	-23.00000�1230E100z
-4.5678E50l��z	1.634E100z
90.697E100z
188.83E100z
1652.9E100�	56531E100)r�r�rDz-.0e1z34.0�2.5z
112390.625z	-0.515625z123456789.1�r�r��'iLi�)	rr�r��extendrBr�rr�r-)r�r�r�r�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�rarbr�rr#r!�Hr��s#������
�
�
�
�
r#r�c��eZdZdS)�-UsabilityTest.test_hash_method_nan.<locals>.DN)r�rarbrr#r!rwr��s�������Dr#rw)rr�rtr4r�rBrZr�)r�r�rr�rws     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%rqs  r!�test_as_nonzerozUsabilityTest.test_as_nonzero�sL���,�&��	
��������$�$�$�������(�(�)�)�)�)�)r#c��|jj}|d��}|�t|��d��|�t	|��d��dS)Nr�zDecimal('15.32'))rr�rBr=rAr�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.00rs��3.2r�)�3.54r�)�3.899r�)�-2.3r��z-11.0i�����rDr�z-0E3r)�89891211712379812736.1l�{�#'s�{Mr�r
r�rar�)	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�rz1.2E+2)r�rre)r�rz123.5)r�r�123.46)r�r�r�)r�r�z123.4560)z123.455rr�)z123.445rz123.44)rar�r�)r�i��r�)�sNaN314r��NaN314)
rr�rBrr��mathr�rtr�
OverflowError�ceil�roundr=)
r�r�r�r��
test_pairsrrM�test_triplesr�r�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�rvrBr
)r�r�rr�r�s     r!�test_nan_to_floatzUsabilityTest.test_nan_to_floats����,�&��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�rtrr�)r�r�rrs    r!�test_snan_to_floatz UsabilityTest.test_snan_to_floatsM���,�&��;�	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�rBr>rAr�s   r!�test_eval_round_tripz"UsabilityTest.test_eval_round_trip#s����,�&��
�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�r{r�r�r�r�)rr�r�)r�rrr�rr�r�r�r�)r�r�rr�r�r�r�)r�rrr�%)rr�r�)rrr�)rr�r�)rr�r�)rr��N�rrr�)rrr�)rr�r�)r)rrr�rr�)rr�r�)rr�rB�as_tupler�s   r!�
test_as_tuplezUsabilityTest.test_as_tuple6so���,�&��
�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�rtr��as_integer_ratiorr�r��tuplerrUrBr��gcd)	r�r�r\�coeffr�r�pqrrs	         r!�test_as_integer_ratioz#UsabilityTest.test_as_integer_ratiocs���,�&��	
���-�!�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�rarbr�rr#r!�	MyDecimalr��s�������A�A�Ar#r�rr�1.0r,)	rr�r�r<r�rprBr}r�)r�r�r�r�r�rrr6s        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�rBr=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�r6i����111�1e9999z1e-9999�r(z1.609487E+48FTz4.709530rz2.045323r�r�1111000z
9.999999E+999r
r�ro�
+Subnormalz0E-1005r�Nan891287828�
NaN1287828i  r�r��e�101rsr2r�11100z1.11E+9r�r��225r@�r.r(r�z1.50001z1e-3)r\r.r(z1.501z1.500z1e-10)r�):rr�r0r�r�r�r�r�r�r�r�r�r-r_rZr1rBr=r\r%rTrtr�r�r��ln�log10�logbr{r�r�r�rir��capitalsr�r)rkrer�r�r�r�r�r�r��rotate�scaleb�shift�fmar1r.�to_integralr�r�r�r��quantize)r�r�r0r�r�r�r�r�r�r�r�r�r�rr��zrGr(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'��i7rsr�r�irr�z9.123���r�ri�rw�C)rr�rBr)rkrmrorer�r�r�r�r�r�r�r
r�rr�r	r
rrqs  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�rarbrcrbrirlr{r~r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr#r!rRrR�sb������4�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#rRc��eZdZeZdS)�CUsabilityTestNrfrr#r!rr�	rgr#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�rr rr�tearDownr!s �r!r%zPyUsabilityTest.tearDown�	�3����"�4�#;�<�<�<�
���������r#�r�rarbrkrr�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��assertNotIsInstancerqs  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)r��pickle�HIGHEST_PROTOCOLrr�r�modules�dumps�loadsrBr�rkr�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�r�rBrr�rr�rtrr��r�r�rrrr�s      r!�test_intzPythonAPItests.test_int'
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)Nr�i)rr�r�r�r�r�r�rs   r!�test_small_intszPythonAPItests.test_small_ints8
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)NrArBrCrD)
rr�r�rBrr�rr�r��truncrEs      r!�
test_trunczPythonAPItests.test_trunc?
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__P
s
������r#Nr�rr#r!r�rOO
s#������
�
�
�
�
r#r�r�r�r�ls\�&�5$3�|	r�r�r�r�r�r��abcr�r�r�r�)rr�r%r.r�rBr<r=rr�r�r�rtr4r�r0r�)r�r�r�r��bigintrMrs       r!�test_from_floatzPythonAPItests.test_from_floatK
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)Nr�)r-r.z3.1415rR)r-r/��z
Decimal('-0')r�zDecimal('1')r�z
Decimal('10'))rr�r0r�r�rB�create_decimal_from_floatr��pir�rtrA)r�r�r0r�r(s     r!�test_create_decimal_from_floatz-PythonAPItests.test_create_decimal_from_floatk
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��rpz7.335r�z7.34�r.z7.33�10e99999�1e100000r�z0.871831e800�1e797)r(r\r.z	8.71E+799)rr�r0r�rBr
r�rt)r�r�r0r�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�rBrarbrc�complexr�rtr5r4rHs   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)8Nrrr,r�)r(rrr�rr�r�z0.7r�r�z-0.9z9.73z1E+1�9999�'z-2000i0���rersz0.0625�0.2r�)r(rror��0.01z0.0101rDz-0.3z0.02z-0.03r�r�r��1e10�9.99r@r��9.9z0.9)�thirdr(rz7E+1i����r�z0.21�11r2�01�23g�������?r)r�)@rr�r0r�r�r�r-r_rZr1rBrtr%rTr*r\rrr�r�r�rr�r�r�r)rkr�r�r�r�r�r
r�rr4r}rr�r�r�r�r�r�r�r��adjustedrc�radixrr{rir�rer�r�rr	r
r�r��	canonicalrsru)r�rwr0r�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.�ArithmeticErrorr4�ZeroDivisionError�ConversionSyntax�DivisionImpossible�DivisionUndefined�InvalidContext)r�rr�r�ryr�r�r�r�r�r�r�s            r!�test_exception_hierarchyz'PythonAPItests.test_exception_hierarchys����,��"�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�rarbr3r?rFrrIrLrTrYr_rfrwr�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)�CPythonAPItestsNrfrr#r!r�r�Grgr#r�c��eZdZeZdS)�PyPythonAPItestsNrjrr#r!r�r�Irgr#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_rZrrcrTr/r��?B��rrrTr/)rr0r�r�r�rBr-r.r1r_rZrrcr*)r�r0r�r�r�r0r.r�s        r!rzContextAPItests.test_none_argsNsK���,�&���<�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�rr0�
RoundingModesr�r.rBrtr4r4)r�r�r��rndrs     r!r�z(ContextAPItests.test_from_legacy_stringsbs���	�����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-rZr_r.rrcrTr/rTr/)r�r5r6rr0rr7r9r8rBr-rZr_r.rrcrTr/r�rkr7r�r;r0�	randranger�r*)r�r;r0r<r�r+�combinations�dumper�loader�rirQ�fi�tir-ryrx�capsrcrrs                    r!r?zContextAPItests.test_pickless����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�assertNotInrqs  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�r0rprYrErTr/r��keysrB)r�r�r0r�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)rr0rtr5r$�r�r0r�s   r!�test__clampzContextAPItests.test__clamp�s9���,�&���G�I�I�����.�'�1�h�?�?�?�?�?r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dS�Nrr�)rr�r0r
rBrtr4�r�r�r0r�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�r0r�rBrtr4r�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�r0r)rBrtr4r�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�r0rkrBrtr4r�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�r0rmrBrtr4r�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�r0rorBrtr4r�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�r0rsrBrtr4r�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�r0rqrBrtr4r�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�r0rurBrtr4r�s     r!�test_copy_negatez ContextAPItests.test_copy_negate'�|���,�&���,�&���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�r0rwrBrtr4r�s     r!rzContextAPItests.test_copy_sign0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�r0r(rBrtr4r�s     r!�test_dividezContextAPItests.test_divide<����,�&���,�&���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�r0ryrBrtr4r�s     r!�test_divide_intzContextAPItests.test_divide_intH����,�&���,�&���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�r0r3rBrtr4r�s     r!�test_divmodzContextAPItests.test_divmodTr�r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dS�Nr�r2)rr�r0r\rBrtr4r�s     r!�test_expzContextAPItests.test_exp`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�rO�4r�rz
not a decimalrr�gZd;�O��?)rr�r0rrBrtr4r�s     r!�test_fmazContextAPItests.test_fmai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�r0rrBrtr4r�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�r0r�rBrtr4r�s     r!�test_is_infinitez ContextAPItests.test_is_infinite�r�r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0r�rBrtr4r�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�r0r�rBrtr4r�s     r!�test_is_normalzContextAPItests.test_is_normal�r�r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0r�rBrtr4r�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�r0r�rBrtr4r�s     r!�test_is_signedzContextAPItests.test_is_signed�r�r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0r�rBrtr4r�s     r!�test_is_snanzContextAPItests.test_is_snan�r�r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0r�rBrtr4r�s     r!�test_is_subnormalz!ContextAPItests.test_is_subnormal�r�r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0r�rBrtr4r�s     r!�test_is_zerozContextAPItests.test_is_zero�r�r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0rrBrtr4r�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�r0rrBrtr4r�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�r0rrBrtr4r�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�r0rerBrtr4r�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�r0r{rBrtr4r�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�r0r�rBrtr4r�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�r0r�rBrtr4r�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�r0r�rBrtr4r�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�r0r�rBrtr4r�s     r!�test_max_magzContextAPItests.test_max_mag(
r�r#c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r0r�rBrtr4r�s     r!�test_minzContextAPItests.test_min4
r�r#c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r0r�rBrtr4r�s     r!�test_min_magzContextAPItests.test_min_mag@
r�r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0�minusrBrtr4r�s     r!�
test_minuszContextAPItests.test_minusL
r�r#c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r0r7rBrtr4r�s     r!�
test_multiplyzContextAPItests.test_multiplyU
����,�&���,�&���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�r0r�rBrtr4r�s     r!�test_next_minuszContextAPItests.test_next_minusa
s|���,�&���,�&���G�I�I��
�L�L������%�%��������b�)�)�1�-�-�-����)�Q�\�4�8�8�8�8�8r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0r�rBrtr4r�s     r!�test_next_pluszContextAPItests.test_next_plusj
r�r#c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r0r�rBrtr4r�s     r!�test_next_towardz ContextAPItests.test_next_towards
r�r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0r�rBrtr4r�s     r!�test_normalizezContextAPItests.test_normalize
r�r#c���|jj}|jj}|��}|�|�d��|�|d������|�|�d��|�|d������|�|�d��|�|d������dS)Nrsrr{)rr�r0rBri)r�r�r0r�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�r0�plusrBrtr4r�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�r�r�r)�modulorar�)rr�r0�powerrBrtr4r�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�r0r
rBrtr4r�s     r!r_zContextAPItests.test_quantize�
rr#c�B�|jj}|jj}|��}|�|d��|d����}|�|�dd��|��|�|�|d��d��|��|�|�d|d����|��|�t|jdd��|�t|jdd��dSr�)rr�r0�	remainderrBrtr4r�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�r0r�rBrtr4r�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�r0rrBrtr4r�s     r!�test_rotatezContextAPItests.test_rotate�
r�r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0r�rBrtr4r�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�r0r�rBrtr4r�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�r0r	rBrtr4r�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�r0r
rBrtr4r�s     r!�
test_shiftzContextAPItests.test_shift�
s����,�&���,�&���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�r0�subtractrBrtr4r�s     r!�
test_subtractzContextAPItests.test_subtractrr#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0r�rBrtr4r�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�r0r�rBrtr4r�s     r!�test_to_sci_stringz"ContextAPItests.test_to_sci_stringr'r#c��|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��dSr�)rr�r0r�rBrtr4r�s     r!�test_to_integral_exactz&ContextAPItests.test_to_integral_exact#s����,�&���,�&���G�I�I��
��������,�,������,�,�R�0�0�!�4�4�4����)�Q�%8�$�?�?�?�?�?r#c�^�|jj}|jj}|��}|�|d����}|�|�d��|��|�t|jd��|�t|jdd��dS)Nr�r2r)rr�r0r�rBrtr4r�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�rarbrr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�rrrrr
r
rr_rrrrrrr!r$r&r)r+r-rr#r!r�r�Ls������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)�CContextAPItestsNrfrr#r!r/r/6rgr#r/c��eZdZeZdS)�PyContextAPItestsNrjrr#r!r1r18rgr#r1c�>�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_localcontext?s����\�,�
��|�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-r5zdid not set correct contextr6r7)rr0r�r�r�rBr-r8)	r�r0r�r�r9�new_ctxr:r;r<s	         r!�test_localcontextargz)ContextWithStatement.test_localcontextargLs)���,�&���\�,�
��|�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.rZr_rrc)r`�rZr�r_r�r�rcr�r[�rT�r/)
rr�r�rBr-r.rZr_rrcrtr4rr�s  r!�test_localcontext_kwargsz-ContextWithStatement.test_localcontext_kwargs]s���
�\�
&�
&��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���}d|_|j�d���5}|�|jd��ddd��dS#1swxYwYdS)Nr�r�r?)rr�r-r�rB)r�r��ctx2s   r!�>test_local_context_kwargs_does_not_overwrite_existing_argumentzSContextWithStatement.test_local_context_kwargs_does_not_overwrite_existing_argumentys����l�%�%�'�'�����
�\�
&�
&�B�
&�
/�
/�	+�4����S�X�r�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+s�A%�%A)�,A)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�rET���z0e-999z3.4e200r)rr�r0r�r�r�r�r1rBrTr/rZrYrtr�r%rr*)r�r�r0r�r�r�r�r9r@r0r.s           r!�test_nested_with_statementsz0ContextWithStatement.test_nested_with_statementss����,�&���,�&���\�,�
��|�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�r0r.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#1swxYwYdSrrSrTs      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�)rr0r�r�r5rBr-)
r�r0r�r�r5r0�n1r.�n2�n3r/�n4rUs
             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�rarbr=rArJrMrQrVrXr^rr#r!r3r3;s�������N�N�N�N�N�N�"I�I�I�8+�+�+�!2�!2�!2�F
�
�
�
�
�
�����r#r3c��eZdZeZdS)�CContextWithStatementNrfrr#r!r`r`�rgr#r`c��eZdZeZdS)�PyContextWithStatementNrjrr#r!rbrb�rgr#rbc�<�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�rTr/�_raise_error)r(�flagr�s  �r!�raise_errorz7ContextFlags.test_flags_irrelevant.<locals>.raise_error�sV����|�q� � �&*��
�d�#��=��&���J����$�$�T�*�*�*�*�*r#r,r?r�)r-rZr_r.r/rTz100E-425000010rrzz
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|]	\}}|�|��
Srrrls   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�r0r�r�r�r�r�r1rgr�r�r7r#r1rTr�r[r:r@rErB)r�r�r0r�r�r�r�r�rjr(�
operations�flagsets�fnrrGrT�extra_flagsri�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�)	rr0r�r�rYrTr/rB�update)r�r0r�r�r�rs      r!�test_flag_comparisonsz"ContextFlags.test_flag_comparisons$s����,�&���,�&���,�&���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�ryr�r*r/r1rBr%rTr�r�rWrt)r�r�ryr�r�rs      r!�test_float_operationz!ContextFlags.test_float_operationJs���,�&����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���dSrg)r1r$rtr�r%rT)r�rar)r(�signalr�ryr�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#rdrergrfrDr�r�rVr�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)r
r)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)	NrDz100.0rr�r�g$@r�ra)r1r�rB�lenr%rTrt�sorted)r�r~rrar�ryr�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�r0ryr�r�r*r/)r�r0r�r�r�r�r�r�ryrr�r�r�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|��dSrg)
rr�r0r�ryr*rTr/�clear_trapsr%)r�r�r0r�ryr(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�rarbrvryrr{r�r�rr#r!rdrd�sy������@W�@W�@W�D$(�$(�$(�L�36�36���36�jY6�Y6�Y6�v0�0�0�0�0r#rdc��eZdZeZdS)�
CContextFlagsNrfrr#r!r�r��rgr#r�c��eZdZeZdS)�PyContextFlagsNrjrr#r!r�r��rgr#r�c��eZdZdZd�Zd�ZdS)�SpecialContextszTest the context templates.c
���|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�r5r�r�r�r�r�r*rpr-r8rB�	Exceptionr�)r�r�r�r�r5r�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�)rrAr�r�r�r5r�r�r�rBr-r*rpr8r�r�)r�rAr�r�r�r5r�r�r�r��default_context_precr�r��saveprecr+s               r!�test_default_contextz$SpecialContexts.test_default_contexts�����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�rarbrcr�r�rr#r!r�r��s9������%�%�"�"�"�H'�'�'�'�'r#r�c��eZdZeZdS)�CSpecialContextsNrfrr#r!r�r�@rgr#r�c��eZdZeZdS)�PySpecialContextsNrjrr#r!r�r�Brgr#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�rr�rZr�r�rrr�r.r,r��rrcrrxr�rTr/r�r)r-r_rZr.rrcrTr/r[rGrFrkrH�QrI�rr)rr)
rr0rArpr4rBr$rtrr4r5�KeyError�__delattr__)r�r0rAr�r)s     r!�test_invalid_contextz+ContextInputValidation.test_invalid_contextGs����,�&����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�rarbr�rr#r!r�r�Es#������:;�:;�:;�:;�:;r#r�c��eZdZeZdS)�CContextInputValidationNrfrr#r!r�r��rgr#r�c��eZdZeZdS)�PyContextInputValidationNrjrr#r!r�r��rgr#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�rTs  �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.rZr_rrcr�r[r;rTr/)r�r-r.rZr_rrcrTr/r0rs       ``��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�)r0rs��r!�	MyContextr��sA�������IM�@D�%)�
'�
'�
'�
'�
'�
'�
'�
'�
'r#r��r-r.rZr_rrcrTr/r-rrr?�9e2rr.�XYZ)r.r-rnr,rZr�)rZr-z1e-99z2.234e-2000rDr_)r_r-�1e99z
2.234e2000rrF�1E222z1e+222rcr�c)rcr_z!1.000000000000000000000000000E+99rTrHr/rI)%rr�r0r�r�r�r�r�r�r�r�rBr$rtrr-r
r4r�r.rrZr�r%rTr_r�rr�r�rcr=r1r;r*r/r�)r�r�r�r�r�r�r�r�r�r�r�r�rr)rr~r0rs                @@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�rarbr�rr#r!r�r��s(������i.�i.�i.�i.�i.r#r�c��eZdZeZdS)�CContextSubclassingNrfrr#r!r�r��rgr#r�c��eZdZeZdS)�PyContextSubclassingNrjrr#r!r�r��rgr#r�c� �eZdZd�Zd�Zd�ZdS)�CheckAttributesc���|�tjtj��|�tjtj��|�tjtj��|�tjtj��|�tjdup
tjdu��|�tjdup
tjdu��|�tj	tj	��|�tt��tt����dS)NTF)rBr�rWrkr�rurvr%rB�__version__�dirr�s r!�test_module_attributesz&CheckAttributes.test_module_attributes�s���	
�����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��__rQ�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�r0rkrBr��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�rBr�r�s   r!�test_decimal_attributesz'CheckAttributes.test_decimal_attributess|��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�rarbr�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�rBrsrqs  r!�
test_adjustedzCoverage.test_adjusteds����,�&��������-�-�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�rurB)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=[]))rrArpr-r_rZr�r.rrcr;rTr/�__repr__rB)r�r�r1rrs     r!�test_context_reprzCoverage.test_context_repr-s����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)"Nrrz-10r��7r�r2r�rr�z1.2rkr�Tz1.01r�F�20�580r�r�r,z2E+1z-1E+1z+Normalr�z1.12345r�r�ror�i�i�)!rr�r�r-r_rZrBr
rr�r��powr\r�r�rrrr{r�r�r�rir�r%r}rr�r�r�rsrurw)r�r�r�r�rr�rs       r!r�zCoverage.test_implicit_context@st���,�&���|�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�r3rBr%r�r/r1rTr�)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�rcrrFr�r�r�)
rr�r�r�r�r-r1rBr%rTr_rZr/)r�r�r�r�r�r�s      r!rzCoverage.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)NrrFr��1e1)rr�r�r�r-r_rZr/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�rBrtr�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)rrr"r%rr(r*r,r�r�)rr�r�r$rk)r�r�r)s   r!r7zCoverage.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�rmr2z9.99e-5rorzr�z1.23457rkr�z1.2345000000r�z0E+10r^r�r�)	rr�r�r-rBr=�	__round__rtr4)r�r�r�r�s    r!�
test_roundzCoverage.test_round�s����,�&���|�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&)rr0rtrr�)r�r�s  r!�test_create_decimalzCoverage.test_create_decimal�s8���L� � �"�"�����*�a�&6���>�>�>�>�>r#c�H�|jj}|jj}|��5}d|_|ddz��ddzz}|�t|��d��|�|���d��ddd��dS#1swxYwYdS)Nrii�i�r�iSrr)rr�r�r-rBrr�r�r�r�r�rs     r!rFzCoverage.test_int�s����,�&���|�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)rr0r-rsrBrurw)r�r0r�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�rarbr�r�r�r�r�rr_rr7rrrFr�rr#r!r�r�s�������7�7�7�	�	�	����&O#�O#�O#�b'5�'5�'5�R/�/�/�((�(�(�(�(�(�N�N�N�J�J�J�"?�?�?�1�1�1� � � � � r#r�c��eZdZeZdS)�	CCoverageNrfrr#r!rrrgr#rc�,��eZdZeZ�fd�Z�fd�Z�xZS)�
PyCoveragec���t�����tj��|_tjd��dSrrr!s �r!r�zPyCoverage.setUpr"r#c�z��tj|j��t�����dSrr$r!s �r!r%zPyCoverage.tearDown#r&r#r'r)s@r!rrr*r#rc��eZdZdZd�ZdS)�PyFunctionalityz!Extra functionality in decimal.pyc��tj}tj}gd�}|D]3\}}}|�t	||��|��|���4dS)N)
)z.0er�z1e+0)z#.0er�z1.e+0)rMr�r�)z#.0fr��1.)rU�1.1r)z#grr)rWr�r�)z#.0gr�r)r]r�z100%)z#.0%r�z100.%)rkr�r�rBr�)r�r�r�r�r�rrPs       r!�test_py_alternate_formattingz,PyFunctionality.test_py_alternate_formatting*sm���)���~������*�	>�	>�N�C��F����V�G�G�A�J�J��4�4�f�=�=�=�=�	>�	>r#N)r�rarbrcrrr#r!rr's)������+�+�>�>�>�>�>r#rc�0�eZdZdZd�Zd�Zd�Zd�Zd�ZdS)�
PyWhiteboxz White box testing for decimal.pyc���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.0625rj�152587890625e7r�ic
r�152587890625��riB)rkr�r�r-rBr	s     r!�test_py_exact_powerzPyWhitebox.test_py_exact_powerBs����)���~��
�\�^�^�	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>ds&����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>rB�_sign�_int�_exp)�	operation�useOther�b1�b2r�r�r�s  �����r!�checkSameDecz@PyWhitebox.test_py_immutability_operations.<locals>.checkSameDecls1����
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__rTr	rrrr
rr�	__float__r)r��__int__�	__trunc__r'r!�__neg__�__bool__�__pos__r+rrr�r*r(r"r,r�__str__rr$rsr�r)r�r�r�r
r�r�r�r�r)F)rkr�rAr5rpr2r;r/rBr"r#r$)
r�r�rAr5r�r)r'r(r�r�s
`     @@@@r!�test_py_immutability_operationsz*PyWhitebox.test_py_immutability_operations]s��������)���)���\�
����!�!���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)Nrwrx)rkr�rBr=rYrEr�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�)rkr�r��_rescaler�r%r�r	s     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)rkr�rtr�_roundr�rqs  r!�test_py__roundzPyWhitebox.test_py__round�s6���)�����*�g�g�h�&7�&7�&>��8�L�L�L�L�Lr#N)	r�rarbrcrr2r4r7r:rr#r!rr?sn������*�*�3�3�3�6M$�M$�M$�^*�*�*�(�(�(�M�M�M�M�Mr#rc�T�eZdZdZed���Zed���Zed���ZdS)�CFunctionalityzExtra functionality in _decimalc��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/rT)rBrcr*)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�rOrP�"ii�r�ri)r��IEEEContext�	DECIMAL32�	DECIMAL64�
DECIMAL128rBr-r_rZrtr�r)r�rBrCrDrEr?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)rTr/)r�r0r;�
DecRoundedrB�_flags�_trapsr�s   r!�test_c_contextzCFunctionality.test_c_context�s[���)���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)Nr}r��ir)r�r;�DecConversionSyntax�DecDivisionByZero�DecDivisionImpossible�DecDivisionUndefined�DecFpuError�
DecInexact�DecInvalidContext�DecInvalidOperation�DecMallocError�DecFloatOperation�DecOverflowrH�DecSubnormal�DecUnderflowrBrCrDrE�IEEE_CONTEXT_MAX_BITSr7�DecIEEEInvalidOperation�	DecErrors�DecTraps)r��condrMr�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�rarbrc�requires_extra_functionalityrFrKr`rr#r!r<r<�sr������)�)�!�!9�!9�"�!�!9�F"�1�1�"�!�1�"�#C�#C�"�!�#C�#C�#Cr#r<c��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	e
d���Zd	�Ze
d
���Z
d�Zd�Zd
�Zd�Zd�Ze
d���Ze
d���Zd�Zd�Zd�Zd�Zd�Zejej�d��d��ejed��eje dd���d��d�������Z!dS)�	CWhiteboxzWhitebox testing for _decimalc�|�tj}tj}ddz}ddz}|��5}d|_t	d��D]^}tj||��}tjdd��}||z}	||��||��z}
|�|	|
���_	ddd��dS#1swxYwYdS)Nr��#�$i@Br�r�i�)r�r�r�r-r�r0r�rB)r�r�r�r'r(r�rMr�rarr�s           r!�test_bignumzCWhitebox.test_bignums���)���~��
��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�)rtr4r�r�r�s r!�test_invalid_constructionz#CWhitebox.test_invalid_construction,s$�����)�Q�Y��5�9�9�9�9�9r#c���tj}tj}tj}tj}||����5|�||d��ddd��dS#1swxYwYdS)N�1e9999999999999999999)r�r�r�r0r�rt)r�r�r�r0r�s     r!�test_c_input_restrictionz"CWhitebox.test_c_input_restriction/s����)���-���)���~��
�\�'�'�)�)�
$�
$�	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�rAryrpr-r_rZr�r.rrcr;rTr/r�rB)r�rAryr�r1rrs       r!�test_c_context_reprzCWhitebox.test_c_context_repr:s����)���)�����!�!�����������$��
���
����!�!�$�	 �	 �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!rrTrr/r�ri�pr�r�r�l�N�Zoiʚ;r�rZr?rErDrrGrF)r-rZr_rrc�win32r�r�r�i���?ri9�r�r���zwith localcontext("xyz"): passz-with localcontext(context=getcontext()): passr�)r�r0r�r�ryr�r�r5rWrtr�rT�__setitem__r/r�__delitem__r4r4rpr�r�platformr$�execr�)r�r0r�r�ryr�r�r5�HAVE_CONFIG_64r�r�int_max�gt_max_emaxr)�
saved_contexts               r!�test_c_context_errorszCWhitebox.test_c_context_errorsWsi���)���-���:���)���~���\�
��\�
��*�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�rkr�r�r�r�r�r1r�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��_allcrrrrp)rIrJrr�rqrrr�r)r�r0r�r�r�r�r5rWrtr�r4rrurr4)r�r0r�r�r�r�r5rwr�rxr)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)NrAi�iH�rri'�i�r�rnro)r�rAr�r�r�r�r�rpr-r�r.r_rZrrcrB�Etiny�EtoprWr�r�r�)r�rAr�r�r�r�r�r�s        r!�test_c_valid_contextzCWhitebox.test_c_valid_context�s����)���)���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�rArprBr)r�rAr�s   r!�test_c_valid_context_extraz$CWhitebox.test_c_valid_context_extrasX���)�����!�!�������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�Tr^rr�r)r�r�r�r�r�rvrWr/rtrrr�)r�r�r�r�r�rvrxr�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�rzz=%d.1)r�r�rWrtr4r�r)r�r�rw�maxsizes    r!�
test_c_formatzCWhitebox.test_c_format9s����)���*�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�r2rz99999999999999999999999999.9�100000000000000000000000000Tz999.9)r�r�r�r�rBrrtr4r�r�r�r/)r�r�r�r�rr�s      r!�test_c_integralzCWhitebox.test_c_integralGs����)���)���~���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+9rrrOr,rr�r�rzz	1e-100000r�r�r�r��200Tri�)r�r�r�r�r�r�rBr�rtr4r�rir�r
r�r�rwrur}r3r=rtr/r	r%rTr1r-)r�r�r�r�r�r�r�s       r!�test_c_funcszCWhitebox.test_c_funcsfsC���)���-���)���\�
��~��������+�+�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�rrrr{r�r�r�rir�r�rr�)r)rkrer�r�r�r�r�r�rr	r
rrrr[)�mod)r�r�r0r$rtr4rr�r�rr
r)r�r�r0rr)�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)
rBr�r�rJr\rOrXrZr;rAr�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_dictr1r�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�rrr�i���rrr�)>r�r0rAr�ryr�r�r�r�r�r�r�r;rUr\rpr%r/r�r��valuesr�r*rTrr�rBrtr4r�r�	getsizeofr�r1rIrJrHrSrYrZrXrOrWrPrQrRrTrVrNr;r�r�r0�sampler�r[r-r.rZr_rrc)&r�r0rAr�ryr�r�r�r�r�r�r�r;rUr\r�r�rmr�rr�
IntSignals�IntCond�limr�rr�rTr/r-ryrxrcr��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>hr�r#)r�)r�s r!r�z6CWhitebox.test_invalid_override.<locals>.make_groupinggs#���7�7�0�0�C�0�0�0�1�1�1r#r�c�B���|���||��Sr)r�)rr�r�r�s   �r!r�z0CWhitebox.test_invalid_override.<locals>.get_fmtjs!����7�1�:�:�(�(��h�7�7�7r#rl)�r�rr��xxxxxr�r��yyyyy�r�rUr�)r�r�r�r�r�r�rtr)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�rtr�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�rb)rr�r�)rr�r�z-sNaN1)r�r�r�r�r�r�r-r/rr�rBr=r�rtr�)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�rWrU�
__sizeof__rB)r�r�rwrr�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�rarbr�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�rarbr*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_length�r�r#N)r�rarbr�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�rrBr�)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)	r{r�r�rer�r�r�rr
)r-rZr_rrr�rr���l�9V�r��40E9z2.0E+5r�)r�ri�rz0.0025)r�r�r0r�rWrur�rBr\rrrr�r3)r��MaxContextSkipr�r0r��
maxcontexts      r!�test_maxcontext_exact_arithz%CWhitebox.test_maxcontext_exact_arith�s���<�<�<���)���)���~���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"N)"r�rarbrcrgrirlrnr{r}rar�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��skipIfrrur
rr	r�rr#r!rcrcsA������'�'�'�'�'�":�:�:�	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� D� Dr#rcztest requires C versionc��eZdZdZd�Zd�ZdS)�
SignatureTestzFunction signaturesc���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)NrQr�r0c�<�g|]}|�d���|��S)rQr�rs  r!r)z5SignatureTest.test_inspect_module.<locals>.<listcomp>3s8��.�.�.���<�<��,�,�.�1�.�.�.r#�parameter name mismatch in %s��msgc��g|]	}|j��
Sr��kindrs  r!r)z5SignatureTest.test_inspect_module.<locals>.<listcomp>9s��D�D�D�Q�!�&�D�D�Dr#c�^�g|]*}|d�d���|dj��+S)rrQr)r
r�rs  r!r)z5SignatureTest.test_inspect_module.<locals>.<listcomp>:sB��0�0�0���A�$�/�/�#�.�.�0�!�A�$�)�0�0�0r#r5�parameter kind mismatch in %s)r�rkr
r$r��inspect�
isfunction�	signaturer[�
parametersr�rBr�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_module&s�����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�)rrorr�rr�rar�r\r�numr�r.r()rror�rar�r\rr�r�r.r(c���g}i}|j���D]d\}}|dkr�|j�kr"|��||���9|j�kr�||||<�Vt	d���||fS)Nr�zunexpected parameter kind)r�r�r�r:r
)	�moduler1r�kwargs�name�param�POS�POS_KWD�pdicts	      ���r!�mkargsz0SignatureTest.test_inspect_types.<locals>.mkargsbs�����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�6�|dkrdS|dkrdS|dkrdS|S)zwThe C Context docstrings use 'x' in order to prevent confusion
               with the article 'a' in the descriptions.rr�r�rarr�r)rs r!�trz,SignatureTest.test_inspect_types.<locals>.tros0���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)NrQc�&��g|]
}�|����Srr)rrrs  �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>�r	r#rr�rr�r,zinvalid signature for z: r)r$rkr�r�r
r�r�r�r[r�r�rBr�r�r�r�r
)�ty�p_type�c_typer)r�r�r�r�r�r�r�r�r�kwdsrrrr�rs              �����r!r�z.SignatureTest.test_inspect_types.<locals>.doitws:����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�r0)	r��_ParameterKind�POSITIONAL_ONLY�POSITIONAL_OR_KEYWORDr�r�r�r�rk)r�r�rrrrrs` @@@@@r!�test_inspect_typesz SignatureTest.test_inspect_typesBs����������$�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�rarbrcr�rrr#r!r�r�!sB��������S�S�S�8e�e�e�e�er#r�rrc��tt��tt��|�|ntd��a|a|�t}nttg}tj
t��D]v}d|vs|�d��r�|�
d��\}}|�||vr�;|fd�}ttd|z|��ttd|z|��~~~~�w	t|�|��ddlm}	t$jd}
tr+tt$jd<t)t||	�	��tt$jd<t)t|��|
t$jd<tr*t�t,t��t�t,t��tst/jd
t2��t4t$jdurt7d���dS#tr*t�t,t��t�t,t��tst/jd
t2��t4t$jdurt7d���wxYw)z� Execute the tests.

    Runs all arithmetic tests if arith is True or if the "decimal" resource
    is enabled in regrtest.py
    Nrz.decTestr�c�<�|�t|z��Sr)r�	directory)r�r�s  r!rztest_main.<locals>.<lambda>�s��$�.�.��Q��*G�*G�r#�test_r)�IGNORE_EXCEPTION_DETAIL)�optionflagsz*C tests skipped: no module named _decimal.zGInternal error: unbalanced number of changes to sys.modules['decimal'].)r8r�rkrr/r2�	all_testsreri�os�listdirrr
rr4r�doctestrrr7rr5�ORIGINAL_CONTEXT�warnings�warn�UserWarning�orig_sys_decimalr
)�arith�verbose�
todo_tests�debug�test_classes�filename�head�tail�testerrr<s           r!�	test_mainr+�s���	��G�G�G���G�G�G��)�u�u�/B�9�/M�/M�H��E��� ���%�~�6��
�J�y�)�)�	)�	)���X�%�%��)<�)<�S�)A�)A�%���^�^�C�(�(�
��d��!�d�*�&<�&<�� (�G�G�G���
�w��~�v�6�6�6����$���7�7�7��d�D�&�&�8��l�#�#���7�7�7�7�7�7��+�i�0�K��
M�)*���I�&��A�w�4K�L�L�L�L�%&�C�K�	�"���7�#�#�#�%0�C�K�	�"��/�a�l�l�+�A�.�/�/�/�	���%�a�(�)�)�)��	'��M�F�%�
'�
'�
'��3�;�y�#9�9�9��7�8�8�
8�:�9��
�/�a�l�l�+�A�.�/�/�/�	���%�a�(�)�)�)��	'��M�F�%�
'�
'�
'��3�;�y�#9�9�9��7�8�8�
8�
8�
8�
8�
8s�'B
H�B&Kz: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)r"r#)r"r#r$r%)NNNN)�rcr�rrrrr5rpr�r/r��test.supportrrrrrrr	r
rrr
r�test.support.import_helperrrrr0r�rCrur�rkrr!�
cfractionsr7�
pfractionsrr�r�rTr�r4r�r�r�r�r�r�r�r�ryr;r*r�r�r�r�r�r�r1r�r�rr8�TESTDATADIRr��argvr��__file__�path�dirname�curdir�testdir�sepr�isdirr�r9�hasattr�EXTRA_FUNCTIONALITY�
skipUnlessrar��skip_if_extra_functionality�TestCaser=rerirmr�r�r�r9r;r=r�r�r�r r"r2r:�requires_working_threadingr<rNrPrRrrr,r�r�r�r/r1r3r`rbrdr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr<rcr�r�insertr+�optparse�OptionParserr�
add_option�
parse_args�optr�skipr%rr#r!�<module>rIs����"������������������������������������
�
�
�
�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�I�D�D�D�D�D�D�D�D�D�D�D�D�D�D�;�:�:�:�:�:�)�)�)�)�)�)�(�(�(�(�(�(�
�
�
�
����������<�8�����n�-�-�-���	�*��6�6�6����	�J�<�8�8�8��"�"�"�"�!�
 ��[�M�
B�
B�
B�
����I��
 �
 ��[�M�
B�
B�
B�
����I��
�z�1�Z�(�	�)���I��
�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#�8�$�a#�a#�a#�F�����L���������\����
U<�U<�U<�U<�U<�x�0�U<�U<�U<�n
����� 8���������!9����K1�K1�K1�K1�K1�x�0�K1�K1�K1�Z����� 8���������!9����O9�O9�O9�O9�O9��"�O9�O9�O9�b
�����*���������:����eA�eA�eA�eA�eA�h�/�eA�eA�eA�N	�����6��������� 7����
%'�%'�%'�N*0�*0�*0�Z-��,�.�.�*(�*(�*(�*(�*(�H�%�*(�*(�/�.�*(�Z�����]���������m����nE�nE�nE�nE�nE�H�%�nE�nE�nE�`�����]����
�
�
�
�
�m�
�
�
�[N�[N�[N�[N�[N�X�&�[N�[N�[N�z
�����n���������~����hC�hC�hC�hC�hC�h�'�hC�hC�hC�T������������������^�^�^�^�^�8�,�^�^�^�@�����0���������1����I0�I0�I0�I0�I0�8�$�I0�I0�I0�V�����L���������\����N�N�N�N�N�h�'�N�N�N�`������������������<;�<;�<;�<;�<;�X�.�<;�<;�<;�|�����4���������5����k.�k.�k.�k.�k.��*�k.�k.�k.�Z�����,���������-�����1�1�1�1�1�h�'�1�1���1�: � � � � �x� � � � �B���������
�
�
�
�
��
�
�
�>�>�>�>�>�h�'�>�>�>�0BM�BM�BM�BM�BM��"�BM�BM�BM�HSC�SC�SC�SC�SC�X�&�SC�SC�SC�jFD�FD�FD�FD�FD��!�FD�FD�FD�R����Q�1�2�2�D�D�D�D�D�H�%�D�D�3�2���D�N
��
�7�
��
�7�
��
�*�
��	
�7�	
�
�
�
-�
��

�-�

��
�.�
��
�/�
��
�4�
��
�,�
��
�/�
��
�6�
��
�2�
��
�(�
��
�-�
� �!
� (�!
�"�#
�",�#
�	�*	�'��!�$�Q�$��I�I�
���Q��(�(�(�
���Q�
�&�&�&�48�48�48�48�n�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�,��	��t�,�,�,�,�,�,�	
�,��	��d�t�3�9�M�M�M�M�M�M��	��d�+�+�+�+�+�+��r#