HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //opt/alt/python312/lib64/python3.12/test/__pycache__/test_decimal.cpython-312.opt-1.pyc
�

~h�eT\��X�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZmZddlmZmZmZmZmZddlmZddlmZddlmZddlZddlZddlZej:dk(red	�ed
dg��Zed
dg�
�Zddl Z!eddg��Z"eejFd
<eddg��Z$eejFd
<ee"ee$iZ%e!ejFd
<ejLed�Z'eer.e(ejS�jTjW��ndee(ejS�jTjW��iZ,eereejZej\ej^ej`ejbejdejfejhejjg	ndeejZej\ej^ej`ejbejdejfejhejjg	iZ6d�Z7ejpZ8ejrZ9ejtZ:ejvZ;ejxZ<ejzZ=ej|Z>ej~Z?e8e9e:e;e<e=e>e?gZ@eerejS�j�ndeejS�j�iZAd�ZBdZCeDdk(rej�dZFneGZFej�j�eF�xsej�ZKeKej�zeCzej�zZMej�j�eM�aOdZPeQed�rdndZRejLeRd�ZSej�eRd�ZUGd�d�ZVGd�d�ZWe'Gd�deWej���ZYGd�d eWej��ZZGd!�d"�Z[e'Gd#�d$e[ej���Z\Gd%�d&e[ej��Z]Gd'�d(�Z^e'Gd)�d*e^ej���Z_Gd+�d,e^ej��Z`Gd-�d.�Zae'Gd/�d0eaej���ZbGd1�d2eaej��Zcd3�Zdd4�Zeej��Gd5�d6��Zge'Gd7�d8egej���ZhGd9�d:egej��ZiGd;�d<�Zje'Gd=�d>ejej���ZkGd?�d@ejej��ZlGdA�dB�Zme'GdC�dDemej���ZnGdE�dFemej��ZoGdG�dH�Zpe'GdI�dJepej���ZqGdK�dLepej��ZrGdM�dN�Zse'GdO�dPesej���ZtGdQ�dResej��ZuGdS�dT�Zve'GdU�dVevej���ZwGdW�dXevej��ZxGdY�dZ�Zye'Gd[�d\eyej���ZzGd]�d^eyej��Z{Gd_�d`�Z|e'Gda�dbe|ej���Z}Gdc�dde|ej��Z~Gde�df�Ze'Gdg�dheej���Z�Gdi�djeej��Z�eUe'Gdk�dlej����Z�Gdm�dn�Z�e'Gdo�dpe�ej���Z�Gdq�dre�ej��Z�Gds�dtej��Z�Gdu�dvej��Z�Gdw�dxej��Z�e'Gdy�dzej���Z�ee'Gd{�d|ej����Z�d}�Z�d~�Z�d�Z�da�da�da�da�d�d��Z�eDdk(r�ddl�Z�e��j(d��Z�e��j-d�d�d�d����e��j-d�d�d�d����e��j/�\Z�Z�e��j4re�dd���ye�re�dde�e��j6���ye�dd���yy)�ab
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()
with the corresponding argument.
�N)�is_resource_enabled�requires_IEEE_754�requires_docstrings�requires_legacy_unicode_capi�check_sanitizer)�
TestFailed�run_with_locale�cpython_only�darwin_malloc_err_warning�
is_emscripten)�import_fresh_module)�threading_helper)�warnings_helper�darwin�test_decimal�decimal�_decimal)�fresh)�blocked�	fractionsztest requires C versionc�h���t||��|jt��fd��D���y)Nc3�<�K�|]}|�vr�|n�|���y�w�N�)�.0�s�d�expecteds  ���8/opt/alt/python312/lib64/python3.12/test/test_decimal.py�	<genexpr>z!assert_signals.<locals>.<genexpr>Us&�����F�q�q�H�}�q��t�a��d�(�:�F�s�)�getattr�
assertTrue�all)�cls�context�attrrrs   `@r�assert_signalsr'Ss&�������A��N�N�3�F�A�F�F�G�c��|sy|jdttjt|d���}|j|�y)N�	r)�prec�rounding�traps)�Context�ROUND_HALF_EVEN�dict�fromkeys�Signals�
setcontext)�m�DefaultTestContexts  r�initr6ls@���f����
��t�}�}�W�Q�Z��/K�#����L�L�#�$r(�decimaltestdata�__main__F�
DecClampedTz.test requires build with -DEXTRA_FUNCTIONALITYztest requires regular buildc�X�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zy)�IBMTestCasesz?Class which tests the Decimal class against the IBM test cases.c
�h�|jj�|_|jj�|_dg|_tgd��|_|jtk(r�|jjd�|jjd�|jjd�|jjd�|jjd�|jjd�|jjd	�|jjd
�|j|j|j|j|jd�|_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�|_|jj2|jj4|jj6|jj4|jj4|jj8|jj4|jj4|jj:|jj<|jj>|jj@dU�|_!dV|_"y)WN�#)�scbx164�scbx165�expx901�expx902�expx903�expx905�lnx901�lnx902�lnx903�lnx905�logx901�logx902�logx903�logx905�powx1183�powx1184�powx4001�powx4002�powx4003�powx4005�powx4008�powx4010�powx4012�powx4014�pwsx803�pwsx805�powx4302�powx4303�powx4342�powx4343�pwmx325�pwmx326)�	precisionr,�maxexponent�minexponent�clamp�and�logical_and�apply�_apply�class�number_class�
comparesig�compare_signal�comparetotal�
compare_total�
comparetotmag�compare_total_mag�copy�copy_decimal�copyabs�copy_abs�
copynegate�copy_negate�copysign�	copy_sign�	divideint�
divide_int�invert�logical_invert�iscanonical�is_canonical�isfinite�	is_finite�
isinfinite�is_infinite�isnan�is_nan�isnormal�	is_normal�isqnan�is_qnan�issigned�	is_signed�issnan�is_snan�issubnormal�is_subnormal�iszero�is_zero�maxmag�max_mag�minmag�min_mag�	nextminus�
next_minus�nextplus�	next_plus�
nexttoward�next_toward�or�
logical_or�reduce�	normalize�
remaindernear�remainder_near�samequantum�same_quantum�
squareroot�sqrt�toeng�
to_eng_string�
tointegral�to_integral_value�to_integral_exact�
to_sci_string�logical_xor)�tointegralx�tosci�xor)�ceiling�down�floor�	half_down�	half_even�half_up�up�05up)�clamped�conversion_syntax�division_by_zero�division_impossible�division_undefined�inexact�invalid_context�invalid_operation�overflow�rounded�	subnormal�	underflow)r{r}rr�r�r�r�r�r�r�r�)#rr.r%�readcontext�ignore_list�set�skipped_test_ids�C�add�change_precision�change_rounding_method�change_max_exponent�change_min_exponent�change_clamp�
ChangeDict�NameAdapter�
ROUND_CEILING�
ROUND_DOWN�ROUND_FLOOR�ROUND_HALF_DOWNr/�
ROUND_HALF_UP�ROUND_UP�
ROUND_05UP�RoundingDict�Clamped�InvalidOperation�DivisionByZero�Inexact�Overflow�Rounded�	Subnormal�	Underflow�
ErrorNames�LogicalFunctions��selfs r�setUpzIBMTestCases.setUp�s����|�|�+�+�-����<�<�/�/�1����5���!$�"%�"!���H�<�<�1���!�!�%�%�i�0��!�!�%�%�i�0��!�!�%�%�j�1��!�!�%�%�j�1��!�!�%�%�j�1��!�!�%�%�j�1��!�!�%�%�i�0��!�!�%�%�i�0�*.�)>�)>�(,�(C�(C�+/�+C�+C�+/�+C�+C�%)�%6�%6�	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�"%�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�D+>�$3�"/�I$1���N*7�&0�'2�+:�+:�)6�$,�&0�2���(,�|�|�';�';�15���1N�1N�04���0K�0K�37�<�<�3P�3P�26�,�,�2O�2O�'+�|�|�';�';�/3�|�|�/L�/L�15���1N�1N�(,���(=�(=�'+�|�|�';�';�)-���)?�)?�)-���)?�)?�A���
!1��r(c�j�|jtk(r�|jjdk(rl|jj	d�|jjd�|jj
d�|jj|�S|jj||�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�!6�)�!C����,�,�Z�8����,�,�Z�8����,�,�[�9��#�#�2�2�1�5�5��<�<�'�'��7�3�3r(c��trtj�t|d��5}|D]6}|j	dd�j	dd�}	|j|�}�8	ddd�y#|jj$r8}|jd|jjzdz|z�Yd}~��d}~wwxYw#1swYyxYw)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's�����#�#�#�
�$��
)�	e�Q��
e���|�|�F�B�/�7�7��b�A��e����t�,�A�	
e�	e�	e���|�|�4�4�e��I�I�m�I�,?�,?�,H�,H�H�K^�^�_c�c�d�d��e��
	e�	e�s5�(B>�
A*�B>�*B;�.B6�1B>�6B;�;B>�>Cc���|jd�dk\rf|dddk7r^|jd�sM|jd�ddz|jd�djd�dzj�}n"|jd�dj�}|jD]}|j|�dk\s�y|syd|vr|j|�S|j
|�S)	Nz -> r��--z  --�->��:)�find�
startswith�split�stripr��eval_directive�
eval_equation)r�r�ignores   rr�zIBMTestCases.eval_line6s����6�6�&�>�Q��1�R�a�5�D�=����f�9M������q�!�D�(������q�!�'�'��-�a�0�1�27�%�'�
�����
�a� �&�&�(�A��&�&�	�F��v�v�f�~��"��	���
�A�X��&�&�q�)�)��%�%�a�(�(r(c���d�|jd�D�\}}|dk(r|j|}n	t|�}|jj|d��}||�y#t$rY�1wxYw)Nc3�XK�|]"}|j�j����$y�wr)r
�lower)r�xs  rr z.IBMTestCases.eval_directive.<locals>.<genexpr>Is����@�a����	���)�@�s�(*rr,c��yrr)�argss r�<lambda>z-IBMTestCases.eval_directive.<locals>.<lambda>Rs�r()r	r��int�
ValueErrorr��get)r�r�funct�values    rrzIBMTestCases.eval_directiveHsr��@�1�7�7�3�<�@���u��J���%�%�e�,�E�
��E�
�����#�#�E�,>�@��
�e���	�
��
�s�A#�#	A/�.A/c�v�tstj�dkry|jj�	|j	d�}|dj�j	�}|d}trtd|d��|dj�}|dd}|dj�j	�}|d}|dd}d	�}	||jvry|jj!||�}
|
d
k(ryt#|j|
�}g}d}d}
|D�cgc]}|j$|j���!}}t&|jD]}d|jj(|<�|D]}d|jj(|<�t+|�D�]\}}|j-d�dzdk(rd|
z
}
|
r	|dz|z}�.||z}d}|	|�}|
d
vr�t.rr|D]m}d|jj(|<	||jj1|��|j3d|�d|���d|jj(|<�o|jj1|�}n|j5||j�}|j7|���|	|�}t.r�|
d
vr�|D]Q}d|jj(|<	||�|j3d|�d|���d|jj(|<�St8|jD�cgc]	}||vs�|��}}|D]8}d|jj(|<	||�|j3d|�d|����:|D]}d|jj(|<�trtd|j�	t=||��}|
|j>vrt=tAtC|���}|jE�}|jGtH��|jGtH��|jK|d|zdz|z�|jK||d|zdzt=|�z�y#tttf$r|jj�wxYwcc}w#|$rY��`t&|j$r&}|j3d|�d|�d|�d��Yd}~���d}~wwxYw#|$rY���t&|j$r&}|j3d|�d|�d|�d��Yd}~��(d}~wwxYwcc}w#|$rY���t&|j$r.}|j3dt;|��d|�d|���Yd}~��9d}~wwxYw#t&|j$r"}|j3d|�d|���Yd}~���d}~wtd|��xYw)Ng�������?rrzTest � )�endrrc���|jdd�jdd�}|jdd�jdd�}|jdd�jdd�}|S)Nz''�SingleQuotez""�DoubleQuote�'r��")r�)�vals r�	FixQuotesz-IBMTestCases.eval_equation.<locals>.FixQuotesis^���+�+�d�M�2�:�:�4��O�C��+�+�c�2�&�.�.�s�B�7�C��+�+�m�S�1�9�9�-��M�C��Jr(�rescaler�r )r�r�zDid not raise z in zRaised z when z	 disabledz; expected rzERROR:��keyzIncorrect answer for z -- got zIncorrect flags set in )&�TEST_ALL�randomr%�clear_flagsr	r
�DEBUG�printr�	TypeError�AttributeError�
IndexErrorrr�r�r�rr!r�r2r-�	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�theirexceptionsr��ir"r��error�e�ordered_errors�result�myexceptionss                         rrzIBMTestCases.eval_equationUs����F�M�M�O�d�2����� � �"�	0��G�G�D�M�E��a���� �&�&�(�A��1��B���g�r�s�+��a�D�J�J�L�E����u�H��a���� �&�&�(�A��A�$�C��1�2��J�	���&�&�&��� � �$�$�U�E�2���I�������e�,��������?I�J�!�4�?�?�1�7�7�9�5�J��J� ����.�	.�I�,-�D�L�L���y�)�	.�(�	.�I�,-�D�L�L���y�)�	.���)�	�F�A�s��y�y��~��!�Q�&��E�	���+�c�1�C�7���"�S�(��!���#��A��:�:�$�!0�6��45����*�*�5�1�M�!�$�,�,�"=�"=�a�"@�A�!�I�I�%��&K�L�45����*�*�5�1�6��L�L�/�/��2���'�'��4�<�<�8���K�K��N�7	�:��n����.P�!P�(�
.��,-����"�"�5�)�E��4�L��I�I�%��C�D�,-����"�"�5�)�
.�*8����)E�^�A��o�I]�a�^�N�^�'�

E��,-����"�"�5�)�E��4�L��I�I�%��C�D�

E�(�
.��,-����"�"�5�)�
.���$����%�	�����&�F���-�-�-��S��f��.�/���)�)�+�����d��#������&������0�1�4�z�A�F�J�	L�	
�����'�!�+�j�8�3�|�;L�L�	N��W�>�:�6�	0��,�,�/�/�/�	0��$K��, %�!� �&�t�|�|�4�5� �I�I�'(�!�U�'4�5�5��5��$����t�|�|�,�-��I�I� �!�U�,�-�-��-��_��
����t�|�|�,�3��I�I�#�A�w��5�2�3�3��3�� �t�|�|�$�	6��I�I�5�!�4�5�5��	��(�A���s��BQ!�$R�!R�S� 	T �*T �T%�*9U3�!+R�S�S�1S�S�T�"T�7T�T�%U0�-U0�#U+�+U0�3V8�	V&�&V8c��t|jD�cgc]}|jj|s�|�� c}Scc}wr)r2rr%�flags)r�rHs  rr7zIBMTestCases.getexceptions�s0��"�4�<�<�0�J�a�D�L�L�4F�4F�q�4I��J�J��Js�<�<c��|jtk(r5|jjdk(r|jj	|�y||j_y�Nr�)rr��MAX_PRECr%r�r+)r�r+s  rr�zIBMTestCases.change_precision�s=���<�<�1�����!6�!6�)�!C��L�L�(�(��.� $�D�L�L�r(c�&�||j_yr)r%r,)r�r,s  rr�z#IBMTestCases.change_rounding_method�s�� (����r(c��|jtk(r5|jjdk(r|jj	|�y||j_yrO)rr�rPr%r��Emin�r��exps  rr�z IBMTestCases.change_min_exponent��=���<�<�1�����!6�!6�)�!C��L�L�(�(��-� #�D�L�L�r(c��|jtk(r5|jjdk(r|jj	|�y||j_yrO)rr�rPr%r��EmaxrTs  rr�z IBMTestCases.change_max_exponent�rVr(c�&�||j_yr)r%ra)r�ras  rr�zIBMTestCases.change_clamp�s��"����r(N)r��
__module__�__qualname__�__doc__r�r�rr�rrr7r�r�r�r�r�rr(rr;r;�sH��I�K1�Z4�e�)�$�~N�@K�%�
)�$�
$�
#r(r;c��eZdZdZd�Zd�Zd�Zd�Zee	�e
je��d����Z
d�Zd	�Zd
�Zd�Zed��Zd
�Zd�Zd�Zy)�ExplicitConstructionTestz6Unit tests for Explicit Construction cases of Decimal.c�j�|jj}|j|�|d��y)N�0�rr�r:�r�r�s  r�test_explicit_emptyz,ExplicitConstructionTest.test_explicit_empty�s'���,�,�&�&�������G�C�L�1r(c�^�|jj}|jt|d�yr)rr��assertRaisesr,rbs  r�test_explicit_from_Nonez0ExplicitConstructionTest.test_explicit_from_None�s#���,�,�&�&�����)�W�d�3r(c	��|jj}|d�}|jt|�d�|d�}|jt|�d�|d�}|jt|�d�|d�}|jt|�d�t	dd	�D]Q}d
D]J}t	dd�D]9}|d
|z|zz}||�}|jt|�t|���;�L�Sy)N�-�45�{e��	500000123�����-45rr`� ����r����r)rr�r:r5�range)r�r�r�n�signrrFs       r�test_explicit_from_intz/ExplicitConstructionTest.test_explicit_from_int�s����,�,�&�&��
�B�K������Q���&�
�I�������Q���-�
�C�L������Q���'�
�A�J������Q���%��q�"��	5�A��
5���r�1��5�A���1��q��)�A���
�A��$�$�S��V�S��V�4�5�
5�	5r(c
��|jj}|jj}|jj}|j	t|d��d�|j	t|d��d�|j	t|d��d�|j	t|d��d�|j	t|d��d�|j	t|d��d	�|j	t|d
��d�|j	t|d��d
�|j	t|d��d�|j	t|d��d�dD]0}dD])}|j	t||dz|z��d��+�2|�5}d|j|<|j||d�|jt|ddd�|j||d�|j||d�|j||d�|j||d�|j||d�|j||d�ddd�y#1swYyxYw)Nr��NaNri�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��localcontextr:r5r-rer,)r�r�r�r��lead�trail�cs       r�test_explicit_from_stringz2ExplicitConstructionTest.test_explicit_from_strings[���,�,�&�&���<�<�8�8���|�|�0�0��	
����W�R�[�)�5�1�	
����W�T�]�+�T�2�	
����W�W�-�.��8�	
����W�V�_�-�x�8�	
����W�V�_�-�u�5�	
����W�Z�0�1�8�<�����W�Y�/�0�'�:�����W�]�3�4�i�@�	
����W�[�1�2�J�?�����W�Y�/�0�&�9�2�	.�D�6�
.��� � ��W�T�K�-?�%�-G�%H�!I�!,�.�
.�	.�
�^�	H�q�(,�A�G�G�$�%����.���?����i��&�#�s�C�
���.��9J�K����.��9O�P�
���.���B����.���H�
���.���E�
���.���G�'	H�	H�	H�s
�	B.J�J	��categoryc�$�ddl}|jj}|jj�}|j	d�}|jt
||��d�|jt
|j|��d�y)Nr�9.999999)�	_testcapirr�r.�unicode_legacy_stringr:r5r�)r�r�r�r%rs     r�test_from_legacy_stringsz1ExplicitConstructionTest.test_from_legacy_stringsMsp��	��,�,�&�&���,�,�&�&�(���+�+�J�7������W�Q�Z��*�5�����W�3�3�A�6�7��Dr(c���|jj}|d�}|jt|�d�|d�}|jt|�d�|d�}|jt|�d�|d�}|jt|�d�|d	�}|jt|�d
�|j	t
|d�|j	t
|d�|j	t
|d
�|j	t
||d�ddf�|j	t
|d�|j	t
|d�|j	t
|d�|j	t
|d�|j	t
|d�|j	t
|d�|j	t
|d�|j	t
|d�y)N�r�rrr`�r)�rrrrm�r�r�rr�r����ry�r�	r�r�r�r*rr�rrr�r�����-4.34913534E-17)rr�F�Infinity)r�r�r�r�r*r)�r�r)�r�rrr�r)rr�zwrong!)rr�r�)rr��1)rrr)r)r�r�r�Nrr)r)r����r�r*rr)r)r��
r�r*rr)r)r�r�r��arr)rr�r:r5rer�r�r�rs   r�test_explicit_from_tuplesz2ExplicitConstructionTest.test_explicit_from_tuplesYs����,�,�&�&��
�\�#������Q���%�
�^�%������Q���'�
�*�,������Q���)�
�:�<������Q��!2�3�
�\�#������Q���,�	
���*�g�/C�E�	
���*�g�/F�H����*�g�/G�I����*�g���
�O�Q�/O�P�	
���*�g�/M�O����*�g�/G�I����*�g�/H�J�	
���*�g�}�>����*�g�/I�K����*�g�/G�I����*�g�/G�I����*�g�/H�Jr(c�h�|jj}|ddgdg�}|jt|�d�|dgd�dg�}|jt|�d�|gd��}|jt|�d�|dgd�df�}|jt|�d�y)Nrr`rr�r�r�r��rr�r:r5r�s   r�test_explicit_from_listz0ExplicitConstructionTest.test_explicit_from_list�s����,�,�&�&���Q���Q�K� ������Q���%��Q�3�S�9�:������Q��!2�3��9�:������Q��!2�3��Q�3�S�9�:������Q��!2�3r(c�,�|jj}|jt|d��d�|jt|d��d�|j	|d�|d��|j	|d�|d��y)NrFrT)rr��assertIs�boolr:rbs  r�test_explicit_from_boolz0ExplicitConstructionTest.test_explicit_from_bool�so���,�,�&�&���
�
�d�7�1�:�&��.��
�
�d�7�1�:�&��-����������4���������
�3r(c��|jj}|d�}||�}|jt|�d�|d�}||�}|jt|�d�|d�}||�}|jt|�d�|d�}||�}|jt|�d�y)	Nrhrirjrkrlrmrr`r��r�r�rrHs    r�test_explicit_from_Decimalz3ExplicitConstructionTest.test_explicit_from_Decimal�s����,�,�&�&��
�B�K���A�J������Q���&�
�I����A�J������Q���-�
�C�L���A�J������Q���'�
�A�J���A�J������Q���%r(c	�J�|jj}|d�}|jt|�|�|jt	|�d�|j|t
d��j��|j|t
d��j��|j|t
d��j��|jt	|t
d���t	|d���|jt	|t
d���t	|d���|jt	|t
d���t	|d���|jt	|t
d	���t	|d
���td�D]S}tjd�tj�d
zdz
z}|j|t
||����Uy)N皙�����?�90.1000000000000000055511151231257827021181583404541015625�nan�inf�-infrxr��	-Infinity�-0.0�-0���{�G�z�?�@��?)rr�r:r4r5r"�floatr�rrsr(�expovariate)r�r��rrFrs     r�test_explicit_from_floatz1ExplicitConstructionTest.test_explicit_from_float�s����,�,�&�&���C�L������a��'�*�����Q��K�	M������e��-�5�5�7�8������e��-�9�9�;�<������f�
�.�:�:�<�=�����W�U�5�\�2�3��W�U�^�,�	.�����W�U�5�\�2�3��W�Z�0�1�	3�����W�U�6�]�3�4��W�[�1�2�	4�����W�U�6�]�3�4��W�T�]�+�	-��s��	3�A��"�"�4�(�F�M�M�O�c�,A�C�,G�H�A����Q��g�a�j� 1�2�	3r(c	�f
�|jj}|jj}|jj}t	j|jj��}d|_|�}|jt|�d�|j�}|jt|�d�|jt|jd�|jd�}|j||�|j|jd�|jd��|d�}|jt|�d�|jd�}|jt|�d�|jt|jd��d	�|d
�}|jt|�d�|jd
�}|jt|�d�|d
�}||�}|jt|�d�|j|�}|jt|�d�d|_d|j|<dD]I}|j|�}|jt||��|jt!|�|��Kd|_d|j|<|j||jd�d|_|jt|jd��d�|jt|jd��d�|jt|jd��d�|jt|jd��d�|j||jd�|jt"|jd�|jt|jdd�|j||jd�|j||jd�d|_|j||jd �|j||j|d ��d!|j|<|jt|jd ��d	�|j|j$|�d!|j$|<|jt|j|d ���d	�|j|j$|�y)"Nr�r`��in�z457E+2�456789z4.57E+5z3.14
rxr�r�z	-4.35E-17rjrkz5.00E+8�T)	l����l����l����i�r��l��������z0E-017z0E-17ri�-Infr��NaN123r)rrr�r��5678z 1234�12_34�NaN12345F)rr�r�r�rn�
getcontextr+r:r5r�rer,�assertIsInstancer-r"�
isinstancerrrM)r�r�r�r��ncr�prevdecr�s        r�$test_explicit_context_create_decimalz=ExplicitConstructionTest.test_explicit_context_create_decimal�s\���,�,�&�&���<�<�8�8���,�,�&�&��
�Y�Y�t�|�|�.�.�0�
1�����
�I������Q���%����������Q���%�	
���)�R�%6�%6��=�
���c�"�����a��)�����*�*�5�1��*�*�8�4�	6�
�H�������Q���*����h�'������Q���+�	
����R�.�.�x�8�9�5�A�
�:�<������Q��!2�3����D�F������Q���-��)�$���G�������Q���-����g�&������Q���+����%)����!�"�3�	(�A��!�!�!�$�A��O�O�J�q�'�2�3����S��V�Q�'�		(���� ���������'�2�#4�#4�d�;��������R�.�.�x�8�9�7�C�����R�.�.�t�4�5�t�<�����R�.�.�v�6�7��E�����R�.�.�x�8�9�8�D�	
���*�B�,=�,=�u�E����*�b�&7�&7��I����)�R�%6�%6���G����*�B�,=�,=�w�G����*�B�,=�,=�w�G�������*�B�,=�,=�z�J����*�B�,=�,=�!�*�-�	/�&+����!�"�����R�.�.�z�:�;�U�C�������!1�2�3�%*����!�"�����R�.�.�w�z�/B�C�D�e�L�������!1�2�3r(c	�v�|jj}|jj�}|jd�}|j	t|�|�|j	t
|�d�|j|jtd��j��|j|jtd��j��|j|jtd��j��|j	t
|jtd���t
|jd���|j	t
|jtd���t
|jd���|j	t
|jtd���t
|jd���|j	t
|jtd	���t
|jd
���d|_td�D]\}tjd
�tj�dzdz
z}|j	|t|j|����^y)Nr�z0.1000000000000000055511151231r�r�r�rxr�r�r�r��dr�r�r�r�)rr�r.r�r:r4r5r"r�r�rr+rsr(r�)r�r�r�r�rFrs      r�'test_explicit_context_create_from_floatz@ExplicitConstructionTest.test_explicit_context_create_from_float#s���,�,�&�&��
�\�\�
!�
!�
#�����c�"������a��'�*�����Q��!A�B�����)�)�%��,�7�?�?�A�B�����)�)�%��,�7�C�C�E�F�����)�)�%��-�8�D�D�F�G�����R�.�.�u�U�|�<�=��R�.�.�u�5�6�	8�����R�.�.�u�U�|�<�=��R�.�.�z�:�;�	=�����R�.�.�u�V�}�=�>��R�.�.�{�;�<�	>�����R�.�.�u�V�}�=�>��R�.�.�t�4�5�	7�����s��	=�A��"�"�4�(�F�M�M�O�c�,A�C�,G�H�A����Q��b�&7�&7��&:� ;�<�	=r(c��|jj}dddd�}|j�D]&\}}|jt	||��|��(y)Nr�z	0.0000372z-NaN2400)u1u٠.٠٣٧٢e-٣u-nan౨౪౦౦)rr��itemsr:r5)r�r��test_values�inputrs     r�test_unicode_digitsz,ExplicitConstructionTest.test_unicode_digits;sZ���,�,�&�&���8C�-7���
 +�0�0�2�	<�O�E�8����S����0�(�;�	<r(N)r�rZr[r\rcrfrvr�r
rr�ignore_warnings�DeprecationWarningr�r�r�r�r�rr�r�r�r�rr(rr^r^�s���@�2�4�5�66H�p�!�#�$�_�$�$�.@�A�E�B�$��E�)K�V
4�4�&�.�3��3�.W4�r=�0	<r(r^c��eZdZeZy)�CExplicitConstructionTestN�r�rZr[r�rrr(rr�r�F����Gr(r�c��eZdZeZy)�PyExplicitConstructionTestN�r�rZr[�Prrr(rr�r�I����Gr(r�c�4�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	y)	�ImplicitConstructionTestz6Unit tests for Implicit Construction cases of Decimal.c�x�|jj}|jttdt��y)NzDecimal(5) + None�rr�rer,r6�localsrbs  r�test_implicit_from_Nonez0ImplicitConstructionTest.test_implicit_from_NoneOs(���,�,�&�&�����)�T�+>���Ir(c��|jj}|jt|d�dz�d�|j|d�dz|d��y)Nrrrh�50l2}rr�rbs  r�test_implicit_from_intz/ImplicitConstructionTest.test_implicit_from_intSsN���,�,�&�&��	
����W�Q�Z�"�_�-�t�4�������l�2�G�L�4I�Jr(c�x�|jj}|jttdt��y)NzDecimal(5) + "3"r�rbs  r�test_implicit_from_stringz2ImplicitConstructionTest.test_implicit_from_string[�(���,�,�&�&�����)�T�+=�v�x�Hr(c�x�|jj}|jttdt��y)NzDecimal(5) + 2.2r�rbs  r�test_implicit_from_floatz1ImplicitConstructionTest.test_implicit_from_float_r�r(c�~�|jj}|j|d�|d�z|d��y)Nrrrh�2rarbs  r�test_implicit_from_Decimalz3ImplicitConstructionTest.test_implicit_from_Decimalcs2���,�,�&�&��������g�b�k�1�7�2�;�?r(c�"���|jj}Gd�d�}|jt|�|d��d�|jt|d�|��d�|jt	d�d�|jt	d�d	�|jt	d
�d�|jt	d�d
�|jt	d�d�|jt	d�d�gd�}|D]t\}��t|��fd��t|��fd��|jt	d|zdz�d�zdz�|jt	d|zdz�d�zdz��vy)Nc�<�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�,ImplicitConstructionTest.test_rop.<locals>.Ec��dt|�zS)Nzdivmod �r5�r��others  r�
__divmod__z7ImplicitConstructionTest.test_rop.<locals>.E.__divmod__ls�� �3�u�:�-�-r(c��t|�dzS)Nz rdivmodr�r�s  r�__rdivmod__z8ImplicitConstructionTest.test_rop.<locals>.E.__rdivmod__ns���5�z�J�.�.r(c��dt|�zS)Nzlt r�r�s  r�__lt__z3ImplicitConstructionTest.test_rop.<locals>.E.__lt__p����s�5�z�)�)r(c��dt|�zS)Nzgt r�r�s  r�__gt__z3ImplicitConstructionTest.test_rop.<locals>.E.__gt__rrr(c��dt|�zS)Nzle r�r�s  r�__le__z3ImplicitConstructionTest.test_rop.<locals>.E.__le__trr(c��dt|�zS)Nzge r�r�s  r�__ge__z3ImplicitConstructionTest.test_rop.<locals>.E.__ge__vrr(c��dt|�zS)Nzeq r�r�s  r�__eq__z3ImplicitConstructionTest.test_rop.<locals>.E.__eq__xrr(c��dt|�zS)Nzne r�r�s  r�__ne__z3ImplicitConstructionTest.test_rop.<locals>.E.__ne__zrr(N)r�rZr[r�rrrrr
rrrr(r�Er�ks*��
.�
/�
*�
*�
*�
*�
*�
*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�Nr5r�)r�r��lops  �rrz3ImplicitConstructionTest.test_rop.<locals>.<lambda>�s������c�%�j�0H�r(c�&��t|��zdzSr$r�)r�r��rops  �rrz3ImplicitConstructionTest.test_rop.<locals>.<lambda>�s����E�
�S�0@�5�0H�r(zE()zDecimal(10)r5�10)rr�r:�divmodr6�setattr)r�r�r�oplist�symr%r's     @@r�test_ropz!ImplicitConstructionTest.test_ropgsi����,�,�&�&��	*�	*�$	
������W�R�[�1�;�?��������Q�S�1�<�@�����1�2�G�<�����1�2�G�<�����2�3�W�=�����2�3�W�=�����2�3�W�=�����2�3�W�=�
��$�	1�M�C��c��A�s�H�I��A�s�H�I����T�%�#�+�
�"=�>�"�S�[�4�/�
1����T�-�#�"5��"=�>�!�C�Z�%�/�
1�	1r(N)
r�rZr[r\r�r�r�r�r�r-rr(rr�r�Ls(��@�J�K�I�I�@�01r(r�c��eZdZeZy)�CImplicitConstructionTestNr�rr(rr/r/�r�r(r/c��eZdZeZy)�PyImplicitConstructionTestNr�rr(rr1r1�r�r(r1c�L�eZdZdZd�Zd�Zd�Zd�Zedd�d��Z	d	�Z
y
)�
FormatTestz#Unit tests for the format function.c���|jj}gd�}|D](\}}}|jt||�|�|��*|j	t
|d�jd�y)N)�)rH�0E-15z0e-15)rHz2.3E-15z2.3e-15)rHz2.30E+2z2.30e+2)rHz2.30000E-15z2.30000e-15)rHz1.23456789123456789e40z1.23456789123456789e+40)rH�1.5z1.5e+0)rHz0.15z1.5e-1)rHz0.015z1.5e-2)rHz0.0000000000015z1.5e-12)rHz15.0z1.50e+1)rH�-15z-1.5e+1)rHr`z0e+0)rH�0E1�0e+1)rH�0.0z0e-1)rH�0.00�0e-2)�.6er5z0.000000e-9)r=r`z0.000000e+6)r=r�z9.999999e+0)r=z	9.9999999z1.000000e+1)r=z-1.23e5z-1.230000e+5)r=z
1.23456789e-3z1.234568e-3)r�r`r`)r�r:r:)r��0E-2r;)r�z0.00E-8z0.0000000000)r�r8r`)r�z3.2E1�32)r�z3.2E2�320)r�z3.20E2r@)r�z3.200E2z320.0)r�z3.2E-6z	0.0000032)�.6fr5�0.000000)rAr8rB)rAr`rB)�.0fr`r`)rCr<r`)rC�
3.14159265�3)�.1frD�3.1)z.4frD�3.1416)rArD�3.141593)z.7frD�	3.1415926)z.8frDrD)z.9frDz3.141592650)�gr`r`)rKr:r:)rKr8r9)�Gr8z0E+1)rKz0E-5z0.00000)rKz0E-6rB)rKz0E-7z0e-7)rKz-0E2z-0e+2)�.0grDrE)z.0nrDrE)z.1grDrE)z.2grDrG)z.5grDrH)z.7grDrI)z.8grDrJ)z.9grDrD)z.10grDrD)rr8�0%)r�0E0rN)rz0E-1rN)rr>rN)rz0E-3z0.0%)rz0E-4z0.00%)�.3%r`�0.000%)rP�0E10rQ)rPz0E-10rQ)rPz2.34z234.000%)rPz1.234567z123.457%)�.0%�1.23z123%)rHrxrx)r��-NaN123rU)z+g�NaN456z+NaN456)z.3e�Infr�)z.16fr�r�)rM�-sNaNrX)r��1.00rY)�6�123�   123)z<6r[z123   )z>6r[r\)z^6r[z 123  )z=+6r[z+  123)�#<10rxz
NaN#######)r]z-4.3z
-4.3######)z#<+10�0.0130z
+0.0130###)z#< 10r^z
 0.0130###)z@>10r�z
@-Infinity)z#>5r�r�)z?^5r[z?123?)z%^6r[z%123%%)z ^6�-45.6z-45.6 )z/=10r_z
-/////45.6)z/=+10�45.6z
+/////45.6)z/= 10r`z
 /////45.6)z=10r�z
-Infinity)z^16r�z-Infinity)z>10�1.2345z
1.2345)z<10raz
1.2345)�,�1234567z	1,234,567)rb�123456�123,456)rb�12345�12,345)rbr�z1,234)rbr[r[)rb�12rh)rbr�r�)rbr`r`)rbz-1234567z
-1,234,567)rb�-123456�-123,456)z7,rdre)z8,rd� 123,456)�08,rdz	0,123,456)z+08,rdz+123,456)z 08,rdrk)rlrirj)z+09,rdz
+0,123,456)z07,�1234.56�1,234.56)rlrmrn)z09,rmz	01,234.56)z010,rmz
001,234.56)z011,rm�0,001,234.56)z012,rmro)z08,.1fz1234.5z01,234.5)rb�
1.23456789rp)z,%z
123.456789z12,345.6789%)z,erdz
1.23456e+5)z,Erdz
1.23456E+5)rFr�r�)rFz-.0r�)rF�-.01r�)�z.1f�0.r:)�z6.1frsz   0.0)rt�-1.z  -1.0)rr�-0.r:)rr�.01r:)rrrqr:)�z.2frsr;)rxrvr;)rxz.001r;)rxz-.001r;)�z.1ers�0.0e+1)ryrvrz)�z.1Ers�0.0E+1)r{rvr|)zz.2e�-0.001z-1.00e-3)zz.2gr}r})zz.2%r}z-0.10%)�zfz-0.0000z0.0000)rr�
-00000.000001r:)rr�-00000.r:)rr�-.0000000000r:)rxrr;)rxr�r;)rxr�r;)rrz.09�0.1)rrz-.09z-0.1)� z.0frvz 0)�+z.0frvz+0)�-z.0frvr`)r�ru�-1)r�rur�)r�rur�)zz>6.1frvzzz-0.0)zz>z6.1frvzzzz0.0)zx>z6.1frvzxxx0.0)u
🖤>z6.1frvu🖤🖤🖤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�r:�formatrer,�
__format__)r�r�r��fmtrrJs      r�test_formattingzFormatTest.test_formatting�sj���,�,�&�&��G��P*�	>�N�C��F����V�G�A�J��4�f�=�	>�	
���)�W�Q�Z�%:�%:�G�Dr(c���|jj�5}t|_|j	t|jj
d�d�d�ddd�y#1swYyxYw)Nr}rxr;)rr�r�r,r:r�r��r��ctxs  r�+test_negative_zero_format_directed_roundingz6FormatTest.test_negative_zero_format_directed_roundingssY��
�\�\�
&�
&�
(�	$�C�(�C�L����V�D�L�L�$8�$8��$B�F�K�"�
$�	$�	$�	$�s�AA%�%A.c�n�|jtt|jj	d�d�y)NrT�fz)rerr�rr�r�s r�test_negative_zero_bad_formatz(FormatTest.test_negative_zero_bad_formatys%�����*�f�d�l�l�.B�.B�6�.J�D�Qr(c����	��jj�		ddlm}�fd�}d>�	�fd�	}d|gd��dd	�}d|g�d
d	�}d|gd��dd	�}d|d
dd|g�dd	�}dj
d�|gd��dj
d�d	�}�j|�	d�|�d��j|�	d�|�d��j|�	d�|�d��j|�	d�|�d��j|d|�d��j|d|�d��j|d|�d��j|d|�d��j|d|d�d��j|d|d�d��j|d|d�d��j|d|d�d ��j|d!|d"�d#��j|d!|d$�d#��j|d!|d%�d&��j|d!|d'�d(��j|d)|d%�d*��j|d)|d'�d*��j|d)|d+�d,��j|d)|d-�d.��j|d)|d/�d.��j|d)|d0�d1��j|d2|d'�d3��j|d2|d+�d3��j|d2|d-�d3��j|d2|d/�d4��j|d2|d0�d5��j|d2|d6�d5��j|d2|d7�d8��j|d2|d9�d:��j|�	d;�|d<�d=�y#t$r�jd�Y���wxYw)?Nr��CHAR_MAX�locale.CHAR_MAX not availablec����jtk(r(dj|D�cgc]
}t|���c}�S|Scc}w�Nr�)rr��join�chr)�lstrr�s  �r�
make_groupingz/FormatTest.test_n_format.<locals>.make_grouping�s4���59�\�\�Q�5F�2�7�7�C�0�q�C��F�0�1�O�C�O��0s�?c����jtk(r�|�j||�S�|�j||��S)N)�_localeconv)rr�r�)r�overrider�r�r�s   ��r�get_fmtz)FormatTest.test_n_format.<locals>.get_fmt�s@����|�|�q� ��q�z�,�,�S�(�;�;��q�z�,�,�S�h�,�G�Gr(�.�r�r�rrb��
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�90rg�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�Nrt)rr��localer��ImportError�skipTest�decoder:)
r�r�r�r��en_US�fr_FR�ru_RU�crazy�dotsep_wider�s
`        @r�
test_n_formatzFormatTest.test_n_format|s�����,�,�&�&��	;�'�	P�	H�"�&�y�1�!���"�&��z�2� ���"�%�i�0�!���"�%�q�!�Q��&9�:�!���*�0�0��9�%�i�0�)�0�0��9���	
�������%�8�&�A��������%�8�&�A��������%�8�&�A��������%�8�'�B������E�2�M�B������E�2�K�@������E�2�M�B�������6�8J�K������E�5�9�<�H������E�5�9�<�H������E�5�9�<�H������E�5�9�<�H�	
�����u�e�4�f�=������u�e�4�f�=������u�e�4�g�>������u�e�4�h�?�������u�5�x�@�������u�5�x�@�������u�5�y�A�������u�5�{�C�������u�5�{�C�������v�6��E��������6�
�C��������6�
�C��������6�
�C��������6��D��������7��G��������7��G��������7��H��������7��I�	
�������+�v�F�H�	J��c�	;��M�M�9�:�	;�s�O�O,�+O,�LC_ALL�ps_AFc�h�|jj}tj�d}tj�d}|dk7r!|j	dj|d��|dk7r!|j	dj|d��|j
t|d�d�d	�y)
Nr�r�u٫z5inappropriate decimal point separator ({!a} not {!a})u٬z1inappropriate thousands separator ({!a} not {!a})z
100000000.123rtu100٬000٬000٫123)rr�r��
localeconvr�r�r:)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�
M��H�$��M�M�,�,2�F�=�(�,K�
M�	
������ 8�#�>�9�	;r(c�F�Gd�d|jj�}|jd�}|j|jj|j�|jd�}|j|jj|j�y)Nc��eZdZd�Zy)�;FormatTest.test_decimal_from_float_argument_type.<locals>.Ac�$�t|�|_yr)r4�a_type)r�r�s  r�__init__zDFormatTest.test_decimal_from_float_argument_type.<locals>.A.__init__�s
��"�1�g��r(N�r�rZr[r�rr(r�Ar��s��
&r(r�g@E@�*)rr��
from_floatr:r�)r�r�r�s   r�%test_decimal_from_float_argument_typez0FormatTest.test_decimal_from_float_argument_type�sr��	&����$�$�	&�
�L�L����������-�-�q�x�x�8�
�L�L����������-�-�q�x�x�8r(N)r�rZr[r\r�r�r�r�r	r�r�rr(rr3r3�s@��-�PE�d$�R�WJ�r�X�w�'�;�(�;� 9r(r3c��eZdZeZy)�CFormatTestNr�rr(rr�r��r�r(r�c��eZdZeZy)�PyFormatTestNr�rr(rr�r��r�r(r�c�R�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zy
)�ArithmeticOperatorsTestz:Unit tests for all arithmetic operators, binary and unary.c�4�|jj}|d�}|d�}|j||z|d��|j||z|d��|dz}|j||d��|jt|�t|��d|z}|j||d��|jt|�t|��||z
}|j||d��|dz
}|j||d��y)N�-11.1�22.2z11.1rrz-6.1�16.1�rr�r:r4�r�r��d1�d2r�s     r�
test_additionz%ArithmeticOperatorsTest.test_addition�s���,�,�&�&��
�W�
��
�V�_��	
����B�����0�����B�����0�
��F������G�F�O�,�����a��$�r�(�+�
��F������G�F�O�,�����a��$�r�(�+�	�b�������W�V�_�-�	�a�������W�V�_�-r(c�4�|jj}|d�}|d�}|j||z
|d��|j||z
|d��|dz
}|j||d��|jt|�t|��d|z
}|j||d��|jt|�t|��||z}|j||d��|dz}|j||d��y)	Nr�r�z-33.3z33.3rrz-16.1r�z-38.3r�r�s     r�test_subtractionz(ArithmeticOperatorsTest.test_subtractions���,�,�&�&��
�W�
��
�V�_��	
����B���� 0�1�����B�����0�
��F������G�G�,�-�����a��$�r�(�+�
��F������G�F�O�,�����a��$�r�(�+�	�b�������W�W�-�.�	�a�������W�W�-�.r(c�4�|jj}|d�}|d�}|j||z|d��|j||z|d��|dz}|j||d��|jt|�t|��d|z}|j||d��|jt|�t|��||z}|j||d��|dz}|j||d��y)N�-5rEr7rrz-25z-75r�r�s     r�test_multiplicationz+ArithmeticOperatorsTest.test_multiplication1s���,�,�&�&��
�T�]��
�S�\��	
����B�����/�����B�����/�
��F������G�E�N�+�����a��$�r�(�+�
��F������G�E�N�+�����a��$�r�(�+�	�b�������W�U�^�,�	�a�������W�U�^�,r(c�4�|jj}|d�}|d�}|j||z|d��|j||z|d��|dz}|j||d��|jt|�t|��d|z}|j||d��|jt|�t|��||z}|j||d��|dz}|j||d��y)	Nr��2�-2.5z-0.4r�z-1.25z-0.8z-0.625r�r�s     r�
test_divisionz%ArithmeticOperatorsTest.test_divisionMs���,�,�&�&��
�T�]��
�S�\��	
����B�����0�����B�����0�
��F������G�G�,�-�����a��$�r�(�+�
��F������G�F�O�,�����a��$�r�(�+�	�b�������W�V�_�-�	�a�������W�X�.�/r(c�4�|jj}|d�}|d�}|j||z|d��|j||z|d��|dz}|j||d��|jt|�t|��d|z}|j||d��|jt|�t|��||z}|j||d��|dz}|j||d��y)N�5r�r`r�r��rr�r�s     r�test_floor_divisionz+ArithmeticOperatorsTest.test_floor_divisionis���,�,�&�&��
�S�\��
�S�\��	
����R�����.�����R�����.�
�!�G������G�C�L�)�����a��$�r�(�+�
��G������G�C�L�)�����a��$�r�(�+�	�r�	������W�S�\�*�	�q�������W�S�\�*r(c�4�|jj}|d�}|d�}|j||z|d��|j||z|d��|dz}|j||d��|jt|�t|��d|z}|j||d��|jt|�t|��||z}|j||d��|dz}|j||d	��y)
Nr�r��25r?r��625r��16807�390625r�r�s     r�
test_poweringz%ArithmeticOperatorsTest.test_powering�s���,�,�&�&��
�S�\��
�S�\��	
����R�����/�����R�����/�
�!�G������G�E�N�+�����a��$�r�(�+�
��G������G�G�,�-�����a��$�r�(�+�	�r�	������W�T�]�+�	�q�������W�X�.�/r(c�4�|jj}|d�}|d�}|j||z|d��|j||z|d��|dz}|j||d��|jt|�t|��d|z}|j||d��|jt|�t|��||z}|j||d��|dz}|j||d��y�Nr�r�r�r�r�r�r�s     r�test_modulez#ArithmeticOperatorsTest.test_module�s���,�,�&�&��
�S�\��
�S�\��	
����B�����-�����B�����-�
��F������G�C�L�)�����a��$�r�(�+�
��F������G�C�L�)�����a��$�r�(�+�	�b�������W�S�\�*�	�a�������W�S�\�*r(c�z�|jj}|d�}|d�}t||�\}}|j||d��|j||d��|jt	|�t	|��|jt	|�t	|��t|d�\}}|j||d��|j||d��|jt	|�t	|��|jt	|�t	|��td|�\}}|j||d��|j||d��|jt	|�t	|��|jt	|�t	|��yr�)rr�r)r:r4)r�r�r�r��p�qs      r�test_floor_div_modulez-ArithmeticOperatorsTest.test_floor_div_module�s^���,�,�&�&��
�S�\��
�S�\����B����A�����G�C�L�)�����G�C�L�)�����a��$�r�(�+�����a��$�r�(�+���A����A�����G�C�L�)�����G�C�L�)�����a��$�r�(�+�����a��$�r�(�+���2����A�����G�C�L�)�����G�C�L�)�����a��$�r�(�+�����a��$�r�(�+r(c��|jj}|j|d��|d��|j|d�|d��|jt|d��t|d���y)Nrhrl)rr�r:�absrbs  r�test_unary_operatorsz,ArithmeticOperatorsTest.test_unary_operators�sg���,�,�&�&�����'�"�+��w�s�|�4����'�"�+��w�s�|�4�����W�R�[�)�3�w�s�|�+<�=r(c��|jj}|jj}|jj}|d�}|d�}|d�}|d�}||f||f||f||f||ff}||f||f||f||f||f||f||ff}	tj
tjtjtjf}
tjtjf}|�5}d|j|<||	zD]^\}
}|
|zD]Q}||
|�}|tjurdnd}|j||dj||j|
||���S�`	ddd�|�5}d	|j|<|D][\}
}|D]Q}||
|�}|tjurdnd}|j||dj||j|
||���S�]|	D]P\}
}|D]F}|j|tj|
|�|j|tj|
|��H�R||	zD] \}
}|
D]}|j|||
|���"	ddd�y#1swY��xYw#1swYyxYw)
Nrx�sNaNrWr�rTFz8expected {0!r} for operator.{1}({2!r}, {3!r}); got {4!r}r)rr�r�r��operator�lt�le�gt�ge�eq�ner-r�r�r�re)r�r�r�r�rtrrFr��
qnan_pairs�
snan_pairs�	order_ops�equality_opsr�rr��op�gotrs                  r�test_nan_comparisonsz,ArithmeticOperatorsTest.test_nan_comparisons�s����,�,�&�&���<�<�8�8���|�|�0�0���E�N���F�O���E�N���C�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�K����h�k�k�8�;�;�F�	��{�{�H�K�K�/���^�
	?�s�*+�C�I�I�&�'�"�Z�/�
?���1�#�l�2�?�B��Q��(�C�')�X�[�[�'8�t�e�H��M�M�(�C�!,�,2�F�$�b�k�k�1�a��->�?�?�
?�
	?��^�	B�s�*+�C�I�I�&�'�"�
?���1�&�?�B��Q��(�C�')�X�[�[�'8�t�e�H��M�M�(�C�#.�.4�f�$�b�k�k�1�a��/>�?�?�
?�#�
K���1�&�K�B��%�%�&6����Q��J��%�%�&6����Q��J�K�
K�
#�Z�/�
B���1�#�B�B��%�%�&6��A�q�A�B�
B�%	B�	B�
	?�
	?��	B�	B�s�0A6I-�6C-I:�-I7�:Jc��|jj}|d�j|d��}|j|d�jd�|�|j	t
|d�jd�y)Nrr��-2)rr�rur:rer,r�s   r�test_copy_signz&ArithmeticOperatorsTest.test_copy_signsd���,�,�&�&���A�J� � ����-��������-�-�b�1�1�5����)�W�Q�Z�%9�%9�4�@r(N)r�rZr[r\r�r�r�r�r�r�r�r�r�rrrr(rr�r��s?��D�.�8/�8-�80�8+�80�8+�8,�6>�8B�tAr(r�c��eZdZeZy)�CArithmeticOperatorsTestNr�rr(rrr r�r(rc��eZdZeZy)�PyArithmeticOperatorsTestNr�rr(rrr#r�r(rc
�\�|jj}|jj}|jj}|jj}|jj
}|jj}|jj}|jj}|d�}	|d�}
|	|
z}|jj�|jj�|	|
z}|�5}
|j|
j|�|j||
j |	d�|j|
j|�|�5}|j|j|�|j|j|�|j||j"|	|d��|j|j|�~ddd�|j%|
j|�~
ddd�|j'||d��|j'||d��|�}|j|j|�||||fD] }|j%|j|��"y#1swY��xYw#1swY��xYw)Nrr�rr�0.333333333333333333333333)rr�r�r�r�r�r�r�r��finish1r��synchro�waitr"rMre�divide�compare�assertFalser:)r$r�r�r�r�r�r�r�r�r��d3�test1�test2�c2�c3�c1�sigs                 r�thfunc1r&(s%���k�k�!�!�G��{�{�3�3���[�[�/�/�N��{�{�#�#�H����%�%�I��k�k�!�!�G����'�'�J��;�;�+�+�L�	���B�	���B��r�E�E��K�K�O�O���K�K�����r�E�E�	���2����r�x�x��(�)��������B��:����r�x�x��/�0�
�^�	�r��N�N�2�8�8�G�,�-��N�N�2�8�8�N�3�4����-�r�z�z�2�w�v��O��N�N�2�8�8�$4�5�6��	�	������!1�2�3����O�O�E�7�#?�@�A��O�O�E�7�#?�@�A�	��B��N�N�2�8�8�G�$�%���N�4D�D�'���������
�&�'�	�	��	��s&�A"J"�(BJ�('J"�J	�J"�"J+c	��|jj}|jj}|jj}|jj}|jj
}|jj}|jj}|jj}|d�}	|d�}
|	|
z}|�}d|_	|	|
z}
|�5}|j|j|�|j||j|d�d�|j|j|�||�5}|j|j|�|j|j|�d|j|<|j||j |d�d�|j|j|�~ddd�|j|j|�|j|j|�~ddd�|j"j%�|j&j%�|j)||d��|j)|
|d	��|j|j|�|j|j|�||||fD] }|j|j|��"y#1swY��xYw#1swY��xYw)
Nrr���1e425000000��Tz1e-425000000rz0.333333333333333333)rr�r�r�r�r�r�r�r�r+r"rMre�multiplyrr-rrr��finish2r:)r$r�r�r�r�r�r�r�r�r�rr �thiscontextr!r"r#r%s                 r�thfunc2r.Osp���k�k�!�!�G��{�{�3�3���[�[�/�/�N��{�{�#�#�H����%�%�I��k�k�!�!�G����'�'�J��;�;�+�+�L�	���B�	���B��r�E�E��,�K��K���r�E�E�	��
�2����r�x�x��(�)�����2�;�;��
�0F��L����r�x�x��)�*�
�+�
&�	�"��N�N�2�8�8�G�,�-��O�O�B�H�H�X�.�/�"&�B�H�H�Y�����Y��	�	�7�>�3J�C�P��N�N�2�8�8�I�.�/��
	�	�������+�,��������+�,��
��K�K�O�O���K�K�O�O���O�O�E�7�#?�@�A��O�O�E�7�#9�:�;��O�O�K�%�%�i�0�1��N�N�;�$�$�W�-�.���N�4D�D�0������)�)�#�.�/�0�'	�	��	
�
�s'� A)K<�	BK/�AK<�/K9	�4K<�<Lc��eZdZdZd�Zy)�
ThreadingTestz0Unit tests for thread local contexts in Decimal.c��|jj}|jtk(r'|jjs|j	d�|j
}|j}|j}d|_d|_d|_tj�|_
tj�|_tj�|_tjt|f��}tjt|f��}|j!�|j!�|jj#�|jj#�t$|jD] }|j'|j(|��"|j+�|j+�||_||_||_y)Nzcompiled without threading�r����)�targetr)r�DefaultContextr��HAVE_THREADSr�r+rXrS�	threading�Eventrrr,�Threadr&r.�startrr2rrMr�)r�r5�	save_prec�	save_emax�	save_emin�th1�th2r%s        r�test_threadingzThreadingTest.test_threading�sR�����4�4���<�<�1��T�\�\�%>�%>��M�M�6�7�#�'�'�	�"�'�'�	�"�'�'�	� ���'���(��� ���(��� ���(��� ���(������g�T�G�<�����g�T�G�<���	�	���	�	���������������4�<�<�(�	8�C����^�1�1�#�6�7�	8�	���
����
�'���'���'��r(N)r�rZr[r\r@rr(rr0r0|s
��:�
$(r(r0c��eZdZeZy)�CThreadingTestNr�rr(rrBrB�r�r(rBc��eZdZeZy)�PyThreadingTestNr�rr(rrDrD�r�r(rDc��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�
UsabilityTestz*Unit tests for Usability cases of Decimal.c�H�|jj}|d�}|d�}|d�}|j||�|j||�|j	||�|j||�|j
||�|j||�|j||�|j||�|j|d�|j	d|�|j
|d�|j|d�|j|d�|j|t��|j|t�tt|td���}|dd}tj|�|j�|j
||�y)Nz23.42ri�rhr{g�����Y@@r�)rr��
assertGreater�assertGreaterEqual�
assertLess�assertLessEqualr:�assertNotEqual�object�list�maprsr(�shuffler8)r�r��da�db�dcr��bs       r�test_comparison_operatorsz'UsabilityTest.test_comparison_operators�sg���,�,�&�&��
�W�
��
�W�
��
�T�]��	
���2�r�"�����B�'�����B�����R��$�����R� ����B��#����R��$�����B�'�	
���2�r�"�����B������R� �	
���B��'����B��%����B���)����B��'�
��W�e�C�j�)�*��
�q�T�����q��	��������A�r(c�0�|jj}|d�}|d�}|j|d�|j|d�|j	|d�|j|d�|j
|d�|j|d�|j	d|�|jd|�|jd|�|jd|�|j
d|�|jd|�|j
d|d��y)N�0.25�3.0�@��?g�?r�r�)rr�rKrLrIrJrMr:�r�r�rRrSs    r�test_decimal_float_comparisonz+UsabilityTest.test_decimal_float_comparison�s����,�,�&�&��
�V�_��
�U�^������C� ����R��%����2�t�$�����D�)����B��$�����T�"����3��#�����R�(�����b�!����T�2�&����D�"�%�����b�!����C����0r(c��|jj}|d�}|d�}|j|d�|jd|�|j|d�|jd|�|jd|�|j|d�|j|d�|jd|�|j	|jd�t�|j	|jd�t�|j	|jd�t�|j	|jd�t�y)NrXrYy�?y�?y@y@�?)	rr�rMr:r�r�NotImplementedrrr\s    r�test_decimal_complex_comparisonz-UsabilityTest.test_decimal_complex_comparison�s����,�,�&�&��
�V�_��
�U�^�����B��)����V�b�)�����g�'����'�B�'����&�2�&�����f�&����B��)����V�b�)��
�
�b�i�i��'��8��
�
�b�i�i��'��8��
�
�b�i�i��'��8��
�
�b�i�i��'��8r(c
��|jj}t|jj}|jj}|jj
}|jj}trtjnd}trtjnd}trtjnd}|||��}	||	�5||	_|j|d�|dd��|j|dd�|d��|j|dd�|d	t|�z��|j|d
t|�z�|dd��|j|dd�|d	t|�z��|j|d
t|�z�|dd��|j|d�|dd
��|j|dd
�|d��d|	_|j|d�dz|dd��|j|dd�|d�dz�|j!|dd�|dt|�z��|j#|dt|�z�|dd��|j%|d�|dd��|j%|d�|dd��|j|d�|dd��|j|d�|dd��|j'||d�j(|dd��|j+t,|dd�j/|d���|j|d�|dd��|j|dd�|d��ddd�y#1swYyxYw)N�ɚ;�6e�ilʈ�rXrSrrl	��Z��mH;5�Brp�1ez-1el��!�0QYr�r�i,r�i�6l�c(	�9er�l�g�]�{l�����g�]r�r�i����)rr�r�Fractionr.r�r�r�r��MIN_EMIN�	MIN_ETINYr+rKr5r:rMrLrJrIrerr�r_r)
r��Dr�r.r�r��emax�emin�etinyr�s
          r� test_decimal_fraction_comparisonz.UsabilityTest.test_decimal_fraction_comparison�s���L�L� � ���d�l�l�#�,�,���,�,�&�&���|�|�0�0���<�<�8�8���q�z�z�I���q�z�z�J�� ����k����D�)��
�!�_�	5��A�F��O�O�A�a�D�!�A�&K�"L�M��O�O�A�b�!F�G��1��N��O�O�A�a��F�A�d�S��Z�&7�$8�9��O�O�A�e�c�%�j�0�1�1�Q�q�6�:��O�O�A�a� 9�:�A�d�S��Z�>O�<P�Q��O�O�A�e�c�%�j�0�1�1�Q�7P�3Q�R����Q�u�X�q��2�w�/����Q�q��W�a��h�/��A�F�����!��Q���!�A��/�����!�A���!��Q��/�� � ��9�j�!9�1�T�C��I�=M�;N�O��#�#�A�d�S��Y�&6�$7��9�j�9Q�R����q��x��;�s�);�<����q��x��<��)<�=��O�O�A�f�I�q��S�'9�:��O�O�A�f�I�q��c�':�;����.��%�����2�c��K��M�M�.�!�B�s�)�*:�*:�1�U�8�*D�E�����%��!�B�s�)�4�����"�S�	�1�U�8�4�7	5�	5�	5�s
�K'O�O	c�$�|jj}|d�}tj|�}|jt	|�t	|��tj
|�}|jt	|�t	|��y)Nz43.24)rr�rnr:r=�deepcopy)r�r�rr�rTs     r�test_copy_and_deepcopy_methodsz,UsabilityTest.test_copy_and_deepcopy_methods)sf���,�,�&�&���G����I�I�a�L������A���1��&�
�]�]�1�
������B���A��'r(c����jj}�jj}�fd�}||d��||d��||d��||d��||d��dD���cgc]+}tdd	�D]}d
D]}||d|z|zz�����-}}}}|j	|d�|d
�|d�|d�|d�|d�|d�|d�|d�|d�|d�|d�|d�|d�|d�|d�g�|D],}�j||�t
t|����.gd�}	|	D]6}
t|
�}||
�}�j||�t
|���8|�5}
|d�}d|
_	||�}d	|
_	||�}d|
_	||�}�j||��j||�d |
_	d!d"z}�j|||��||��ddd�ycc}}}w#1swYyxYw)#Nc�b��t|�}|j�}�j||�|Sr)�hash�__hash__r:)rr�rUr�s   �r�hashitz.UsabilityTest.test_hash_method.<locals>.hashit7s,����Q��A��
�
��A����Q��"��Hr(rHr�r��nan123�-NaN)r������rn�!�=�>�?�@�A�B���r�rorr�r�r;z-0.000rRz-0E12�10.0z	-23.00000�1230E100z
-4.5678E50l��z	1.634E100z
90.697E100z
188.83E100z
1652.9E100�	56531E100)r�r�r:z-.0e1z34.0�2.5z
112390.625z	-0.515625z123456789.1�r|�'iLi�)
rr�r�rs�extendr:rurr�r+)r�r�r�rwr4rtrur�r�test_stringsrr�rr�r�h1�h2�h3s`                 r�test_hash_methodzUsabilityTest.test_hash_method2s�����,�,�&�&���|�|�0�0��	�	�w�r�{���w�z�"�#��w�{�#�$��w�x� �!��w�v���!A�,�,�� %�c�2��,��#*�	,� �	�t�Q��T�A�X��/�,�/�,�/�,��,�
	�����
���
������!������ ������$��
�#���%��)�*���$���%���%���%���$�)�	�0!�	>�E����V�E�]�D��U��,<�=�	>�
B���	1�A��a��A���
�A����V�A�Y��Q��0�	1�
�^�	<�q��
�&�A��A�F����B��A�F����B��A�F����B����R��$����R��$��A�F����A����V�G�A�J�/����;�#	<�	<��S,�R	<�	<�s�?0H>�+B
I�Ic�v�|jj}|jtt|d��|d�}|jt	|�tj|��Gd�d�}Gd�d||�}|d�}|jt	|�tj|��y)Nrrxc��eZdZd�Zy)�-UsabilityTest.test_hash_method_nan.<locals>.Hc��y)Nr�rr�s rrvz6UsabilityTest.test_hash_method_nan.<locals>.H.__hash__�s��r(N)r�rZr[rvrr(r�Hr��s��
r(r�c��eZdZy)�-UsabilityTest.test_hash_method_nan.<locals>.DN)r�rZr[rr(rrkr��s��r(rk)rr�rer,rur:rNrv)r�r�rr�rks     r�test_hash_method_nanz"UsabilityTest.test_hash_method_nan�s����,�,�&�&�����)�T�7�6�?�;���������e��f�o�o�e�&<�=�	�	�	���	��%�������e��f�o�o�e�&<�=r(c��|jj}|d�}|d�}d}d}|jt||�|�|jt||�|�|jt	||�|�|jt	||�|�|jt||�|�|jt||�|�|jt	||�|�|jt	||�|�y)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�
��
�V�_��
��
��	
�
�
�c�"�R�j�"�%��
�
�c�"�R�j�"�%��
�
�c�"�R�j�"�%��
�
�c�"�R�j�"�%�	
�
�
�c�"�R�j�"�%��
�
�c�"�R�j�"�%��
�
�c�"�R�j�"�%��
�
�c�"�R�j�"�%r(c��|jj}|j|d��|j|d��y)Nrz0.372)rr�rr"rbs  r�test_as_nonzerozUsabilityTest.test_as_nonzero�s6���,�,�&�&��	
������$������(�)r(c��|jj}|d�}|jt|�d�|jt	|�d�y)Nr�zDecimal('15.32'))rr�r:r5r9r�s   r�test_tostring_methodsz#UsabilityTest.test_tostring_methods�sD���,�,�&�&���G�������Q���)�����a��"4�5r(c
��|jj}|d�}|d�}|jt|�d�|jt|�d�|jt	|�d�|jt	|�d�gd�}|D]0\}}|jtj||��|��2|jtt
j|d��|jtt
j|d��|jtt
j|d	��|jtt
j|d
��|jtt
j|d��gd�}|D]0\}}|jtj||��|��2|jtt
j|d��|jtt
j|d��|jtt
j|d	��|jtt
j|d
��|jtt
j|d��gd
�}|D]&\}}|jt||��|��(|jtt|d��|jtt|d��|jtt|d	��|jtt|d
��|jtt|d��gd�}|D]1\}}}	|jtt||�|��|	��3y)N�66r�r�r{g�p=
ף.@)	�z123.00rg��3.2r�)�3.54r�)�3.899r�)�-2.3r��z-11.0i�����r:r�z-0E3r)�89891211712379812736.1l�{�#'s�{Mryrr�rWr�)	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)r6r)r�r)z3.5r�))�123.456r�z0E+4)r�r�z0E+3)r�r�z1E+2)r�rpz1.2E+2)r�rr[)r�rz123.5)r�r�123.46)r�r�r�)r�r�z123.4560)z123.455rr�)z123.445rz123.44)rWr�rx)r�i��rx)�sNaN314r��NaN314)
rr�r:rr��mathr�rer�
OverflowError�ceil�roundr5)
r�r�r�r��
test_pairsrrF�test_triplesrtr�s
          r�test_tonum_methodsz UsabilityTest.test_tonum_methods�s����,�,�&�&��
�T�]��
�W�
��	
����R��"�%�����R��"�%�	
����r��B�'�����r��E�*�
�
��	8�D�A�q����T�Z�Z���
�3�Q�7�	8����*�d�j�j�'�&�/�B����*�d�j�j�'�&�/�B����*�d�j�j�'�(�2C�D����-����W�U�^�D����-����W�V�_�E�
�
��	7�D�A�q����T�Y�Y�w�q�z�2�A�6�	7����*�d�i�i����A����*�d�i�i����A����*�d�i�i���1B�C����-����G�E�N�C����-����G�F�O�D��
�$�	3�D�A�q����U�7�1�:�.��2�	3����*�e�W�V�_�=����*�e�W�V�_�=����*�e�W�X�->�?����-�����?����-�����@��� $�	;�G�A�q�!����S��w�q�z�1�!5�6��:�	;r(c��|jj}dD]r}t||��}|jt	j
|��t	jd|�}|j||jd�rdnd��ty)N)r��nan1234�-nanz-nan2468r�rg�)	rr�r�r"r�r�rtr:r)r�r�rr�rus     r�test_nan_to_floatzUsabilityTest.test_nan_to_floatss���,�,�&�&��7�	G�A��g�a�j�!�A��O�O�D�J�J�q�M�*��=�=��a�(�D����T�1�<�<��+<�4�#�F�		Gr(c��|jj}dD]%}||�}|jtt|��'y)N)�snanz-snan�snan1357z	-snan1234)rr�rerr�)r�r�rrs    r�test_snan_to_floatz UsabilityTest.test_snan_to_float"s;���,�,�&�&��;�	4�A���
�A����j�%��3�	4r(c��|jj}|d�}|j|tt	|���|d�}|j|tt	|���|d�}|j|tt	|���|d�}|j|tt	|���y)Nr�r�r�r�)rr�r:r6r9r�s   r�test_eval_round_tripz"UsabilityTest.test_eval_round_trip(s����,�,�&�&��
�\�#������D��a��M�*�
�^�%������D��a��M�*�
�*�,������D��a��M�*�
�:�<������D��a��M�*r(c�@�|jj}|d�}|j|j�d�|d�}|j|j�d�|d�}|j|j�d�|d�}|j|j�d�|d	�}|j|j�d
�|d�}|j|j�d�|d
�}|j|j�d�|d�}|j|j�d�|d�}|j|j�d�|d�}|j|j�d�|d�}|j|j�d�|d�}|j|j�d�|d�}|j|j�d�y)Nrr�rlr�r�r�r�)rr�r�)r�rrr�rrrr�r�r�)r�r�rrrr�r�r�)r�rrr�%)rr�r�)rrr�)rr�rt)rr�rt)rr��N�rrr�)rrrt)rr�r�)r)rrr�rr�)rr�r�)rr�r:�as_tupler�s   r�
test_as_tuplezUsabilityTest.test_as_tuple;s����,�,�&�&��
�A�J���������|�5�
�C�L���������~�7�
�%�&���������'L�N�
�J����������~�7�
�3�5���������'?�A��'�)���������}�5��[�"���������}�5�
�4�6���������'@�B��(�*���������|�5��\�#���������|�5�
�^�%���������~�6��+�-���������~�6��+�-���������~�6r(c	�4�|jj}|jt|j|d��|jt|j|d��|jt
|j|d��|jt
|j|d��t
dd�D]�}t
d�D]�}dD]�}|d	|||fz�}|j	�}|\}}|j|t�|j|t�|j|t�|j|d
�|jtj||�d�|j||�||�z|�������y)Nr�r�r��snan123r�r��)rrz%s%dE%drr)rr�rer��as_integer_ratiorrsr��tuplerrIr:r��gcd)	r�r�rU�coeffrur�pqr�r�s	         r�test_as_integer_ratioz#UsabilityTest.test_as_integer_ratiohs}���,�,�&�&��	
���-�!�2�2�G�E�N�	D����-�!�2�2�G�F�O�	E����*�!�2�2�G�F�O�	E����*�!�2�2�G�I�4F�	H���Q�<�	A�C��t��
A��$�A�D��	�T�5�#�,>� >�?�A��+�+�-�B��D�A�q��)�)�"�e�4��)�)�!�S�1��)�)�!�S�1��&�&�q�!�,��$�$�T�X�X�a��^�Q�7��$�$�W�Q�Z�'�!�*�%<�a�@�!A�
A�	Ar(c�<�|jj}Gd�d|�}|d�}|d�}||z}|jt|�|�|j	|�}|jt|�|�tj
|�}|jt|�|�|j
||�tj|�}|jt|�|�|j
||�|d�}||�}|jt|�|�|j
||�||�}|jt|�|�|j
||�|j|jd�||�}|jt|�|�|j
||�d|_||�}|jt|�|�|j
||�|j|jd�y)Nc��eZdZdZy)�1UsabilityTest.test_subclassing.<locals>.MyDecimalN)r�rZr[r�rr(r�	MyDecimalr��s���Ar(r�rr�1.0r*)	rr�r�r4r�rnr:rqr�)r�r�r�r�r�rrr4s        r�test_subclassingzUsabilityTest.test_subclassing�s����,�,�&�&��	��	��q�\��
�q�\����G���
�
�d�1�g�w�'��F�F�2�J���
�
�d�1�g�w�'��I�I�b�M���
�
�d�1�g�y�)�����B���M�M�"����
�
�d�1�g�y�)�����B��
�E�N���A�J���
�
�d�1�g�w�'�����A��
�a�L���
�
�d�1�g�y�)�����A���
�
�a�c�c�4� �
�A�J���
�
�d�1�g�w�'�����A������a�L���
�
�d�1�g�y�)�����A���
�
�a�c�c�4� r(c
��|jj}|jj}|�}|jt	|d�j��t	|j|d����y�Nr)rr�r�r:r5r��r�r�r�r�s    r�test_implicit_contextz#UsabilityTest.test_implicit_context�s^���,�,�&�&���\�\�,�,�
�
�L������W�Q�Z�_�_�.�/��Q�V�V�G�A�J�/�0�	2r(c�$'�|jj}|jj}|jj}|jj}|jj
}|jj}|jj}|jj}|jj}	|jj}
|jj}||��5}d|_d|_
d|_|d�}
|d�}|d�}|j�|j!t#|
j%d���d�|j'|j(|	�|j'|j(|
�|j�|j+||j$d��|j'|j(|�|j-|j/d��d	�|j-|j1d��d
�|j�|j!t#|
j3d���d�|j'|j(|	�|j'|j(|
�|j�|j+||d�j2d��|j'|j(|�|j�|j!t#|
j5d���d
�|j'|j(|	�|j'|j(|
�|j�|j+||d�j4d��|j'|j(|�|j�|j!t#|
j7d���d�|j+||d�j6d��|j'|j(|�|j�|j!t#|
j9d���d�|j+||j8d��|j'|j(|�|j�|j!t#|j;d���d�|j+||d�j:d��|j'|j(|�|j�|j!t#|j=d���d�|j+||d�j<d��|j'|j(|�|j�|j!t#|j?d���d�|j+||j>d��|j'|j(|�|j!t#|jAd���d�|j�|j!t#|jCd���d�|j'|j(|�|j'|j(|	�|j'|j(|
�|j'|j(|�|j'|j(|�|j�|j+||jBd��|j'|j(|�d|_"|j!t#|jGd���d�d|_"|j�t#|
jI|d�d���}|j!|d�|j+||
jH|d�d��|j'|j(|�|j�t#|
jKdd���}|j!|d�|j+||
jJ|d�d��|j'|j(|�|j�t#|
jMdd���}|j!|d�|j+||
jLdd��|j'|j(|�|j�t#|
jOdd���}|j!|d�|j+||
jNdd��|j'|j(|�|j�t#|
jQdd���}|j!|d �|j+||
jPdd��|j'|j(|�|j�t#|
jSdd���}|j!|d�|j+||
jR|d�d��|j'|j(|�|j�t#|
jUdd���}|j!|d�|j+||
jT|d�d��|j'|j(|�|j�t#|
jWdd���}|j!|d�|j+||
jV|d�d��|j'|j(|�|j�t#|
jYdd���}|j!|d�|j+||
jX|d�d��|j'|j(|�|j�t#|
j[dd���}|j!|d �|j+||jZdd��|j'|j(|�|j�t#|
j]d!d���}|j!|d"�|j+||
j\dd��|j'|j(|�|j�t#|
j_dd���}|j!|d#�|j+||
j^d$d��|j'|j(|�|j�t#|
jad!d���}|j!|d"�|j+||
j`d$d��|j'|j(|�|j�t#|
jcd!d%d���}|j!|d&�|j+||
jb|d�d%d��|j'|j(|�td|_3t#|d'�jidd�(��}|j!|d�tj|_3t#|d'�jidd�(��}|j!|d)�t#|d'�jitld�(��}|j!|d�|j�|j+||d�jhd��|j'|j(|�td|_3t#|d'�jodd�(��}|j!|d�tj|_3t#|d'�jodd�(��}|j!|d)�t#|d'�jotld�(��}|j!|d�|j�|j+||d�jnd��|j'|j(|�td|_3t#|d'�jqdd�(��}|j!|d�tj|_3t#|d'�jqdd�(��}|j!|d)�t#|d'�jqtld�(��}|j!|d�|j�|j+||d�jpd��|j'|j(|�tl|_3t#|d*�js|d+�dd�,��}|j!|d-�tj|_3t#|d*�js|d+�dd�,��}|j!|d.�t#|d*�js|d+�tld�,��}|j!|d-�|j�|j+||jr|d/�tld�(�|j'|j(|�ddd�||��5}d|_d|_
d|_|d�0�5}|j!|jd�|j!|jd�|j!|jd�ddd�ddd�y#1swY��xYw#1swY�xYw#1swYyxYw)1Nr�r*i����111�1e9999z1e-9999�r%z1.609487E+48FTz4.709530rpz2.045323r�r�1111000z
9.999999E+999rr�r`�
+Subnormalz0E-1005r�Nan891287828�
NaN1287828i  r�rx�e�101rgr(r�11100z1.11E+9r�r��225r6�r,r%r�z1.50001z1e-3)rUr,r%z1.501z1.500z1e-10)r�):rr�r.r�r�r�r�r�r�r�r�r�r+rXrSr)r:r5rUr"rMrer�r�r��ln�log10�logbryr�r�r�rgr��capitalsr�rrircr�r�r�r�r�r�r��rotate�scaleb�shift�fmar/r,�to_integralr�r�r�r��quantize)r�r�r.r�r�r�r�r�r�r�r�r�r�rr��zr?r%s                  r�test_none_argszUsabilityTest.test_none_args�sy���,�,�&�&���,�,�&�&���|�|�0�0���<�<�8�8�����4�4���<�<�(�(���L�L�*�*�	��L�L�*�*�	��,�,�&�&���,�,�&�&���,�,�&�&��
�'�)�
$�W	7���A�F��A�F��A�F����A���!�A��	�"�A�
�M�M�O����S����t��!4�5�~�F��O�O�A�G�G�G�,�-��O�O�A�G�G�G�,�-�
�M�M�O����h����t��<��O�O�A�G�G�H�-�.��M�M�!�+�+�d�+�3�U�;��M�M�!�.�.��.�6��=�
�M�M�O����S����d��!3�4�j�A��O�O�A�G�G�G�,�-��O�O�A�G�G�G�,�-�
�M�M�O����.��������M��O�O�A�G�G�$4�5�6�
�M�M�O����S������!6�7��D��O�O�A�G�G�G�,�-��O�O�A�G�G�G�,�-�
�M�M�O����.����0A�0A�4��P��O�O�A�G�G�$4�5�6�
�M�M�O����S������!5�6��<����n�g�a�j�o�o�t��L��O�O�A�G�G�N�3�4�
�M�M�O����S��!1�!1�$�!1�!?�@�)�L����.��0@�0@�$��O��O�O�A�G�G�$4�5�6�
�M�M�O����S����d��!;�<�o�N����.����0J�0J�TX��Y��O�O�A�G�G�$4�5�6�
�M�M�O����S����T��!:�;�Z�H����.����0I�0I�SW��X��O�O�A�G�G�$4�5�6�
�M�M�O����S����T��!:�;�S�A����h����T��B��O�O�A�G�G�H�-�.����S������!=�>��M�
�M�M�O����S������!5�6�	�B��O�O�A�G�G�G�,�-��O�O�A�G�G�G�,�-��O�O�A�G�G�G�,�-��O�O�A�G�G�I�.�/��O�O�A�G�G�I�.�/�
�M�M�O����h������=��O�O�A�G�G�H�-�.��A�J����S������!>�?��K��A�J�
�M�M�O��a�i�i��� 7��i�F�G�C����S�,�/����.��	�	�7�6�?�TX��Y��O�O�A�G�G�$4�5�6�
�M�M�O��a�&�&�t�T�&�:�;�C����S�$�'����.��0@�0@�'�%�.�Z^��_��O�O�A�G�G�$4�5�6�
�M�M�O��a�m�m�C��m�6�7�C����S�%�(����.��
�
�s�D��Q��O�O�A�G�G�$4�5�6�
�M�M�O��a�l�l�3��l�5�6�C����S�%�(����.����c�4��P��O�O�A�G�G�$4�5�6�
�M�M�O��a�m�m�C��m�6�7�C����S�$�'����.��
�
�s�D��Q��O�O�A�G�G�$4�5�6�
�M�M�O��a�e�e�C��e�.�/�C����S�%�(����.����w�v��PT��U��O�O�A�G�G�$4�5�6�
�M�M�O��a�i�i��T�i�2�3�C����S�%�(����.��	�	�7�6�?�TX��Y��O�O�A�G�G�$4�5�6�
�M�M�O��a�e�e�C��e�.�/�C����S�%�(����.����w�v��PT��U��O�O�A�G�G�$4�5�6�
�M�M�O��a�i�i��T�i�2�3�C����S�%�(����.��	�	�7�6�?�TX��Y��O�O�A�G�G�$4�5�6�
�M�M�O��a�&�&�s�D�&�9�:�C����S�$�'����.��0@�0@�#�t��T��O�O�A�G�G�$4�5�6�
�M�M�O��a�h�h�q�$�h�/�0�C����S�'�*����.����#�t��L��O�O�A�G�G�$4�5�6�
�M�M�O��a�h�h�q�$�h�/�0�C����S�)�,����.����%���N��O�O�A�G�G�$4�5�6�
�M�M�O��a�g�g�a��g�.�/�C����S�'�*����.�������M��O�O�A�G�G�$4�5�6�
�M�M�O��a�e�e�A�q�$�e�/�0�C����S�%�(����h����w�x�/@�!�T��R��O�O�A�G�G�H�-�.�)�A�J��g�e�n�0�0�$��0�M�N�C����S�#�&�#�A�J��g�e�n�0�0�$��0�M�N�C����S�#�&��g�e�n�0�0�(�D�0�Q�R�C����S�#�&�
�M�M�O����.����0K�0K�UY��Z��O�O�A�G�G�$4�5�6�(�A�J��g�e�n�6�6��d�6�S�T�C����S�#�&�#�A�J��g�e�n�6�6��d�6�S�T�C����S�#�&��g�e�n�6�6��RV�6�W�X�C����S�#�&�
�M�M�O����.����0Q�0Q�[_��`��O�O�A�G�G�$4�5�6�(�A�J��g�e�n�6�6��d�6�S�T�C����S�#�&�#�A�J��g�e�n�6�6��d�6�S�T�C����S�#�&��g�e�n�6�6��RV�6�W�X�C����S�#�&�
�M�M�O����.����0Q�0Q�[_��`��O�O�A�G�G�$4�5�6�!�A�J��g�i�(�1�1�g�f�o�PT�^b�1�c�d�C����S�'�*�#�A�J��g�i�(�1�1�g�f�o�PT�^b�1�c�d�C����S�'�*��g�i�(�1�1�g�f�o�PX�bf�1�g�h�C����S�'�*�
�M�M�O����.��
�
�G�G�<L�W_�im��n��O�O�A�G�G�$4�5�6�oW	7�r�'�)�
$�	/���G�L��G�L��G�L��$�'�
/�1�� � �����+�� � �����-�� � �����.�
/�		/�	/�sW	7�W	7��z
/�
/��		/�	/�sB�AGAM.�K)AN�LAAM:�MAN�M.AM7�M:AN	�M?AN�NANc	�L�|jj}|j|d�jd�|d�j|d���|j|d�j	d�|d�j	|d���|j|d�jd�|d�j|d���|j|d�j
d�|d�j
|d���|j|d�jd�|d�j|d���|j|d�jd�|d�j|d���|j|d�jd�|d�j|d���|j|d�jd�|d�j|d���|j|d�jd�|d�j|d���|j|d�jd�|d�j|d���|j|d�jd�|d�j|d���|j|d�jd�|d�j|d���|j|d�jd�|d�j|d���|j|d	�j!d�|d	�j!|d���|j|d�j#d
�|d�j#|d
���|j|d�j%d�|d�j%|d���|j|d�j'd
�|d�j'|d
���|j|d�j)d�|d�j)|d���|j|d�j+|d�d�|d�j+|d�|d���|j|d�j+dd�|d�j+|d�|d���|j|d�j+d|d��|d�j+|d�|d���y)Nr�r�iu'��i7rgr�r�irr�z9.123���r�rpi�rh�C)rr�r:rrirkrmrcr�r�r�r�r�r�r�rr�r�r�r�r�r�rbs  r�test_conversions_from_intz'UsabilityTest.test_conversions_from_int�	s����,�,�&�&��������+�+�A�.� ���+�+�G�A�J�7�	9�������2�2�1�5� ���2�2�7�1�:�>�	@�������1�1�!�4� ���1�1�'�!�*�=�	?�������5�5�a�8� ���5�5�g�a�j�A�	C�������3�3�D�9� ���3�3�G�D�M�B�	D�������2�2�4�8� ���2�2�7�4�=�A�	C�������3�3�D�9� ���3�3�G�D�M�B�	D�������)�)�#�.� ���)�)�'�#�,�7�	9�������-�-�c�2� ���-�-�g�c�l�;�	=�������)�)�#�.� ���)�)�'�#�,�7�	9�������-�-�c�2� ���-�-�g�c�l�;�	=�������1�1�#�6� ���1�1�'�#�,�?�	A�������/�/��4� ���/�/����=�	?�������4�4�T�:� ���4�4�W�T�]�C�	E�������,�,�Q�/� ���,�,�W�Q�Z�8�	:�������3�3�D�9� ���3�3�G�D�M�B�	D������)�0�0��6� ��)�0�0����?�	A�������+�+�B�/� ���+�+�G�B�K�8�	:�	
������)�)�'�"�+�r�:� ���)�)�'�"�+�w�r�{�C�	E�������)�)�"�b�1� ���)�)�'�"�+�w�r�{�C�	E�������)�)�"�g�b�k�:� ���)�)�'�"�+�w�r�{�C�	Er(N)r�rZr[r\rVr]r`rorrr�r�r�r�r�r�r�r�r�r�r�r�r�rrrr(rrFrF�sw��4�"�H1�&9�((5�T(�L<�\>�&�(*�6�e;�NG�4�+�&+7�ZA�B-!�^2�m/�^/Er(rFc��eZdZeZy)�CUsabilityTestNr�rr(rr	r	�	r�r(r	c�,��eZdZeZ�fd�Z�fd�Z�xZS)�PyUsabilityTestc�~��t�|��tj�|_tj
d�y�NiX��superr��sys�get_int_max_str_digits�_previous_int_limit�set_int_max_str_digits�r�r�s �rr�zPyUsabilityTest.setUp�	�+���
��
��#&�#=�#=�#?�� ��"�"�4�(r(c�`��tj|j�t�|��yr�rrrr�tearDownrs �rrzPyUsabilityTest.tearDown�	�"����"�"�4�#;�#;�<�
���r(�r�rZr[r�rr�r�
__classcell__�r�s@rrr�	�����G�)�
�r(rc�X�eZdZd�Zd�Zd�Zed��Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zy)
�PythonAPItestsc�l�|jj}|jt|tj
��|j
t|tj��|j|d�tj
�|j|d�tj�yr�)
rr�r"�
issubclass�numbers�Numberr�Realr��assertNotIsInstancerbs  r�test_abczPythonAPItests.test_abc�	sq���,�,�&�&�����
�7�G�N�N�;�<�����G�W�\�\�:�;����g�a�j�'�.�.�9�� � ����W�\�\�:r(c���ttjdz�D�]D}|jj}t
jd}|jt
jd<|d�}tj||�}tj|�}|j||�t�r�tj	d�}tj	d�}tt
jd<tj||�}	tt
jd<tj|	�}
|j|
tj�|j|
|�tt
jd<tj||�}tt
jd<tj|�}
|j|
tj�|j|
|�tj	d�j�}tj	d�j�}tt
jd<tj||�}	tt
jd<tj|	�}
|j|
tj�|j|
|�tt
jd<tj||�}tt
jd<tj|�}
|j|
tj�|j|
|�|t
jd<��Gy)Nrrz-3.141590000z-3.123e81723)rs�pickle�HIGHEST_PROTOCOLrr�r�modules�dumps�loadsr:r�r�r�r��DecimalTuple)r��protor��savedecimalrr�rHrr��sxr��sys            r�test_picklezPythonAPItests.test_pickle�	s]���6�2�2�Q�6�7�0	1�E��l�l�*�*�G��+�+�i�0�K�&*�\�\�C�K�K�	�"���'�A����Q��&�A����Q��A����Q��"���I�I�n�-���I�I�n�-��)*����I�&��\�\�!�U�+��)*����I�&��L�L��$���%�%�a����3�� � ��A�&�)*����I�&��\�\�!�U�+��)*����I�&��L�L��$���%�%�a����3�� � ��A�&��I�I�n�-�6�6�8���I�I�n�-�6�6�8��)*����I�&��\�\�!�U�+��)*����I�&��L�L��$���%�%�a����8�� � ��A�&�)*����I�&��\�\�!�U�+��)*����I�&��L�L��$���%�%�a����8�� � ��A�&�%0�C�K�K�	�"�a0	1r(c	�L�|jj}tdd�D]{}d|dzz}|jt	||��t	t|���||�}|j
t�}|j|t	|��|��}|jtt|d��|jtt|d��|jtt|d��|jtt|d��y)	N������%0.2f�Y@r�r�r�r�)rr�rsr:rr�r�r�rerr��r�r�rrrr�s      r�test_intzPythonAPItests.test_int-
s����,�,�&�&���t�S�!�	1�A��1�u�9�%�A����S����_�c�%��(�m�<���
�A��
�
�j�)�A����W�S��V�_�a�0�	1�	
���*�c�7�6�?�;����*�c�7�6�?�;����-��g�e�n�=����-��g�f�o�>r(c��|jj}tdd�D]#}|jt	||��|��%y)Nrqi)rr�rsr�r�r�r�rs   r�test_small_intszPythonAPItests.test_small_ints>
s<���,�,�&�&���r�3��	.�A��M�M�#�g�a�j�/�1�-�	.r(c	�X�|jj}tdd�D]�}d|dzz}|jt	||��t	t|���||�}|j
t�}|j|tj|��|���y)Nr4r5r6r7)
rr�rsr:rr�r�r�r��truncr8s      r�
test_trunczPythonAPItests.test_truncE
s����,�,�&�&���t�S�!�	8�A��1�u�9�%�A����S����_�c�%��(�m�<���
�A��
�
�j�)�A����W�T�Z�Z��]�3�Q�7�	8r(c	��|jj}Gd�d|�}|jt||��|j	d�}|jt
|�|�|jt|�d�|j|jd�d}|j|j	|�||��|j|j	td��j��|j|j	td��j��|j|j	td	��j��|jt|j	td���t|d
���|jt|j	td���t|d���|jt|j	td	���t|d���|jt|jd
�td�D]\}tj d�tj�dzdz
z}|j|t|j	|����^y)Nc��eZdZd�Zy)�1PythonAPItests.test_from_float.<locals>.MyDecimalc��d|_y)Nr�)r)r��_s  rr�z:PythonAPItests.test_from_float.<locals>.MyDecimal.__init__V
s	����r(Nr�rr(rr�rBU
s��
r(r�r�r�r�ls\�&�5$3�|	r�r�r�rxr�r��abcr�r�r�r�)rr�r"r!r�r:r4r5rr�r�rrer,rsr(r�)r�r�r�r��bigintrFrs       r�test_from_floatzPythonAPItests.test_from_floatQ
s���,�,�&�&��	��	�	
���
�9�g�6�7�� � ��%������a��)�,�����Q��K�	M�������c�"�.������-�-�f�5�y��7H�I����	�,�,�U�5�\�:�B�B�D�E����	�,�,�U�5�\�:�F�F�H�I����	�,�,�U�6�]�;�G�G�I�J�����Y�1�1�%��,�?�@��W�U�^�,�	.�����Y�1�1�%��,�?�@��W�Z�0�1�	3�����Y�1�1�%��-�@�A��W�[�1�2�	4����)�Y�%9�%9�5�A��s��	@�A��"�"�4�(�F�M�M�O�c�,A�C�,G�H�A����Q��i�&:�&:�1�&=� >�?�	@r(c��|jj}|jj}|jj}|dt��}|j|j
tj�|d��|dt��}|j|j
tj�|d��|d|g��}|j||jtj�|jt|j
d��d�|jt|j
d��d	�|jt|j
d
��d�y)Nrr)r+r,z3.1415rH)r+r-��z
Decimal('-0')r�zDecimal('1')r�z
Decimal('10'))rr�r.r�r�r:�create_decimal_from_floatr��pir�rer9)r�r�r.r�r%s     r�test_create_decimal_from_floatz-PythonAPItests.test_create_decimal_from_floatq
s5���,�,�&�&���,�,�&�&���,�,�&�&���q�:�6������-�-�d�g�g�6��H��	
��q�8�4������-�-�d�g�g�6��H��	
��q��	�2�������-�-��G�G�	
�
	
����g�?�?��E�F�(�	*�����g�?�?��D�E�'�	)�����g�?�?��C�D�(�	*r(c�T�|jj}|jj}|jj}|dd��}|j	|d�j|d��|d��|j	|d�j|d�t��|d��|j||d	�j
|d
�|��|�}|d�}|j||d
�t��}|j	||d��y)Ni��iay��rdz7.335rwz7.34�r,z7.33�10e99999�1e100000r�z0.871831e800�1e797)r%rUr,z	8.71E+799)rr�r.r�r:rr�re)r�r�r.r�r�rrs       r�
test_quantizezPythonAPItests.test_quantize�
s���,�,�&�&���,�,�&�&���<�<�8�8����V�,������G��%�%�g�e�n�5��F�O�	
�	
����G��%�%�g�e�n�z�%�J��F�O�	
�	
�����J��(�(�'�*�*=�q�	�	
�

�I���N�#��
�J�J�q�g�g�&6��J�L������G�K�0�1r(c�B�|jj}|d�}|j|j|�|j|jd�|j|j�|�|d�}|jt
|�t
td���|jtt|dd�|jtt|dd�|jtt|dd�|jtt|d	d�y)
Nz9.8182731e181273rr�r�realr��imag�	conjugate�__complex__)rr�r:rTrUrV�complexr�rer-r*r;s   r�test_complexzPythonAPItests.test_complex�
s����,�,�&�&���&�'���������#��������#���������*��C�L��������W�U�1�X�%6�7����.�'�1�f�c�B����.�'�1�f�c�B����.�'�1�k�3�G����.�'�1�m�S�Ir(c��|jj}|jj}|jj}|jj}|jj
}|�}d|_d|_d|_|�5}|j�|j|d|�d�|j|d|��d�|j||d��d�|j||��d�|j�|j||d|��|j|j|�|j|j|�|j�|j|d�j|��d	�|j||d
�j|��|j|j|�|j|j|�|j�|j|d�j!|��|d��|j||d�j |��|j|j|�|j|j|�|j|d�j#|��|d��|j|d�j%|��d
�|j|d�j'|��|d��|j|d�j)|��|d��|j|d�j+|��d�|j|d�j-|��d�|j|d�j/|��d�|j|d�j1|��|d��|j|d�j3|d��d�|j�|j||d�j4|d�|��|j|j|�|j|j|�|j|d�j7|d�|��|d��|j|d�j7|d�|��|d��|j|d�j9|d �|��|d ��|j|d!�j;|d"�|��|d#��|j|d!�j=|d"�|��|d��|j|d�j?|d$�|��|d%��|j�|j||d�j@|d&�|��|j|j|�|j|j|�|j|d'�jC|d(�|��|d)��|j|d*�jE|d+�|d	�,�|d-��|jtF|d�jH|��|jtF|d�jJ|��|jtF|d�jL|��|jtF|d�jN|��|jtF|d�jP|��|jtF|d�jR|��|jtF|d�jT|��|jtF|d�jV|��|j|d�jY|���|j|d�j[|���|jtF|d�j\|��|jtF|d�j^|��|jtF|d�j`|��|j|d.�jc|��d�|j|d�je|��d�|j|d�jg|��d/�|j|d0�ji|��d0�|j|d1�jk|d2�|��d�|j|d1�jm|d2�|��d�|j|d3�jo|d2�|��d�|j|d4�jqd|��d�|j|d4�jqd|��d�|j�|j||d4�jrd|��|j|j|�|j|j|�|j|d4�jud|��d�|jtF|jvd5|��|jtF|d�jx|��|j|d�j{�d�|jtF|d$�j||��|jtF|d$�j~|��|jtF|d�jzd6��|jtF|d�jzd6�7�ddd�y#1swYyxYw)8Nrrpr*r�)r%rrrrr�r�z0.7r�r�z-0.9z9.73z1E+1�9999�'z-2000i0���r[rgz0.0625�0.2r�)r%r�r`r��0.01z0.0101r:z-0.3z0.02z-0.03r�r�r��1e10�9.99r6r��9.9z0.9)�thirdr%r�z7E+1i����r�z0.21�11r(�01�23g�������?r)r)@rr�r.r�r�r�r+rXrSr)r:rer"rMrrUr�r�r�r�r�r�r�r�r�rrir�r�r�r�r�rr�r�r,r{r}rr�r�r�r�r�r�r��adjustedrV�radixr�ryrgr�rcr�r�r�r�r�r�r��	canonicalrqrs)r�rkr.r�r�r��xcr�s        r�test_named_parametersz$PythonAPItests.test_named_parameters�
s�	���L�L� � ���,�,�&�&���|�|�0�0���<�<�8�8���<�<�(�(��
�Y�����������
�^�b	B�q�
�M�M�O����Q�q�"�X�q�)����Q�q�"�-�q�1����Q�r��3�Q�7����Q�r�]�A�.��N�N�����.��5�"��E��O�O�B�H�H�%5�6�7����Q�W�W�%5�6�7��N�N�����Q�q�T�X�X�b�X�1�1�5����h��!����"��=��O�O�B�H�H�X�.�/����Q�W�W�X�.�/��N�N�����Q�q�T�W�W�R�W�0�!�E�(�;����.��"����"��E��O�O�B�H�H�%5�6�7����Q�W�W�%5�6�7����Q�q�T�Z�Z��Z�3�Q�v�Y�?����Q�r�U�-�-�b�-�9�2�>����Q�r�U�_�_�R�_�8�!�F�)�D����Q�v�Y�0�0��0�<�a��i�H����Q�v�Y�2�2�2�2�>��E����Q�w�Z�9�9�"�9�E�u�M����Q�u�X�7�7��7�C�S�I����Q�x�[�-�-�b�-�9�1�U�8�D����Q�x�[�0�0��1�0�E�r�J��N�N�����.���f�3�3�Q�u�X�r�
�
K��O�O�B�H�H�%5�6�7����Q�W�W�%5�6�7����Q�v�Y�]�]�1�X�;��]�C�Q�u�X�N����Q�v�Y�]�]�1�X�;��]�C�Q�u�X�N����Q�u�X�-�-�a��i��-�D��v�Y�
(����Q�v�Y�]�]�1�W�:�r�]�B�A�f�I�N����Q�v�Y�.�.�q��z�2�.�F��u�X�
'����Q�u�X�1�1�!�D�'�2�1�F��%��Q��N�N�����.���h�/�/��6��B�
�
H��O�O�B�H�H�%5�6�7����Q�W�W�%5�6�7����Q�v�Y�5�5�a��h��5�K��v�Y�
(�
���Q�u�X�\�\��%��"�A�\�N��v�Y�
(�
���i��1��):�):�B��G����i��1������D����i��1��)9�)9�2��F����i��1����b��A����i��1����r��B����i��1����r��B����i��1������D����i��1����r��B����Q�v�Y�0�0��0�<�=��O�O�A�f�I�2�2�2�2�>�?����i��1������C����i��1������D����i��1����R��@����Q�t�W�\�\�"�\�5�q�9����Q�q�T�0�0��0�<�a�@����Q�v�Y�3�3�B�3�?��N����Q�v�Y�4�4�R�4�@�&�I����Q�t�W�0�0��4��"�0�E�q�I����Q�t�W�/�/��$���/�D�a�H����Q�t�W�0�0��4��"�0�E�q�I����Q�t�W�^�^�A�r�^�:�A�>����Q�t�W�^�^�A�r�^�:�A�>��N�N�����h���g�n�n�a��
�
=��O�O�B�H�H�X�.�/����Q�W�W�X�.�/����Q�t�W�]�]�2�r�]�:�A�>����i����s�B��G����i��1������C����Q�q�T�^�^�-�q�1����i��4��)9�)9�2��F����i��4��)<�)<�b��I����i��1������E����i��1����S��A�Eb	B�b	B�b	B�s
�mo1�1o:c�4�|j}|j}|j}|j}|j}|j
}|j}|j}|j}	|j}
|j}|jt|t��|jt||��|jt||��|jt|t��|jt||��|jt|t��|jt||
��|jt||	��|jt||��|jt||	��|jt||
��|jt||��|jt||��|jt||��|jt|	|��|jt|
|��|jt||��|jt|j |��|jt|j"|��|jt|j$|��|jt|j$t��|jt|j&|��yr)rr�r��FloatOperationr�r�r�r�r�r�r�r"r!�ArithmeticErrorr,�ZeroDivisionError�ConversionSyntax�DivisionImpossible�DivisionUndefined�InvalidContext)r�rr�r�rlr�r�r�r�r�r�r�s            r�test_exception_hierarchyz'PythonAPItests.test_exception_hierarchy%sF���,�,��"�3�3��"�3�3�� �/�/�� �/�/���#�#���%�%�	��%�%�	��/�/���/�/���/�/�����
�#3�_�E�F����
�#3�5E�F�G����
�>�3C�D�E����
�>�9�=�>����
�>�3C�D�E����
�>�3D�E�F����
�8�W�5�6����
�8�W�5�6����
�8�-=�>�?����
�9�g�6�7����
�9�g�6�7����
�9�i�8�9����
�9�.>�?�@����
�9�.>�?�@����
�7�,<�=�>����
�7�,<�=�>����
�7�,<�=�>����
�7�#;�#;�=M�N�O����
�7�#=�#=�?O�P�Q����
�7�#<�#<�>N�O�P����
�7�#<�#<�>O�P�Q����
�7�#9�#9�;K�L�Mr(N)r�rZr[r&r2r9r
r<r?rGrLrRrYrjrsrr(rrr�	sP��;�11�f?�"�.��.�
8�@�@*�82�0J� nB�`&Nr(rc��eZdZeZy)�CPythonAPItestsNr�rr(rruruMr�r(ruc��eZdZeZy)�PyPythonAPItestsNr�rr(rrwrwPr�r(rwc���eZdZd�Zee�eje��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@�ZFyA)B�ContextAPItestsc
��|jj}|jj}|jj}|jj}|�}|dddddddd��}||fD]�}|j|jd�|j|jt�|j|jd�|j|jd�|j|jd�|j|jd�t||dg�t||d|||g���y)	N)r+r,rXrSr�rarMr-r��?B��rrrMr-)rr.r�r�r�r:r+r,r/rXrSr�rar')r�r.r�r�r�r$r"r�s        rrzContextAPItests.test_none_argsUs���,�,�&�&���<�<�8�8�����4�4���<�<�(�(��
�Y��
�$��D�t�"�$�d�$�H���b��		9�A����Q�V�V�R�(����Q�Z�Z��9����Q�V�V�V�,����Q�V�V�W�-����Q�Z�Z��+����Q�W�W�a�(��4��G�R�0��4��G�.>��.6�.8�
9�		9r(r�c�r�ddl}|jj�}tD]4}|j	|�|_|j
|j
|��6|j	d�}|jtt|d|�|j	d�}|jtt|d|�y)Nrr�r,z	ROUND_UP)
r�rr.�
RoundingModesr�r,r:rer,r*)r�r�r��rndrs     rr�z(ContextAPItests.test_from_legacy_stringsis���	��L�L� � �"�� �	.�C�"�8�8��=�A�J����Q�Z�Z��-�	.�
�+�+�B�/�����)�W�a��Q�?��+�+�N�;�����)�W�a��Q�?r(c��ttjdz�D�]0}|jj}t
jd}|jt
jd<|�}tjtj||��}|j|j|j�|j|j|j�|j|j|j�|j|j|j�|j|j|j�|j|j|j�|j|j |j �|j|j"|j"�t$rt$t&ft&t$fgnt&t&fg}|D�]C\}}t)t*�D�]*\}	}
t)t,|�D�]\}}
t)t,|�D�]�\}}
t/j0dd�}
t/j0dd�}t/j0dd�}t/j0d�}t/j0d�}|t
jd<|j	|
||t*|	||t,|d|t,|d|��}tj||�}|t
jd<tj|�}|j3||j�|j|j|
�|j|j|�|j|j|�|j|jt*|	�|j|j|�|j|j|�t5||dt,|d|�t5||d	t,|d|��������-��F|t
jd<��3y)
Nrrr�rrr)r+rSrXr,r�rarMr-rMr-)rsr(r)rr.rr*r,r+r:r+rSrXr,r�rarMr-r�r�r/r~r3r(�	randranger�r')r�r.r.r/r�rH�combinations�dumper�loader�rirD�fi�tir+rmrl�capsrarrs                    rr2zContextAPItests.test_picklezsr���6�2�2�Q�6�7�9	1�E��l�l�*�*�G��+�+�i�0�K�&*�\�\�C�K�K�	�"��	�A����V�\�\�!�U�3�4�A����Q�V�V�Q�V�V�,����Q�V�V�Q�V�V�,����Q�V�V�Q�V�V�,����Q�Z�Z����4����Q�Z�Z����4����Q�W�W�a�g�g�.����Q�W�W�a�g�g�.����Q�W�W�a�g�g�.�01�Q��F�Q��F�+��1�v�h�L�".�"
Z����&�}�5�!Z�E�B��!*�>�&�+A�!B� Z���A�%.�~�f�/E�%F�Z�E�B��#)�#3�#3�A�s�#;�D�#)�#3�#3�D�!�#<�D�#)�#3�#3�A�s�#;�D�#)�#3�#3�A�#6�D�$*�$4�$4�Q�$7�E�6<�C�K�K�	�2� &���'+�$�T�+8��+<�+/�u�(6�v�(>�s��(C�(6�v�(>�s��(C�!/�!�A�!'���Q�� 6�A�6<�C�K�K�	�2� &���Q��A� �1�1�!�V�^�^�D� �,�,�Q�V�V�T�:� �,�,�Q�V�V�T�:� �,�,�Q�V�V�T�:� �,�,�Q�Z�Z��r�9J�K� �,�,�Q�Z�Z��>� �,�,�Q�W�W�e�<�*�4��G�^�F�=S�TW�UW�=X�Y�*�4��G�^�F�=S�TW�UW�=X�Y�?Z� Z�!Z�"
Z�H&1�C�K�K�	�"�s9	1r(c��|jj}|j|d�dd|d�dig�|j|d�dddig�y)Nr�r�r�)rr)rr��assertIn�assertNotInrbs  r�test_equality_with_other_typesz.ContextAPItests.test_equality_with_other_types�sO���,�,�&�&���
�
�g�b�k�C��g�b�k�5�"�#E�F�������s�C���&;�<r(c��|jj}|jj}|�}|j�}|j	t|�t|��|j	t|j�t|j��|j	t|j�t|j��t|jj��}t|jj��}|j||�|j|j|j�yr)rr�r.rnrMr=rMr-r��keysr:)r�r�r.r�r�k1�k2s       r�	test_copyzContextAPItests.test_copy�s����,�,�&�&���,�,�&�&���I��
�F�F�H�����B�q�E�2�a�5�)����B�q�w�w�K��A�G�G��5����B�q�w�w�K��A�G�G��5�
�������
 ��
�������
 ������R� �������!�'�'�*r(c�v�|jj}|�}|jtt|d�y)N�_clamp)rr.rer-r!�r�r.r�s   r�test__clampzContextAPItests.test__clamp�s.���,�,�&�&���I�����.�'�1�h�?r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�y�Nrpr�)rr�r.r�r:rer,�r�r�r.r�rs     r�test_abszContextAPItests.test_abs��g���,�,�&�&���,�,�&�&���I��
�E�E�'�"�+���������r��A�&����)�Q�U�U�D�1r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�y�Nrr�)rr�r.r�r:rer,r�s     r�test_addzContextAPItests.test_add������,�,�&�&���,�,�&�&���I��
�E�E�'�!�*�g�a�j�)��������q�!��a�(�������w�q�z�1�-�q�1�������q�'�!�*�-�q�1����)�Q�U�U�C��3����)�Q�U�U�A�s�3r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.rr:rer,r�s     r�test_comparezContextAPItests.test_compare������,�,�&�&���,�,�&�&���I��
�I�I�g�a�j�'�!�*�-��������1�a��!�,�������7�1�:�q�1�1�5�������1�g�a�j�1�1�5����)�Q�Y�Y��Q�7����)�Q�Y�Y��3�7r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.rir:rer,r�s     r�test_compare_signalz#ContextAPItests.test_compare_signal������,�,�&�&���,�,�&�&���I��
���W�Q�Z����4������)�)�!�Q�/��3�����)�)�'�!�*�a�8�!�<�����)�)�!�W�Q�Z�8�!�<����)�Q�%5�%5�s�A�>����)�Q�%5�%5�q�#�>r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.rkr:rer,r�s     r�test_compare_totalz"ContextAPItests.test_compare_totals����,�,�&�&���,�,�&�&���I��
�O�O�G�A�J���
�3���������A�.��2����������Q�7��;��������G�A�J�7��;����)�Q�_�_�c�1�=����)�Q�_�_�a��=r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.rmr:rer,r�s     r�test_compare_total_magz&ContextAPItests.test_compare_total_mags����,�,�&�&���,�,�&�&���I��
�����
�G�A�J�7������,�,�Q��2�A�6�����,�,�W�Q�Z��;�Q�?�����,�,�Q���
�;�Q�?����)�Q�%8�%8�#�q�A����)�Q�%8�%8�!�S�Ar(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.rqr:rer,r�s     r�
test_copy_abszContextAPItests.test_copy_abssg���,�,�&�&���,�,�&�&���I��
�J�J�w�r�{�#��������B���+����)�Q�Z�Z��6r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.ror:rer,r�s     r�test_copy_decimalz!ContextAPItests.test_copy_decimal%�h���,�,�&�&���,�,�&�&���I��
�N�N�7�2�;�'���������+�Q�/����)�Q�^�^�T�:r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.rsr:rer,r�s     r�test_copy_negatez ContextAPItests.test_copy_negate.�h���,�,�&�&���,�,�&�&���I��
�M�M�'�"�+�&��������r�*�A�.����)�Q�]�]�D�9r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�y)Nrr�r�r)rr�r.rur:rer,r�s     rrzContextAPItests.test_copy_sign7s����,�,�&�&���,�,�&�&���I��
�K�K���
�G�B�K�0��������Q��+�Q�/�������W�Q�Z��4�a�8�������Q����4�a�8����)�Q�[�[�#�r�:����)�Q�[�[�!�T�:r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�y�Nrrr�r�)rr�r.rr:rer,r�s     r�test_dividezContextAPItests.test_divideC�����,�,�&�&���,�,�&�&���I��
�H�H�W�Q�Z����,��������!�Q���+�������'�!�*�a�0�!�4�������!�W�Q�Z�0�!�4����)�Q�X�X�s�A�6����)�Q�X�X�q�#�6r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.rwr:rer,r�s     r�test_divide_intzContextAPItests.test_divide_intO�����,�,�&�&���,�,�&�&���I��
�L�L����W�Q�Z�0��������a��+�Q�/�������g�a�j�!�4�a�8�������a����4�a�8����)�Q�\�\�3��:����)�Q�\�\�1�c�:r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r)r:rer,r�s     r�test_divmodzContextAPItests.test_divmod[r�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�y�Nr�r()rr�r.rUr:rer,r�s     r�test_expzContextAPItests.test_expgr�r(c	��|jj}|jj}|�}|j|d�|d�|d��}|j	|jddd�|�|j	|j|d�dd�|�|j	|jd|d�d�|�|j	|jdd|d��|�|j	|j|d�|d�d�|�|jt|jddd�|jt|jddd�|jt|jddd�|jt|j|d�|d�d	�|jt|j|d
�|d�d�|jt|d�j|d�d	�|jt|d
�j|d�d�y)
Nrr�r�r�rE�4r�rz
not a decimalrr�gZd;�O��?)rr�r.r�r:rer,r�s     r�test_fmazContextAPItests.test_fmaps����,�,�&�&���,�,�&�&���I��
�E�E�'�!�*�g�a�j�'�!�*�5��������q�!�Q���+�������w�q�z�1�a�0�!�4�������q�'�!�*�a�0�!�4�������q�!�W�Q�Z�0�!�4�������w�q�z�7�1�:�q�9�1�=����)�Q�U�U�C��A�6����)�Q�U�U�A�s�A�6����)�Q�U�U�A�q�#�6�	
���)�Q�U�U�!�*�-�w�q�z�?�	L����)�Q�U�U�!�!�*�g�f�o�u�	>�	
���)�W�Z�%8�%<�%<�!�!�*�o�	7����)�W�Q�Z�^�^�!�&�/�5�	2r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r}r:rer,r�s     r�test_is_finitezContextAPItests.test_is_finite��g���,�,�&�&���,�,�&�&���I��
�K�K����$��������R��!�,����)�Q�[�[�$�7r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.rr:rer,r�s     r�test_is_infinitez ContextAPItests.test_is_infinite�r�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_is_nanzContextAPItests.test_is_nan�sg���,�,�&�&���,�,�&�&���I��
�H�H�W�R�[�!��������"��q�)����)�Q�X�X�t�4r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_is_normalzContextAPItests.test_is_normal�r�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_is_qnanzContextAPItests.test_is_qnan��g���,�,�&�&���,�,�&�&���I��
�I�I�g�b�k�"��������2���*����)�Q�Y�Y��5r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_is_signedzContextAPItests.test_is_signed�r�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_is_snanzContextAPItests.test_is_snan�r�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_is_subnormalz!ContextAPItests.test_is_subnormal�r�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_is_zerozContextAPItests.test_is_zero�r�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_lnzContextAPItests.test_ln�sg���,�,�&�&���,�,�&�&���I��
�D�D������������b��1�%����)�Q�T�T�4�0r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�
test_log10zContextAPItests.test_log10��g���,�,�&�&���,�,�&�&���I��
�G�G�G�B�K� ����������a�(����)�Q�W�W�d�3r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�	test_logbzContextAPItests.test_logb��g���,�,�&�&���,�,�&�&���I��
�F�F�7�2�;�����������Q�'����)�Q�V�V�T�2r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.rcr:rer,r�s     r�test_logical_andz ContextAPItests.test_logical_and������,�,�&�&���,�,�&�&���I��
�M�M�'�!�*�g�a�j�1��������q�!�,�a�0�������w�q�z�1�5�q�9�������q�'�!�*�5�q�9����)�Q�]�]�C��;����)�Q�]�]�A�s�;r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�y)Nr�r})rr�r.ryr:rer,r�s     r�test_logical_invertz#ContextAPItests.test_logical_invert
sn���,�,�&�&���,�,�&�&���I��
���W�T�]�+������)�)�$�/��3����)�Q�%5�%5�v�>r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_logical_orzContextAPItests.test_logical_or
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_logical_xorz ContextAPItests.test_logical_xor
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_maxzContextAPItests.test_max#
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_max_magzContextAPItests.test_max_mag/
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_minzContextAPItests.test_min;
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_min_magzContextAPItests.test_min_magG
r�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.�minusr:rer,r�s     r�
test_minuszContextAPItests.test_minusS
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r+r:rer,r�s     r�
test_multiplyzContextAPItests.test_multiply\
�����,�,�&�&���,�,�&�&���I��
�J�J�w�q�z�7�1�:�.��������A�q�)�1�-�������G�A�J��2�A�6�������A�w�q�z�2�A�6����)�Q�Z�Z��a�8����)�Q�Z�Z��C�8r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_next_minuszContextAPItests.test_next_minush
sh���,�,�&�&���,�,�&�&���I��
�L�L����%��������b�)�1�-����)�Q�\�\�4�8r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_next_pluszContextAPItests.test_next_plusq
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_next_towardz ContextAPItests.test_next_towardz
r�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_normalizezContextAPItests.test_normalize�
r�r(c��|jj}|jj}|�}|j|j	d�|j	|d���|j|j	d�|j	|d���|j|j	d�|j	|d���y)Nrgrrl)rr�r.r:rg)r�r�r.r�s    r�test_number_classz!ContextAPItests.test_number_class�
s����,�,�&�&���,�,�&�&���I���������,�a�n�n�W�S�\�.J�K��������*�A�N�N�7�1�:�,F�G��������,�a�n�n�W�S�\�.J�Kr(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.�plusr:rer,r�s     r�	test_pluszContextAPItests.test_plus�
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|j	|j|d�|d��|�|jt|jdd�|jt|jdd�|j	|jddd��d�y)	Nrr�r�r�rrr�r)�modulorUr�)rr�r.�powerr:rer,r�s     r�
test_powerzContextAPItests.test_power�
s	���,�,�&�&���,�,�&�&���I��
�G�G�G�A�J���
�+���������A���*����������Q�/��3��������G�A�J�/��3����������W�Q�Z�8�!�<����)�Q�W�W�c�1�5����)�Q�W�W�a��5��������Q�!��4�a�8r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.rr:rer,r�s     rrRzContextAPItests.test_quantize�
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.�	remainderr:rer,r�s     r�test_remainderzContextAPItests.test_remainder�
s����,�,�&�&���,�,�&�&���I��
�K�K���
�G�A�J�/��������Q��*�A�.�������W�Q�Z��3�Q�7�������Q���
�3�Q�7����)�Q�[�[�#�q�9����)�Q�[�[�!�S�9r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_remainder_nearz#ContextAPItests.test_remainder_near�
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_rotatezContextAPItests.test_rotate�
r�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�	test_sqrtzContextAPItests.test_sqrt�
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_same_quantumz!ContextAPItests.test_same_quantum�
s����,�,�&�&���,�,�&�&���I��
�N�N�7�1�:�w�q�z�2���������1�-�q�1���������
�A�6��:��������7�1�:�6��:����)�Q�^�^�S�!�<����)�Q�^�^�Q��<r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�test_scalebzContextAPItests.test_scaleb�
r�r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.r�r:rer,r�s     r�
test_shiftzContextAPItests.test_shifts����,�,�&�&���,�,�&�&���I��
�G�G�G�A�J���
�+���������A���*����������Q�/��3��������G�A�J�/��3����)�Q�W�W�c�1�5����)�Q�W�W�a��5r(c��|jj}|jj}|�}|j|d�|d��}|j	|jdd�|�|j	|j|d�d�|�|j	|jd|d��|�|jt|jdd�|jt|jdd�yr�)rr�r.�subtractr:rer,r�s     r�
test_subtractzContextAPItests.test_subtractr�r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_to_eng_stringz"ContextAPItests.test_to_eng_string�h���,�,�&�&���,�,�&�&���I��
�O�O�G�B�K�(���������,�a�0����)�Q�_�_�d�;r(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_to_sci_stringz"ContextAPItests.test_to_sci_string!rr(c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r.r�r:rer,r�s     r�test_to_integral_exactz&ContextAPItests.test_to_integral_exact*sn���,�,�&�&���,�,�&�&���I��
������,������,�,�R�0�!�4����)�Q�%8�%8�$�?r(c�`�|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�|jt|jdd�y)Nr�r(r)rr�r.r�r:rer,r�s     r�test_to_integral_valuez&ContextAPItests.test_to_integral_value3s����,�,�&�&���,�,�&�&���I��
������,������,�,�R�0�!�4����)�Q�%8�%8�$�?����)�Q�%8�%8�"�c�Br(N)Gr�rZr[rr
rrr�r�r�r2r�r�r�r�r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrRrr
rrrrrrrrrr rr(rryrySsv��9�(�!�#�$�_�$�$�.@�A�@�B�$��@�;1�z=�
+�	@�2�
4�
8�
?�
>�
B�7�;�:�
;�
7�
;�
7�2�2�48�:�5�8�6�8�6�;�6�1�4�3�
<�?�
;�
<�
4�
8�
4�
8�4�
9�9�8�
<�8�L�3�9�
9�
:�
?�
7�3�
=�
7�
6�
9�<�<�@�Cr(ryc��eZdZeZy)�CContextAPItestsNr�rr(rr"r"=r�r(r"c��eZdZeZy)�PyContextAPItestsNr�rr(rr$r$@r�r(r$c�<�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�ContextWithStatementc�0�|jj}|jj}|�}|�5}|�}ddd�|�}|j||d�|j	|d�|j|d�y#1swY�JxYw)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_localcontextGs����\�\�,�,�
��|�|�0�0���<��
�^�	#�y� �l�G�	#��L�	��
�
�h�	�+N�O�����7�,F�G��
�
�g�y�*L�M�	#�	#�s�B�Bc���|jj}|jj}|jj}|jj}|�}|d��}||�5}|�}ddd�|�}|j	||d�|jj|jd�|j||d�|j	|d�y#1swY�qxYw)Nr��r+r(zdid not set correct contextr)r*)rr.r�r�r�r:r+r+)	r�r.r�r�r,�new_ctxr-r.r/s	         r�test_localcontextargz)ContextWithStatement.test_localcontextargTs����,�,�&�&���\�\�,�,�
��|�|�0�0���|�|�0�0���<���r�"��
�'�
"�	#�i� �l�G�	#��L�	��
�
�h�	�+N�O�������w�|�|�5R�S�����'�+E�F��
�
�g�y�*L�M�
	#�	#�s�1C)�)C2c��|jjdtdddd��5}|j|jd�|j|j
|jj�|j|jd�|j|jd�|j|jd�|j|jd�ddd�|jt|jjd��|jt|jjd��|jt|jjd	�
�|jt|jjd��|jt|jjd�
�|jt|jjd��|jt|jjd��|jt|jjd��|jt|jjd��|jt|jjd��|jt|jjd�
�y#1swY���xYw)Nr�i���rr)r+r,rSrXr�ra)r^�rSrp�rXr�r��rar�rN�rM�r-)
rr�r�r:r+r,rSrXr�rarer,rr�s  r�test_localcontext_kwargsz-ContextWithStatement.test_localcontext_kwargses��
�\�\�
&�
&��o��2���'�
�
	+�����S�X�X�r�*����S�\�\�4�<�<�+G�+G�H����S�X�X�s�+����S�X�X�r�*����S�\�\�1�-����S�Y�Y��*�
	+�	
���)�T�\�\�%>�%>�"��M����*�d�l�l�&?�&?�a��H����*�d�l�l�&?�&?�b��I����*�d�l�l�&?�&?�!��L����*�d�l�l�&?�&?�q��I����)�T�\�\�%>�%>���L����)�T�\�\�%>�%>���K����)�T�\�\�%>�%>�b��I����)�T�\�\�%>�%>�b��I����)�T�\�\�%>�%>�R��H����)�T�\�\�%>�%>�R��H�3
	+�
	+�s�B=K�Kc���|jj�}|j}|jjd��5}|j	|jd�|j	|j|�ddd�|jjd��5}|j	|jd�|j	|j|�ddd�y#1swY�gxYw#1swYyxYw)Nr�r2r6)rr�r+r�r:)r�r��	orig_prec�ctx2s    r�>test_local_context_kwargs_does_not_overwrite_existing_argumentzSContextWithStatement.test_local_context_kwargs_does_not_overwrite_existing_argument�s����l�l�%�%�'���H�H�	�
�\�\�
&�
&�B�
&�
/�	2�4����T�Y�Y��+����S�X�X�y�1�	2��\�\�
&�
&�B�
&�
/�	2�4����T�Y�Y��+����S�X�X�y�1�	2�	2�	2�	2��	2�	2�s�9C"� 9C.�"C+�.C7c	���|jj}|jj}|jj}|jj}|jj
}|jj}|�}|j�|d��}|�5}	|j|	j|j�|j|	j|j�d|	j|<d|	_|j|jd�|j||	jd�|j|	j|�||�5}
|j|
j|j�|j|
j|j�|j||
j |d�d�|j#|
j|�|j|
j|�~
ddd�|j#|	j|�~	ddd�|j|jd�|j#|j|�|j#|j|�|j#|j|�|j#|j|�y#1swY��xYw#1swY��xYw)N�r8T���z0e-999z3.4e200r)rr�r.r�r�r�r�r)r:rMr-rSrMrer�r"rr)r�r�r.r�r�r�r�r,r3r$r"s           r�test_nested_with_statementsz0ContextWithStatement.test_nested_with_statements�sD���,�,�&�&���,�,�&�&���\�\�,�,�
��|�|�0�0���,�,�&�&���<�<�(�(���<�������s�#��
�^�	�r����R�X�X�x�~�~�6����R�X�X�x�~�~�6� $�B�H�H�W���B�G�����
�
�t�4����g�r�'8�'8�(�C��O�O�B�H�H�W�-�.��g�&�
�"�� � ����7�=�=�9�� � ����7�=�=�9��!�!�(�B�H�H�g�i�6H�!�L�� � ����'�!2�3�������� 2�3��

�
���R�X�X�h�/�0��!	�"	
���H�M�M�4�0��������0�1��������1�2�������w�/�0�������x�0�1�
�
��	�	�s&�,CK,�.B.K �'K,� K)	�%K,�,K5c	��|jj}|�5}~|�5}~|�5}~|�5}~ddd�ddd�ddd�ddd�y#1swY�"xYw#1swY�&xYw#1swY�*xYw#1swYyxYwr�rr��r�r�r$r"r#�c4s      r�test_with_statements_gc1z-ContextWithStatement.test_with_statements_gc1�s����|�|�0�0��
�^�	�r����
�2��!�^��r��%���2����
�	�	�������
�
��	�	�sO�	B�	A4�	A(�A	�A(�A4�B�A%
�!A(�(A1�-A4�4A=	�9B�B	c	��|jj}|�5}||�5}~||�5}~||�5}~~ddd�ddd�ddd�ddd�y#1swY�"xYw#1swY�&xYw#1swY�*xYw#1swYyxYwrrGrHs      r�test_with_statements_gc2z-ContextWithStatement.test_with_statements_gc2�s����|�|�0�0��
�^�	�r��b�!�
�R��!�"�%����%�b�)��R�����
�	�	�
������
�
��	�	�sO�	B�
A7�
A+�A	�A+�A7�B�A(
�$A+�+A4�0A7�7B	�<B�Bc	��|jj}|jj}|jj}|jj}|�5}~|d��}||�||�5}~|j|jd�~|d��}||�~|j|�jd�|d��}	||	�|j|�jd�||	�5}
~	|j|
jd�~
|d��}||�~|j|�jd�|�5}|j|jd�~ddd�ddd�ddd�ddd�y#1swY�"xYw#1swY�&xYw#1swY�*xYw#1swYyxYw)Nrr2rr�r�)rr.r�r�r3r:r+)
r�r.r�r�r3r$�n1r"�n2�n3r#�n4rIs
             r�test_with_statements_gc3z-ContextWithStatement.test_with_statements_gc3�s����,�,�&�&���|�|�0�0���\�\�,�,�
��\�\�,�,�
�
�^�	�r���a��B��r�N��b�!�
�R��� � ����!�,���!�_���2���� � ���!2�!2�A�6��!�_���2��� � ���!2�!2�A�6�!�"�%�
����$�$�R�W�W�a�0�� �a��B��r�N���$�$�Z�\�%6�%6��:�%���2��(�(����!�4���
�
�		�	�.���
�
��
�
��		�	�sV� G�;BF7�AF+� F	�>F+�F7�G�F(
�$F+�+F4�0F7�7G	�<G�GN)r�rZr[r0r4r=rArErJrLrRrr(rr&r&Cs.��N�N�"I�82�!2�F
�
�r(r&c��eZdZeZy)�CContextWithStatementNr�rr(rrTrT�r�r(rTc��eZdZeZy)�PyContextWithStatementNr�rr(rrVrV�r�r(rVc�4�eZdZd�Zd�Zed��Zd�Zd�Zy)�ContextFlagsc�
���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�]2\}}
|	j�||
�}|	jj!�D��cgc]
\}}|s�	|��}}}|D]�}|	j�|D]}||	|��
||
�}t#|�}|D]}||vs�|j%|��|j't(�
�|	jj!�D��cgc]
\}}|s�	|��}}}|j't(�
��j+||dd|�d
|�d�z��j+||dd|�d
|��z�����5ycc}}wcc}}w)Nc����jtk(r!d|j|<|j|r|�y|j	|�y�NT)rr�rMr-�_raise_error)r%�flagr�s  �r�raise_errorz7ContextFlags.test_flags_irrelevant.<locals>.raise_error�sC����|�|�q� �&*��
�
�d�#��=�=��&��J�'��$�$�T�*r(r*r3r�)r+rSrXr,r-rMz100E-425000010rrpz
9.87654321r%z=operation produces different answers depending on flags set: z	expected z, got r�z9operation raises different flags depending on flags set: )rr�r.r�r�r�r�r�r/rer�r�r+rr)rMr�rOr2r8r=r:)r�r�r.r�r�r�r�r�r^r%�
operations�flagsets�fnrr?�kr�rM�extra_flagsr]�new_ans�expected_flags�	new_flagss`                      r�test_flags_irrelevantz"ContextFlags.test_flags_irrelevant�s�����,�,�&�&���,�,�&�&���,�,�&�&���,�,�&�&���L�L�*�*�	��,�,�&�&���L�L�*�*�	�	+��q��I�#2�"�B�H��
�^�^�g�&6�7�8�9�
�\�\�G�A�J�<�(�
�[�[�7�<�0�'�,�2G�H�I�
�
�
��� 5�w�|�7L�M�N�
�
�
��� 5�w�|�7L�M�N��
��I��y�9�+��y�9�+��g�y�'�9�E�G��#�	W�H�B�����!��d�)�C�#*�=�=�#6�#6�#8�>�4�1�a�A�Q�>�E�>�'�
W���#�#�%�'�/�D����.�/��d�)��"&�e���'�4�D��>�1�&�-�-�d�3�4��#�#��#�+�+2�-�-�*=�*=�*?�E�3�1�Q�1�Q�E�	�E����2��&�� � ��g�!`�;>��!H�"I�J�� � ��N�"]�;I�9�"U�#V�W�+
W�
	W��?��"Fs�;
I9�I9�
I?
�I?
c���|jj}|jj}|jj}|�}|j	|j
|j�|j	|j|j
�|j|_|j|j
|j�|j|j|j
�d|j
|<|j
|_|j|j
|j�|j|j|j
�i}|j|j
�|j||j
�|j|j
|�d||<|j	||j
�|j	|j
|�|di}|j	||j
�|j	|j
|�dg}|j	||j
�|j	|j
|�y)NTFr)	rr.r�r�rMrMr-r:�update)r�r.r�r�r�rs      r�test_flag_comparisonsz"ContextFlags.test_flag_comparisons1s����,�,�&�&���,�,�&�&���,�,�&�&���I��	
���A�G�G�Q�W�W�-����A�G�G�Q�W�W�-��'�'���������!�'�'�*�������!�'�'�*��������'�'���������!�'�'�*�������!�'�'�*���	�����������A�G�G�$�������!�$���'�
����A�q�w�w�'����A�G�G�Q�'��U�O�����A�q�w�w�'����A�G�G�Q�'�
�G�����A�q�w�w�'����A�G�G�Q�'r(c��|jj}|jj}|jj}|�5}|j	|j
|�|j
�|j|d�d�|j|j|�|j
�|j|jd�d�|j|j|�|j
�|jd�}|j	|j|�|j|d�|j|j|�|j
�|jd�}|j	|j|�|j|d�|j|j|�d|j
|<|j
�|j||d�|j|j|�|j
�|j||jd�|j|j|�|j
�|jd�}|j	|j|�|j
�|jd�}|j	|j|�ddd�y#1swYyxYw)Ng@T)rr�rlr�rr-r)r:r"rMr�r�rJre)r�r�rlr�r�rs      r�test_float_operationz!ContextFlags.test_float_operationWsV���,�,�&�&�����4�4���|�|�0�0��
�^�.	6�q����Q�W�W�^�4�5�
�M�M�O����W�S�\�3�/��O�O�A�G�G�N�3�4�
�M�M�O����Q�-�-�c�2�C�8��O�O�A�G�G�N�3�4�
�M�M�O��"�"�3�'�A����Q�W�W�^�4�5����Q��$��O�O�A�G�G�N�3�4�
�M�M�O��+�+�C�0�A����Q�W�W�^�4�5����Q��$��O�O�A�G�G�N�3�4�'+�A�G�G�N�#�
�M�M�O����n�g�s�;��O�O�A�G�G�N�3�4�
�M�M�O����n�a�.>�.>��D��O�O�A�G�G�N�3�4�
�M�M�O��"�"�3�'�A����Q�W�W�^�4�5�
�M�M�O��+�+�C�0�A����Q�W�W�^�4�5�].	6�.	6�.	6�s
�
J+K>�>Lc�����	�
���
����������jj��jj}�jj��jj}d��fd�	�	�d���d��
d�d��d���d��d�d	��d
���d��td��
td
��d��	�
���
��������fd�	}d���fd�	}|�}||�5}�j
|j��||d��||d��d|j�<||���||���ddd�y#1swYyxYw)Nc����|j�t||�}|�k(r�j|||�n�j||�d��j	|j
��yr[)r)r!rer�r"rM)r�rUr&r%�signalr�rlr�s      ��r�assert_attrz7ContextFlags.test_float_comparison.<locals>.assert_attr�s\������!���4� �A���'��!�!�&�!�Q�/��
�
�a��d�D�)��O�O�G�M�M�.�9�:r(rXrYr[rZr:r�r�rIr�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�y)	N)rr)rr
rrr�r�rxr�)r�)r�ror&r�rp�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�<�
=�
���(�A�t�<��
�J��!�T�B��
�F�H�a��>���
�H�a��>�����!�T�:��	�9�h��4�@���u�h��4�8�
����!�T�:������X�q�$�?��	�5�(�A�t�<���y�(�A�t�<������e��h��4�Hr(c�p��|j�td�d�g�}�jt|�d��j	|j
��|j�|r �j
|td�d�g�ntd�d�g�}�j	|j
��|j�d�d�dfv}�j	|j
��|j�d�d�dddiv}�j	|j
��y)	Nr7z100.0rr�r�g$@r�rU)r)r�r:�lenr"rMre�sorted)r�rorrUr�rlr�s    ���r�test_containersz;ContextFlags.test_float_comparison.<locals>.test_containers�s����
�M�M�O��U�G�G�,�-�.�A����S��V�Q�'��O�O�A�G�G�N�3�4�
�M�M�O���!�!�&�&�3����2H�I��D�'�&�/�2�3���O�O�A�G�G�N�3�4�
�M�M�O�����#�.�.�A��O�O�A�G�G�N�3�4�
�M�M�O������c�#�6�6�A��O�O�A�G�G�N�3�4r()roTr)rr�r.rlr�r�rr-)r�r.r�r~r�r�r�r�rlrprrrsrtrurvrwrxryrzr{r|r}s`      @@@@@@@@@@@@@@@r�test_float_comparisonz"ContextFlags.test_float_comparison�s1�����,�,�&�&���,�,�&�&�����4�4���|�|�0�0��	;��&�/���������������V�_�
����
��
�#���K�(�	��e����&�M�	�	I�	I�	I�<	5�*�Y��
�"�
�	6�����Q�W�W�^�4�5���4� ��A�d�+�&*�A�G�G�N�#���>�*��A�n�5�	6�	6�	6�s
�(AE�Ec��|jj}|jj}|jj}|jj}|�}|j|j|�|j|j|�|j�d|j|<d|j|<|j|j|�|j|j|�yr[)
rr�r.r�rlrrMr-�clear_trapsr")r�r�r.r�rlr%s      r�test_float_operation_defaultz)ContextFlags.test_float_operation_default�s����,�,�&�&���,�,�&�&���,�,�&�&�����3�3���)��������~�6�7�������~�6�7�����!%��
�
�g��(,��
�
�n�%�����
�
�n�5�6�����
�
�g�.�/r(N)	r�rZr[rgrjrrlr�r�rr(rrXrX�s1��@W�D$(�L�36��36�jY6�v0r(rXc��eZdZeZy)�
CContextFlagsNr�rr(rr�r��r�r(r�c��eZdZeZy)�PyContextFlagsNr�rr(rr�r��r�r(r�c��eZdZdZd�Zd�Zy)�SpecialContextszTest the context templates.c
�v�|jj}|jj}|jj}|jj}|jj
}|jj}|jj}|jj}|jj}	t||d|||||	g�|�j�}
|j}|j}d}
	dx|_|_||fD]?}||�|�}|j||�|j|jd��A	||_||_||
�|
r|
�y#t$r}|j }
Yd}~�5d}~wwxYw#||_||_||
�|
r|
�wxYw)Nr-i�)r�BasicContext�ExtendedContextr�r3r�r�r�r�r�r'rnr+r+r:�	Exceptionr�)r�r�r�r�r3r�r�r�r�r��savecontext�basic_context_prec�extended_context_prec�ex�templater�rHs                 r�test_context_templatesz&SpecialContexts.test_context_templatess����|�|�0�0���,�,�6�6���\�\�,�,�
��\�\�,�,�
��<�<�8�8�����4�4���<�<�(�(���L�L�*�*�	��,�,�&�&���t�\�7�
�~�x��G�L�	
�!�l�'�'�)��)�.�.�� /� 4� 4��
��	�7:�:�L��� 4�(�/�9�
.���8�$��L��� � ��H�-�� � �����-�	
.�!3�L��#8�O� ��{�#������
�	����B��	��!3�L��#8�O� ��{�#�����s1�
AE:�F�:	F�F�F�F�F�F8c���|jj}|jj}|jj}|jj}|jj
}|jj}|jj}|jj}|j|jd�|j|jd�t||d|||g�|�j�}	|j}
d}	|�}|j}
d|_
|�}|j|j|
�||�|�}|j||�|j|jd�|
|_
||	�|r|�y#t$r}|j}Yd}~�.d}~wwxYw#|
|_
||	�|r|�wxYw)Nr*r-i�)rr5r�r�r�r3r�r�r�r:r+r'rnr+r�r�)r�r5r�r�r�r3r�r�r�r��default_context_precr�r��saveprecrHs               r�test_default_contextz$SpecialContexts.test_default_context%s������4�4���|�|�0�0���,�,�6�6���\�\�,�,�
��\�\�,�,�
��<�<�8�8�����4�4���<�<�(�(������*�*�A�.�����-�-�q�1��t�^�W�
�~�x�8�	
�!�l�'�'�)��-�2�2��
��	���A��v�v�H�"%�N����A����Q�V�V�X�.��~�&���A����Q��/����Q�V�V�S�)�#7�N���{�#�������	����B��	��#7�N���{�#�����s+�A:F,�,	G�5G�G�G�G�G#N)r�rZr[r\r�r�rr(rr�r��s��%�"�H'r(r�c��eZdZeZy)�CSpecialContextsNr�rr(rr�r�Nr�r(r�c��eZdZeZy)�PySpecialContextsNr�rr(rr�r�Qr�r(r�c��eZdZd�Zy)�ContextInputValidationc	���|jj}|jj}|j�}dD]e}t	||d�|jt
||�d�|jtt||d�|jtt||d��gt	|dd�|jt
|d�d�|jtt|dd�|jtt|dd�|jtt|d	d�|jtt|d	d
�|jtt|d	d�|jtt|d	d�dD][}|jtt||d�|jtt||d
�|jtt||gd���]|jtt|dd�|jtt|dg�|jtt|di�|jtt|dddi�dD]#}|jt|j|��%|jtt|d
�|jtt|d
�|jt|d��|jt|d��|jt|d
��|jt|d��|jt|dg��|jt|dg��|jt|d��|jt|d��y)N�r+rXr{rprrSr|r�rrr�r,r*r��r�rarrlr�rMr-r�r)r+rXrSr,r�rarMr-rNr:r9r�r;�Qr<�rr)rr)
rr.r5rnr*r:r!rerr,r-�KeyError�__delattr__)r�r.r5r�r&s     r�test_invalid_contextz+ContextInputValidation.test_invalid_contextVs����,�,�&�&�����4�4�����!��%�	B�D��A�t�V�$����W�Q��-�v�6����j�'�1�d�B�?����i��!�T�5�A�		B�	��6�7�#������F�+�W�5����*�g�q�&�!�<����)�W�a���A����)�W�a��R�@����)�W�a��Q�?����)�W�a��S�A����)�W�a��U�C�*�	D�D����j�'�1�d�B�?����j�'�1�d�A�>����i��!�T�7�C�	D�	
���.�'�1�f�c�B�	
���)�W�a��"�=����(�G�Q���<����(�G�Q��-�a�0�	2�'�	C�D����n�a�m�m�T�B�	C�
	
���)�W�a��3����)�W�a��3�	
���)�W�v��>����)�W�u��=����*�g�Q��7����*�g���;����(�G�C�5��9����(�G�C�5��9�	
���)�W�E��:����)�W�E��:r(N)r�rZr[r�rr(rr�r�Ts��:;r(r�c��eZdZeZy)�CContextInputValidationNr�rr(rr�r��r�r(r�c��eZdZeZy)�PyContextInputValidationNr�rr(rr�r��r�r(r�c��eZdZd�Zy)�ContextSubclassingc�	���|j��j}�j��j}�j}�j
}�j}�j}�j}�j}�j}	G��fd�d��}
��}|
�}dD](}
|jt||
�t||
���*|jt|
fiddi��|
d��}|j|jd�|j|	|j |d�d	�|jt"|
fid
di��|
t$d��}|j|j&t$�|j|j)|d
��d�|jt|
fiddi��|
dd��}|j|j*d�|j-|d�|d��}|j||d��|||||fD] }|j/|j0|��"|jt|
fiddi��|
dd��}|j|j2d�|j||j,|d�|d��|jt4k(r(|||fD] }|j/|j0|��"|jt|
fiddi��|
d	��}|j|j6d	�|j9d�}|j|j;|�d�|jt|
fiddi��|
dd� �}|j|j<d�|j)|d��}|jt?|�d!�|jt"|
fid"di��|
||g�#�}||fD] }|j/|j0|��"|jA�tB�D] }|jE|j0|��"|jt"|
fid$di��|
||g�%�}||fD] }|j/|jF|��"|jI�tB�D] }|jE|jF|��"y)&Nc�"��eZdZ			d��fd�	Zy)�>ContextSubclassing.test_context_subclassing.<locals>.MyContextNc	�~���
j|�|�||_|�||_|�||_|�||_|�||_|�||_|�3t|t�rt�|zD�	cic]}	|	|	|v��	}}	||_
|�4t|t�rt�|zD�	cic]}	|	|	|v��	}}	||_yycc}	wcc}	wr)r�r+r,rSrXr�rar�rOr3rMr-)r�r+r,rSrXr�rarMr-r�r.rs          ��rr�zGContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__�s����� � ��&��#� $�D�I��'�$,�D�M��#� $�D�I��#� $�D�I��'�$,�D�M��$�!&�D�J��$�!�%��.�9G��9P�SX�9X� Y�A��A��J�� Y�� Y�!&�D�J��$�!�%��.�9G��9P�SX�9X� Y�A��A��J�� Y�� Y�!&�D�J�%��!Z��!Zs�)B5�B:)NNNNNNNNr�)r.rs��r�	MyContextr��s���IM�@D�%)�
'r(r��r+r,rSrXr�rarMr-r+rprr2�9e2rr,�XYZ)r,r+rar*rSrr)rSr+z1e-99z2.234e-2000r:rX)rXr+�1e99z
2.234e2000r�r9�1E222z1e+222rar�c)rarXz!1.000000000000000000000000000E+99rMr;r-r<)%rr�r.r�r�r�r�r�r�r�r�r:r!rerr+rr,r�r,r�rSr�r"rMrXr�r�r�r�rar5r)r3rr-r�)r�r�r�r�r�r�r�r�r�r�r�r�rr&rror.rs                @@r�test_context_subclassingz+ContextSubclassing.test_context_subclassing�st����,�,���/�/���/�/���/�/�� �/�/���/�/���#�#���/�/���%�%�	��%�%�	�"�3�3��	'��	'�4
�I���K��'�	A�D����W�Q��-�w�q�$�/?�@�	A�
	����*�i�?�F�2�;�?��1����������#����*�A�J�J�����J�	����)�Y�E�:�e�2D�E��z��2��������Z�0����������/��3�	����*�i�>�F�1�:�>��2�A�&���������$�
�E�E�'�'�"�G�M�$:�;������G�E�N�+��	�9�g�w�G�	-�F��O�O�A�G�G�F�O�,�	-�	����*�i�?�F�2�;�?��1�1�%���������#����(�A�E�E�7�6�?�G�L�<Q�R��<�<�1��"�H�g�6�
1����������0�
1�	����*�i�C�J�r�?�C��q�!��������Q�'�
���W�%���������+�X�6�	����*�i�?�G�A�;�?��A�B�'��������!�$�
�F�F�7�6�?�#������Q��!D�E�	����)�Y�B�7�5�/�B��W�n�5�6����/�	-�F��O�O�A�G�G�F�O�,�	-�	�
�
��$�W�-�	.�F����Q�W�W�V�_�-�	.�	����)�Y�B�7�5�/�B��W�n�5�6����/�	-�F��O�O�A�G�G�F�O�,�	-�	�
�
��$�W�-�	.�F����Q�W�W�V�_�-�	.r(N)r�rZr[r�rr(rr�r��s��i.r(r�c��eZdZeZy)�CContextSubclassingNr�rr(rr�r�r�r(r�c��eZdZeZy)�PyContextSubclassingNr�rr(rr�r�r�r(r�c��eZdZd�Zd�Zd�Zy)�CheckAttributesc��|jtjtj�|jtjtj�|jtj
tj
�|jtjtj�|jtjduxstjdu�|jtjduxstjdu�|jtjtj�|jtt�tt��y)NTF)r:r�rPr�r�rirjr"r6�__version__�dirr�s r�test_module_attributesz&CheckAttributes.test_module_attributess���	
������Q�Z�Z�0�������Q�Z�Z�0�������Q�Z�Z�0�������a�k�k�2�������$�.�I�!�.�.�E�2I�J�������$�.�I�!�.�.�E�2I�J��������
�
�6�����Q���Q��(r(c�v�ttj��D�cgc]}d|vs|jd�r�|��}}ttj��D�cgc]}d|vs|jd�r�|��}}|jt
|�t
|�z
t
��ycc}wcc}w)N�__rD)r�r�r.rr�r:r��r�rrr�s    r�test_context_attributesz'CheckAttributes.test_context_attributess����A�I�I�K�(�O�1�D�A�I�Q�\�\�#�=N�Q�O��O��A�I�I�K�(�O�1�D�A�I�Q�\�\�#�=N�Q�O��O�����Q��#�a�&��#�%�0��
P��Os�B1�B1� B6�;B6c�z�ttjd��D�cgc]}d|vs|jd�r�|��}}ttjd��D�cgc]}d|vs|jd�r�|��}}|j	t|�t|�z
t��ycc}wcc}w)Nr*r�rD)r�r�r�rr:r�r�s    r�test_decimal_attributesz'CheckAttributes.test_decimal_attributes$s����A�I�I�a�L�)�P�1�T�Q�Y�a�l�l�3�>O�Q�P��P��A�I�I�a�L�)�P�1�T�Q�Y�a�l�l�3�>O�Q�P��P�����Q��#�a�&��#�%�0��
Q��Ps�B3�B3�"B8�=B8N)r�rZr[r�r�r�rr(rr�r�s��
)�1�1r(r�c�Z�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zy)�Coveragec��|jj}|j|d�j�d�|j|d�j�d�|j|d�j�d�y)N�	1234e9999i'r�rr�)rr�r:rfrbs  r�
test_adjustedzCoverage.test_adjusted,si���,�,�&�&�������-�6�6�8�%�@�������0�0�2�A�6�������0�0�2�A�6r(c��|jj}|jj}|d�j�}|j	|d�|�}|j|d��}|j	|d�y)Nr*)rr�r�rhr:)r�r�r�rr�s     r�test_canonicalzCoverage.test_canonical4sk���,�,�&�&���\�\�,�,�
��A�J� � �"������A���L��
�K�K���
�#������A�r(c�\�|jjj�}d|_d|_d|_t|_d|_d|_	t|jD] }d|j|<d|j|<�"|j�}d}|j||�y)Nr�r3rrFz{Context(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[], traps=[]))rr5rnr+rXrSr�r,r�rar3rMr-�__repr__r:)r�r�r%rr�s     r�test_context_reprzCoverage.test_context_repr?s����L�L�'�'�,�,�.�����������$��
���
����!�$�,�,�/�	!�C� �A�G�G�C�L� �A�G�G�C�L�	!�
�J�J�L��
"��	
����A�r(c�
�|jj}|jj}|�5}d|_d|_d|_|j
t|d��d�|j
|d�dzd�|j
|d�dzd	�|j
|d�d
zd�|j
|d�j|d�d�d�|j|d
�jd
d�j�d�|j
t|d�d	d
�d	�|j
|d�j�d�|j|d�j�d�|j|d�j�d�|j
|d�j�d�|j
|d�j!�d�|j
|d�j#�d	�|j
|d�j%�d�|j
|d�d�|j
|d�dzd�|j
|d�j'�d�|j
|d�j)�|d��|j
|d�j+�|d��|j
|d�j-�d�|j
|d��d�|j
|d�d
zd�|j
|d�d
z
d�|j
|d�j/�d�|j1|d�j3��|j1|d�j5��|j1|d�j5��|j1|d�j7��|j1|d�j9��|j1|d�j;��|j1|d�j;��ddd�|�5}d|_d d!z}||�}|j=�}|j
||�|j?�}|j
||�|jA|d��}|j
||�ddd�y#1swY��xYw#1swYyxYw)"Nrrpz-10r��7r�r(rrrr�z1.2r^rxTz1.01r�F�20�580r�r�r*z2E+1z-1E+1z+Normalr�z1.12345r�r�r`r�i�i�)!rr�r�r+rXrSr:r�r�r�r��powrUr�r�r�r�r�ryr�r�r�rgr�r"r{r}r�r�r�rqrsru)r�r�r�r�rr�rs       rr�zCoverage.test_implicit_contextRsE���,�,�&�&���|�|�0�0��
�^�<	4�q��A�F��A�F��A�F�
���S����0�"�5����W�S�\�A�-�q�1����W�T�]�Q�.��2����W�T�]�a�/��3����W�U�^�/�/�����C�Q�G��M�M�'�%�.�,�,�Q��2�9�9�;�T�B����S����a��3�Q�7����W�V�_�0�0�2�A�6��M�M�'�&�/�3�3�5�u�=��M�M�'�&�/�6�6�8�$�?����W�T�]�-�-�/��3����W�T�]�0�0�2�A�6����W�U�^�0�0�2�A�6����W�T�]�9�9�;�Q�?����g�e�n�_�b�1����W�S�\�A�-�q�1����W�T�]�5�5�7��;����W�T�]�4�4�6����H����W�U�^�5�5�7���9I�J����W�T�]�7�7�9�9�E����g�d�m�^�R�0����W�T�]�Q�.��2����W�T�]�Q�.��2����W�Y�/�A�A�C�Q�G�
�O�O�G�C�L�5�5�7�8��O�O�G�C�L�2�2�4�5��O�O�G�C�L�2�2�4�5��O�O�G�F�O�3�3�5�6��O�O�G�D�M�3�3�5�6��O�O�G�C�L�0�0�2�3��O�O�G�C�L�0�0�2�3�y<	4�~�^�	#�q��A�F����A�����A��
�
��A����Q��"��
�
��A����Q��"����G�A�J�'�A����Q��"�	#�	#�<	4�<	4��~	#�	#�s�Q)T8�,BU�8U�U
c��|jj}|jj}|jj}|jj}|�5}t|d�d�\}}|j
||d��|j
||d��t|d�d�\}}|j|j�xr|j��d|j|<t|d�d�\}}|j|j�xr|j��d|j|<|j�t|d�|d��\}}|j|j�xr|j��|j|j|�|j�t|d�d	�\}}|j|j�xr|j��|j|j|�|j�t|d
�d
�\}}|j|j�xr|j��|j|j|�d|j|<|j�t|d�d
�\}}|j|j�xr|j��|j|j|xr|j|�ddd�y#1swYyxYw)N�10912837129r�10901935�194rxr�Fr�r�r�)
rr�r�r�r�r)r:r"r�r-r)rMr)r�r�r�r�r�r�r�r�s        rr�zCoverage.test_divmod�s���,�,�&�&���|�|�0�0���<�<�8�8�����4�4��
�^�!	5�q��'�-�0�$�7�D�A�q����Q��
� 3�4����Q����/��'�%�.�!�,�D�A�q��O�O�A�H�H�J�5�1�8�8�:�6�(-�A�G�G�$�%��'�%�.�!�,�D�A�q��O�O�A�H�H�J�5�1�8�8�:�6�(-�A�G�G�$�%�
�M�M�O��'�%�.�'�%�.�9�D�A�q��O�O�A�H�H�J�5�1�8�8�:�6��O�O�A�G�G�$4�5�6�
�M�M�O��'�%�.�#�.�D�A�q��O�O�A�M�M�O�:����
�;��O�O�A�G�G�$4�5�6�
�M�M�O��'�!�*�a�(�D�A�q��O�O�A�H�H�J�5�1�8�8�:�6��O�O�A�G�G�$4�5�6�&+�A�G�G�N�#�
�M�M�O��'�"�+�q�)�D�A�q��O�O�A�M�M�O�:����
�;��O�O�A�G�G�$4�5�4��G�G�N�3�
5�A!	5�!	5�!	5�s
� K&M�Mc��|jj}|jj}|jj}|jj}|�5}d|_|j
�|j|d�dz|d��|j|j|�d|_d|_
d|_|j
�d|j|<|j|d�|d	�z|d
��|j|j|�ddd�y#1swYyxYw)Nr�r�r�rYrrpFr�r�r�)
rr�r�r�r�r+r)r:r"rMrXrSr-)r�r�r�r�r�r�s      rrzCoverage.test_power�s����,�,�&�&���|�|�0�0���<�<�(�(���,�,�&�&��
�^�	/�q��A�F�
�M�M�O����W�U�^�s�2�G�F�O�D��O�O�A�G�G�G�,�-��A�F��A�F��A�F�
�M�M�O� %�A�G�G�H�����W�U�^�w�u�~�=�w�u�~�N��O�O�A�G�G�H�-�.�	/�	/�	/�s
� CD9�9Ec��|jj}|jj}|jj}|�5}d|_d|_d|_d|j|<|d�j|d��}|j|j��ddd�y#1swYyxYw)NrrpFr��1e1)rr�r�r�r+rXrSr-rr"r��r�r�r�r�r�rs      rrRzCoverage.test_quantize�s����,�,�&�&���|�|�0�0���<�<�8�8��
�^�	(�q��A�F��A�F��A�F�(-�A�G�G�$�%����$�$�W�U�^�4�A��O�O�A�H�H�J�'�
	(�	(�	(�s
�
A!B4�4B=c��|jj}|jj}|�}|j|d�j	�d�|j|j	�d�y)Nr�r�)rr�r�r:rgr�s    r�
test_radixzCoverage.test_radix�sZ���,�,�&�&���\�\�,�,�
��L��������+�+�-�r�2��������B�'r(c	��|jj}dD].}|jt|d�|�d�t��0y)N)rrrrrrr r"r�r)rr�r�r!r_)r�r�r&s   rr-zCoverage.test_rop�sF���,�,�&�&��M�	N�D��M�M�5�'�'�#�,��5�e�<�n�M�	Nr(c��|jj}|jj}|�5}d|_|j	t|d�j
��d�|j	t|d�j
��d�|j	t|d�j
d��d�|j	t|d	�j
d
��d�|j	t|d	�j
d��d
�|jt|d�jd�|jt|d�jdd�ddd�y#1swYyxYw)Nr�r`r(z9.99e-5r`rprrz1.23457rar�z1.2345000000r�z0E+10rTr�r�)	rr�r�r+r:r5�	__round__rer,)r�r�r�r�s    r�
test_roundzCoverage.test_round�s5���,�,�&�&���|�|�0�0��
�^�
	J�q��A�F����S����!:�!:�!<�=�t�D����S���!3�!=�!=�!?�@�#�F����S���!6�!@�!@��!C�D�i�P����S���!2�!<�!<�R�!@�A�>�R����S���!2�!<�!<�S�!A�B�G�L����i����)B�)B�C�H����i����)B�)B�A�q�I�
	J�
	J�
	J�s�EF�Fc�|�|jj�}|jt|jdg�y)Nr)rr.rerr�)r�r�s  r�test_create_decimalzCoverage.test_create_decimal
s.���L�L� � �"�����*�a�&6�&6���>r(c�:�|jj}|jj}|�5}d|_|ddz�ddzz}|j	t|�d�|j	|j
�d�ddd�y#1swYyxYw)Nr\i�i�r�iSrr)rr�r�r+r:rr��r�r�r�r�rs     rr9zCoverage.test_ints����,�,�&�&���|�|�0�0��
�^�	1�q��A�F���d�
�#�b�$�h�.�A����S��V�Q�'����Q�]�]�_�a�0�		1�	1�	1�s�AB�Bc�2�|jj}|�}d|_ddz}|j|�}|j	||�|j|�}|j	||�|j
|d�}|j	||�y)Nr�i�i�r)rr.r+rqr:rsru)r�r.r�rr�s     rr�zCoverage.test_copys����,�,�&�&���I������d�l�O��
�J�J�q�M������Q�B��
�M�M�!�������Q�B��
�K�K��1�������Q�B�r(N)r�rZr[r�r�r�r�r�rrRr�r-r�r�r9r�rr(rr�r�*sH��7�	��&O#�b'5�R/�((�(�N�J�"?�1� r(r�c��eZdZeZy)�	CCoverageNr�rr(rr�r�+r�r(r�c�,��eZdZeZ�fd�Z�fd�Z�xZS)�
PyCoveragec�~��t�|��tj�|_tj
d�yr
rrs �rr�zPyCoverage.setUp1rr(c�`��tj|j�t�|��yrrrs �rrzPyCoverage.tearDown6rr(rrs@rr�r�.rr(r�c��eZdZdZd�Zy)�PyFunctionalityz!Extra functionality in decimal.pyc��tj}tj}gd�}|D](\}}}|jt	||�|�|��*y)N)
)z.0er�z1e+0)z#.0er�z1.e+0)rCr�r�)z#.0fr��1.)rK�1.1r�)z#gr�r�)rMr�r�)z#.0gr�r�)rSr�z100%)z#.0%r�z100.%)r�r�r�r:r�)r�r�r�r�r�rrJs       r�test_py_alternate_formattingz,PyFunctionality.test_py_alternate_formatting=sM���)�)���~�~����*�	>�N�C��F����V�G�A�J��4�f�=�	>r(N)r�rZr[r\r�rr(rr�r�:s
��+�>r(r�c�.�eZdZdZd�Zd�Zd�Zd�Zd�Zy)�
PyWhiteboxz White box testing for decimal.pyc�R�tj}tj}|�5}d|_|d�|d�z}|j	||d��|d�|d�z}|j	||d��|d�|d�z}|d�|d	�z}|j	||d
��|d�|d	�z}|dd
z�|d	�z}d|_|d�|d�z}d|_|ddz�|d�z}ddd�y#1swYyxYw)Nr�ir�z
0.00390625z-0.6z0.0012885819�256e7l�o�
�z-0.0625r]�152587890625e7rric
r�152587890625��riB)r�r�r�r+r:r�s     r�test_py_exact_powerzPyWhitebox.test_py_exact_powerUs$���)�)���~�~��
�^�	3�q��A�F����'�&�/�1�A����Q��� 5�6����'�&�/�1�A����Q��� 7�8��� �G�F�O�3�A���%���);�;�A����Q����/��(�)�W�Y�-?�?�A���4�� �G�I�$6�6�A��A�F���'�7�6�?�:�A��A�F���3���7�6�?�2�A�)	3�	3�	3�s�C,D�D&c������	�tj}tj}tj}|j	�}td�ttD��|_||�|d��|d��|d��	|d��d1����	�fd�	}|���j�j�j��j�j�j��j�j�j�|d�|dd�|dd�|d	d�|d
d�|dd�|dd�|d
d�|dd�|d�|dd�|d�|d�|d�|dd�|dd�|d�|d�|d�|dd�|dd�|dd�|d�|dd�|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/�|d0�y)2Nc3�$K�|]}|df���
y�w)rNr)rrs  rr z=PyWhitebox.test_py_immutability_operations.<locals>.<genexpr>ws����9�!��1�v�9�s�z-25e55z33e+33c���|r�td|zdz��j�j�j��j�j�j��j�j�j��j�j�j��j�j�j��j�j�j�ytd|zdz��j�j�j��j�j�j��j�j�j�y)Nzd1.z(d2)z())r6r:�_sign�_int�_exp)�	operation�useOther�b1�b2r�r�r�s  �����r�checkSameDecz@PyWhitebox.test_py_immutability_operations.<locals>.checkSameDecs�����U�Y�&��/�0�� � ����2�8�8�4�� � ����"�'�'�2�� � ����"�'�'�2�� � ����2�8�8�4�� � ����"�'�'�2�� � ����"�'�'�2��U�Y�&��-�.�� � ����2�8�8�4�� � ����"�'�'�2�� � ����"�'�'�2r(�__abs__rTr�rrrrr
r�	__float__rrv�__int__�	__trunc__rr�__neg__�__bool__�__pos__r!rrr�r rrr"r�__str__rrrfr�rr�r�r�rr�r�r�r�r�)F)r�r�r5r3rnr0r3r-r:rrr)
r�r�r5r3r�r
rrr�r�s
`     @@@@r�test_py_immutability_operationsz*PyWhitebox.test_py_immutability_operationsps^����)�)���)�)���\�\�
����!���9�~�a�'8�9�9����1�
�
�X�
��
�X�
��
�X�
��
�X�
��
	3�
	3�	���������2�8�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�}||�}|jt|�d�|j	t|�t|��y)Nrhri)r�r�r:r5rMr=r�s    r�test_py_decimal_idzPyWhitebox.test_py_decimal_id�sI���)�)���B�K���A�J������Q���&����B�q�E�2�a�5�)r(c���tj}tj}|�5}|d�jdt�}|j|j
��ddd�y#1swYyxYw)Nrxr�)r�r�r��_rescaler�r"r�r�s     r�test_py_rescalezPyWhitebox.test_py_rescale�sX���)�)���~�~��
�^�	(�q����'�'��8�4�A��O�O�A�H�H�J�'�	(�	(�	(�s�<A-�-A6c�|�tj}|jt|d�jdt
�y)Nz3.1234r)r�r�rer�_roundr�rbs  r�test_py__roundzPyWhitebox.test_py__round�s*���)�)�����*�g�h�&7�&>�&>��8�Lr(N)	r�rZr[r\rrrrrrr(rr�r�Rs!��*�3�6M$�^*�(�Mr(r�c�@�eZdZdZed��Zed��Zed��Zy)�CFunctionalityzExtra functionality in _decimalc�r�tj}tj}tj}tj}d�}||�}|j|jd�|j|jd�|j|jd�|||�||�}|j|jd�|j|jd�|j|jd�|||�||�}|j|jd�|j|jd	�|j|jd
�|||�|jt|d�|jt|d�|jt|d
�y)Nc�t�|j|jd�t||dg�t||dg�y)Nrr-rM)r:rar')r�r%s  r�assert_restz7CFunctionality.test_c_ieee_context.<locals>.assert_rest�s2�����W�]�]�A�.��4��'�2�6��4��'�2�6r(r��`i����r|rCrD�"ii�r�rpi)r��IEEEContext�	DECIMAL32�	DECIMAL64�
DECIMAL128r:r+rXrSrer�r)r�r&r'r(r)r#r�s       r�test_c_ieee_contextz"CFunctionality.test_c_ieee_context�sW���m�m���K�K�	��K�K�	��\�\�
�	7�

�	�"���������#��������$��������%��D�!���	�"���������$��������%��������&��D�!���
�#���������$��������&��������'��D�!��	
���-��e�<����*�k�2�6����*�k�4�8r(c��tj}|tjtj��}|j	|j
tj�|j	|jtj�y)N)rMr-)r�r.r9�
DecRoundedr:�_flags�_trapsr�s   r�test_c_contextzCFunctionality.test_c_context�sO���)�)���!�,�,�a�l�l�;��������1�<�<�0�������1�<�<�0r(c�`�tjtjtjtjtj
tjtjtjtjtjtjtjtjtjtjf}|j!tj"d�|j!tj$d�|j!tj&d�|j!tj(d�t+|�D]\}}|j!|d|z��|j!tj,tjtjztj
ztjztjztjztjz�|j!tj.tj,tjz�|j!tj0tj.tjztjz�y)Nrnr��ir)r�r9�DecConversionSyntax�DecDivisionByZero�DecDivisionImpossible�DecDivisionUndefined�DecFpuError�
DecInexact�DecInvalidContext�DecInvalidOperation�DecMallocError�DecFloatOperation�DecOverflowr,�DecSubnormal�DecUnderflowr:r'r(r)�IEEE_CONTEXT_MAX_BITSr/�DecIEEEInvalidOperation�	DecErrors�DecTraps)r��condrFr�s    r�test_constantszCFunctionality.test_constantss���
�L�L�!�/�/��1D�1D�
�#�#�Q�%;�%;�
�M�M�1�<�<��)<�)<�
�!�!�1�#3�#3�
���������
�N�N�A�N�N�

��	
������b�)�������b�)�������s�+�����0�0�#�6��d�O�	&�D�A�q����Q��1��%�	&�	
����2�2��.�.��0�0�1��/�/�0����'��,�,�	-�
�.�.�/��)�)�
*�	+�	
�������2�2��,�,�-�	.�	
���������Q�]�]�2�1�>�>�A�	Cr(N)r�rZr[r\�requires_extra_functionalityr*r/rDrr(rr r �sB��)�!�!9�"�!9�F"�1�"�1�"�#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�Zej6ej:j=d�d�ej6ed�ej6e dd��d�d����Z!d�Z"y) �	CWhiteboxzWhitebox testing for _decimalc�h�tj}tj}ddz}ddz}|�5}d|_t	d�D]V}tj||�}tjdd�}||z}	||�||�z}
|j|	|
��X	ddd�y#1swYyxYw)Nr��#�$i@Brrr�i�)r�r�r�r+rsr(r�r:)r�r�r�rrr�rFr�rUrr�s           r�test_bignumzCWhitebox.test_bignum/s����)�)���~�~��
��V��
��V��
�^�	'�q��A�F��1�X�
'���$�$�R��,���$�$�T�4�0����F���A�J�'�!�*�,��� � ��A�&�
'�	'�	'�	'�s�A,B(�(B1c�P�|jttjdd�y)Nr*r)rer,r�r�r�s r�test_invalid_constructionz#CWhitebox.test_invalid_construction@s�����)�Q�Y�Y��5�9r(c���tj}tj}tj}tj}||��5|j||d�ddd�y#1swYyxYw)N�1e9999999999999999999)r�r�r�r.r�re)r�r�r�r.r�s     r�test_c_input_restrictionz"CWhitebox.test_c_input_restrictionCs^���)�)���-�-���)�)���~�~��
�'�)�
$�	7����.��5�
7�	7�	7�	7�s�A+�+A4c��tj}tj}|j�}d|_d|_d|_t|_d|_	d|_
ttD] }d|j|<d|j|<�"d|j|<d|j|<|j�}d}|j||�y)Nr�r3rrTaQContext(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�r5rlrnr+rXrSr�r,r�rar3rMr-r�r:)r�r5rlr�r%rr�s       r�test_c_context_reprzCWhitebox.test_c_context_reprNs����)�)���)�)�����!�����������$��
���
����!�!�$�	 �C��A�G�G�C�L��A�G�G�C�L�	 �#'������"&������
�J�J�L��
O��	
����A�r(c	�Z�tj}tj}tj}tj}tj
}tj}tj}tjdkD}|�}	|jt|	jjdd�|jt|	jjdd�|jt|	jj|�|jt|	jj|�|jt t"|	ddg�|jt t"|	ddg�|jtt"|	dddi�|jtt"|	dddi�|	jj%�}
|
|=d	|
d
<|jtt"|	d|
�|jtt"|	d|
�|rdnd}|rd
nd}dD]}
|jtt"|	|
|��!|jtt"|	d|�|jt||��|jt||��|jt||��|jt&||dz��|jt&||dz��|jt&||dz
��|jt&||dz��|jt&||dz��dD]�}
|jt&t"|	|
|dz�|jt&t"|	|
|dz
�t(j*dk7s�X|jtt"|	|
|�|jtt"|	|
|dz
���tjdk(rm|jt&t-|	d�|dz�|jt&t-|	d�|dz�|jt&t-|	d�|dz
�tjdk(r�|jtt-|	d�d�|jtt-|	d�d�|jtt-|	d�d�|jtt-|	d�d�|jtt-|	d�d�|jtt-|	d�d�dD]�}
|jtt"|	|
d�|jtt"|	|
d�|jt t"|	|
gd ��|s�_|jtt"|	|
d!�|jtt"|	|
d"���|jt t.d#t1��|jt t.d$t1��|�}|jt |d%�||�y)&Nr�i!rrMrr-r�ri�pr�r�r�l�N�Zoiʚ;r�rSr2r8r7rr:r9)r+rSrXr�ra�win32r�r�r�i���?rpi9�r�r���zwith localcontext("xyz"): passz-with localcontext(context=getcontext()): passr)r�r.r�r�rlr�r�r3rPrer�rM�__setitem__r-r�__delitem__r,r*rnr�r�platformr!�execr�)r�r.r�r�rlr�r�r3�HAVE_CONFIG_64r�r�int_max�gt_max_emaxr&�
saved_contexts               r�test_c_context_errorszCWhitebox.test_c_context_errorsks(���)�)���-�-���:�:���)�)���~�~���\�\�
��\�\�
��*�*�y�0���I��	
���(�A�G�G�$7�$7��a�@����(�A�G�G�$7�$7��a�@����*�a�g�g�&9�&9�8�D����*�a�g�g�&9�&9�;K�L����)�W�a��3�%�@����)�W�a��#��?����(�G�Q��!�A��?����(�G�Q��!�A��?�
�G�G�L�L�N��
�n����%�����(�G�Q���;����(�G�Q���;�,�'��� .�f�E��%�	I�D����j�'�1�d�K�H�	I����*�g�q�&�;�,�G�	
���*�g�K��@����*�g�K��@����*�g�[�L��A�	
���-��w�q�y��A����-��w�q�y��A����-���x��z��B����-����	��B����-��7�1�9��E�B�	L�D����m�W�a��w�q�y�I����m�W�a���x��z�J��|�|�w�&��!�!�*�g�q�$��H��!�!�*�g�q�$����
�K�	L�
�:�:��"����m�W�Q�8I�-J�%�a�i�
)����m�W�Q�8I�-J�%�a�i�
)����m�W�Q�8I�-J�&�h�q�j�
*�
�:�:��"����j�'�!�5F�*G��K����j�'�!�5F�*G�(�
*����j�'�!�5F�*G��L����j�'�!�5F�*G�(�
*����j�'�!�5F�*G�)�
+����j�'�!�5F�*G��K�*�	I�D����j�'�1�d�B�?����j�'�1�d�A�>����i��!�T�7�C���!�!�*�g�q�$��F��!�!�*�g�q�$��H�
	I�	
���)�T�+K� �(�	$����)�T�I� �(�	$�
#��
����)�Z��7��=�!r(c���|jtjtj�|jtjtj�|jtj
tj
�|jtjtj�|jtjtj�|jtjtj�|jtjtj�|jtjtj�yr)r�r�r�r�r�r�r�r�r�r/r�r�s r�test_rounding_strings_internedz(CWhitebox.test_rounding_strings_interned�s����
�
�a�j�j�!�*�*�-��
�
�a�l�l�A�L�L�1��
�
�a�o�o�q���7��
�
�a�m�m�Q�]�]�3��
�
�a�o�o�q���7��
�
�a�'�'��):�):�;��
�
�a�'�'��):�):�;��
�
�a�l�l�A�L�L�1r(c	��tj}tj}tj}tj}tj
}tj}tjdkD}|�}|rdnd}	|jtt|d|	dz�|jtt|d|	dz
�tjdk7r>|jtt|d|	�|jtt|d|	dz
�dD]�}
|jtt||
|	dz�|jtt||
|	dz
�tjdk7s�X|jtt||
|	�|jtt||
|	dz
���|jtt|dd	�|jtt|dd�|jtt|dgd
��|r:|jtt|dd�|jtt|dd�dD]<}
|jtt||
d
�|jtt||
d��>y)Nr�r�r��_allcrrrrT)r-r.rpr�rUrVr{r)r�r.r�r�r�r�r3rPrer�r*rrYrr,)r�r.r�r�r�r�r3r[r�r\r&s           r�test_c_context_errors_extraz%CWhitebox.test_c_context_errors_extra�s
���)�)���-�-���:�:���~�~���\�\�
��\�\�
��*�*�y�0���I��,�'���	
���-��!�X�w�q�y�I����-��!�X��x��z�J��<�<�7�"����j�'�1�h��H����j�'�1�h����
�K�)�	K�D����m�W�a��w�q�y�I����m�W�a���x��z�J��|�|�w�&��!�!�)�W�a��w�G��!�!�)�W�a���x��z�J�	K�	
���*�g�q�(�B�?����*�g�q�(�A�>����)�W�a��7�C�����j�'�1�h��F����j�'�1�h��H�)�	@�D����i��!�T�6�B����i��!�T�3�?�	@r(c�N�tj}tj}tj}tj}tj
}tj}|j�}d|_t|_
d|_d|_d|_
d|_|j|jd�|j|jt�|j|jd�|j|jd�|j|jd�|j|jd�|j|j!�d�|j|j#�d�tj$dk(r�|j'd	�|j)d	�|j+d
�|j|jd	�|j|jd	�|j|jd
�yy)Nr%i�iH�rri'�i�r�rbrc)r�r5r�r�r�r�r�rnr+r�r,rXrSr�rar:�Etiny�EtoprPr�r�r�)r�r5r�r�r�r�r�r�s        r�test_c_valid_contextzCWhitebox.test_c_valid_contexts����)�)���)�)���K�K�	��)�)���)�)���K�K�	����!�����"��
���������
�����������$�������]�3��������'��������&�������Q�'�������!�$��������E�*��������4�(�
�:�:��"�
���i�(�
���i�(�
���j�)����Q�V�V�Y�/����Q�V�V�Y�/����Q�V�V�Z�0�
#r(c���tj}|j�}|j|jd�d|_|j|jd�y)Nrr)r�r5rnr:rc)r�r5r�s   r�test_c_valid_context_extraz$CWhitebox.test_c_valid_context_extra,sJ���)�)�����!��������1�%����������1�%r(c	�@�tj}tj}tj}tj}tj
}tjdkDrdnd}|�5}d|j|<|j||d�j|dz
�|j||d�j|�|j||d�jt|dz��|jtj|d�jt|dz
��|jt|d�j|dz
�|jt|d�j|dz�ddd�y#1swYyxYw)	Nr�r�r�TrTrr�r)r�r�r�r�r�rjrPr-rer�rr�)r�r�r�r�r�rjr\r�s        r�test_c_roundzCWhitebox.test_c_round5sV���)�)���-�-���~�~���:�:���K�K�	��Z�Z�)�3�'���
�^�
	)�q�(,�A�G�G�$�%����.����0I�0I�&�h�q�j�
*����.����0I�0I�%�
'����.����0F�0F�!�(�1�*�o�
/����a�0�0�'�#�,�2H�2H�"�9�Q�;�/�/�
1����m�W�V�_�-F�-F�&�h�q�j�
*����m�W�V�_�-F�-F�%�a�i�
)�
	)�
	)�
	)�s
�/DF�Fc���tj}tjdkD}|jt|d�j
dgd�|jt|d�j
dd�|jt|d�j
g�|jt|d�j
d�|rdnd}|jt|d�j
d	|z�y)
Nr�rz=10.10r*z<>=10.10r�r�rpz=%d.1)r�r�rPrer,r�r)r�r�r[�maxsizes    r�
test_c_formatzCWhitebox.test_c_formatMs����)�)���*�*�y�0�����)�W�Q�Z�%:�%:�H�b�!�L����)�W�Q�Z�%:�%:�H�a�H����)�W�Q�Z�%:�%:�B�?����*�g�a�j�&;�&;�Z�H�+�'������*�g�l�&;�&F�&F�!�G�+�	-r(c��tj}tj}tj}|d�}|j	|j�d�|j
t|j
d�|j
t|j
dd�|j
t|j
d�|j	|j�d�|j
t|jd�|j
t|jdd�|j
t|jd�|j	|j�d�|j
t|jd�|j
t|jdd�|j
t|jd�|�5}|d�jt�}|j	||d��|d�jt�}|j	||d��d|j|<|j
||d�jt�ddd�y#1swYyxYw)Nr�r(rz99999999999999999999999999.9�100000000000000000000000000Tz999.9)r�r�r�r�r:r�rer,r�r�r�r-)r�r�r�r�rr�s      r�test_c_integralzCWhitebox.test_c_integral[s����)�)���)�)���~�~���B�K���������"�-����)�Q�]�]�D�9����)�Q�]�]�B��<����)�Q�]�]�B�7�����,�,�.��3����)�Q�%8�%8�$�?����)�Q�%8�%8�"�c�B����)�Q�%8�%8�"�=�����,�,�.��3����)�Q�%8�%8�$�?����)�Q�%8�%8�"�c�B����)�Q�%8�%8�"�=�
�^�	U�q��6�7�I�I�(�S�A����Q��(E� F�G��6�7�I�I�(�S�A����Q��(E� F�G�#�A�G�G�G�����g�w�w�'7�'I�'I�8�T�	U�	U�	U�s
�BI2�2I;c
��tj}tj}tj}tj}tj
}|j
|d�j�d�|jtt|d�dd�|jt|d�jdd�|jt|d�jd	dd�|jt|d
�j|d�g�|jt|d
�j|d�|��|jt|d
�j|d�d�|jt|d
�j|d�td
�|�5}|j�|jt|j |d�dd�|jt|j"d�|jt|j$d�|jt|j&dddd�|jt|jdd	dd�|j
t)|j#|d���d�|j
|j+�d�d|j,|<|j||d�j.d�|j||j&dd�|j1|j2|�|j5�d|j,|<|j||d�j.d�|j||j&dd�|j1|j2|�d|j,|<d|_|j|t|d
�dd�ddd�y#1swYyxYw)Nz9.99e10z99.9E+9rrrEr*rr�r�rpz	1e-100000r�r�r�r��200Tri�)r�r�r�r�r�r�r:r�rer,r�rgr�rr�r�rurhr{r)r5rgr-r�r"rMr)r+)r�r�r�r�r�r�r�s       r�test_c_funcszCWhitebox.test_c_funcszs'���)�)���-�-���)�)���\�\�
��~�~�������+�9�9�;�Y�G����)�S�'�!�*�a��=����)�W�Q�Z�%<�%<�c�3�G����)�W�Q�Z�%<�%<�a��c�J������L�!�*�*�G�K�,@�"�	
�	
�����L�!�*�*�G�K�,@�*�,�	
�	
�����L�!�*�*�G�K�,@�"�	
�	
�����L�!�*�*�G�K�,@�(�D�	
�
�^�	L�q�
�M�M�O�
���i����g�a�j�#�s�K����i����c�:����i�����=����i����1�a��c�B����i�����A�s�C�H����S����W�S�\�!:�;�U�C����Q�W�W�Y��+�&*�A�G�G�N�#����n�g�a�j�.C�.C�Q�G����n�a�h�h��1�=��O�O�A�G�G�$4�5�6�
�M�M�O�(,�A�G�G�$�%����.���
�0E�0E�q�I����.����!�Q�?��O�O�A�G�G�N�3�4�(,�A�G�G�$�%��A�F����.��W�T�]�A�s�K�5	L�	L�	L�s
�4H5O2�2O;c�"�tj}tj}|d�}dD]?}t||�}|j	t
|d��|j	t
|dd���AdD]?}t||�}|j	t
|d��|j	t
|dd���A|j	t
|jdg��|j	t
|jig��|j	t
|jgg�|j	t
|jdg��|j	t
|jig��|j	t
|jgg�|j	t
|jdg��|j	t
|jig��|j	t
|jgg�|j	t
|jddd��|j	t
|jdddd��|j	t
|jdgd��|j	t
|jdgd�	�|j	t
|jdgg�|�}|j	t
|jddd�
�|j	t
|jddd�
�|j	t
|jddd�
�y)N�10001111111)
rUr�r�r�r�r�ryr�r�r�rgr�r�rr�)rrircr�r�r�r�r�r�r�r�r�r�rrrN)�mod)r�r�r.r!rer,r�r�r�r�rr)r�r�r.rr&�funcr�s       r�test_va_args_exceptionsz!CWhitebox.test_va_args_exceptions�s����)�)���)�)���M�"��K�	B�D��1�d�#�D����i��s��;����i��s�D��A�	B�D�	B�D��1�d�#�D����i��s��;����i��s�D��A�	B�	
���)�Q�]�]�T�2��N����)�Q�]�]�R���L����)�Q�]�]�B��;����)�Q�%8�%8�4�QS��T����)�Q�%8�%8�2�r��R����)�Q�%8�%8�"�b�A����)�Q�%8�%8�4�QS��T����)�Q�%8�%8�2�r��R����)�Q�%8�%8�"�b�A����)�Q�U�U�A�q�#��>����)�Q�U�U�A�q�#�t��D����)�Q�Z�Z��B���E����)�Q�Z�Z��B���F����)�Q�Z�Z��B��;��I�����)�Q�W�W�a����<����)�Q�W�W�a��$��?����)�Q�W�W�c�1�$��?r(c��|jtjjtjtj
ztjztjztjz�|jtjjtjtj
ztjz�yr)
r:r�r�r.r@r3r<r>r9r5r�s r�test_c_context_templatesz"CWhitebox.test_c_context_templates�s������
�N�N�!�!�
�%�%�a�&9�&9�9�!�-�-�G�
�N�N�
��<�<�
(�	
�
	
���
���#�#�
�%�%�a�&9�&9�9�!�-�-�G�	
r(c�X��tj}tj}tj}tj}tj
}tj}tj}tj}tj}	tj}
tj}tj}tj}
tj}�fd�}|j�}�j!||j"v�|j%�|j"j'�D]}d|j"|<�|j"j)�D]}�j!|��|j%�|j"j+�D]\}}�j-|���j-|j.j1|���j3|j.j1d�d��j5|j.j1dd�d��j7t8|j.j0ddd��j5t;|j.�t;|j"��t=j>|j.�}t=j>|j"�}|j.jA�}|jC�||_"�j!|j.|�|j%�|
|_#�j!|j"|�|jC�|j.j�}d||<||_|||j.�|j%�|j"j�}d||<||_|||j"�|tj|	tjH|
tjJ|tjL|tjN|tjP|tjR|tjT|tji	}tjVtjXtjZtj\tjtj^tj`g}t;tbt�}te|�D�]}te|�D�]�}tfD�]�}tijjtbt|�}tijjtbt|�}tijldd�}tijldd	�}tijld	d�}tijld	d
�} tijld	d
�}!tijld	d
�}"||||||!| to|�to|���}�j5|jp|��j5|jr|��j5|jt|��j5|jv|��j5|jx|!��j5|jz| �d	}#|D]
}$|#||$z}#��j5|jD|#�d	}#|D]
}$|#||$z}#��j5|jF|#���������|D]:}%|%|_"�j!|jD|z�|||j.��<|D]:}%|%|_#�j!|jF|z�|||j"��<y)Nc�p��|D]0}||k(r�j||���j||��2yr)r"r)ro�signal_dictr%r�s   �r�assertIsExclusivelySetz<CWhitebox.test_c_signal_dict.<locals>.assertIsExclusivelySets=���"�
7���&�=��O�O�K��$4�5��$�$�[��%5�6�	
7r(Trr�rrr�i���rrr�)>r�r.r5r�rlr�r�r�r�r�r�r�r9r9r@rnr"r-r�r��valuesr�rrMrr�r:rer,r�r�	getsizeofr�r)r-r.r,r7r=r>r<r3r;r4r5r6r8r:r2r3rsr~r(�sampler�rOr+r,rSrXr�ra)&r�r.r5r�rlr�r�r�r�r�r�r�r9r9r@r�r�rbr�rr�
IntSignals�IntCond�limr�r�r�rMr-r+rmrlrar��crr�rrCs&`                                     r�test_c_signal_dictzCWhitebox.test_c_signal_dict�s�����)�)���)�)���-�-���)�)���)�)���:�:���K�K�	��K�K�	��)�)���)�)���)�)���\�\�
��3�3��"#�";�";��	7�
���!��	
����A�G�G�+�,�	�
�
��������	�A��A�G�G�A�J�	������!�	�A��O�O�A��	�	�
�
���G�G�M�M�O�	 �D�A�q����Q��	 �	
��������X�.�/��
�
�a�g�g�k�k�#�&��-���������S�#�.��4����)�Q�W�W�[�[�#�s�C�@�����Q�W�W��s�1�7�7�|�4��M�M�!�'�'�"���M�M�!�'�'�"��
�G�G�����	
�
�
������������(�)�	�
�
��&��������� 0�1�2�	
�
�
��
�G�G�L�L�N�� ��.������~�q�w�w�7�	�
�
��
�G�G�L�L�N����)������y�!�'�'�2��1�<�<�
�1�<�<�
�1�<�<�
�Q�^�^�
�Q�^�^�
�A�M�M�
�!�-�-�
�!�-�-�
�A�5�5�

�
��
!�
!�1�#9�#9�1�=�=�
�
�
�q�4�4�a�6F�6F�
�
�
�
���.��#�$���s��	2�A��3�Z�
2��*�2�E�"�M�M�.��*;�Q�?�E�"�M�M�.��*;�Q�?�E�!�+�+�A�u�5�D�!�+�+�F�A�6�D�!�+�+�A�u�5�D�"�,�,�Q��2�E�!�+�+�A�q�1�D��)�)�!�Q�/�B��T�E��4�)-�U�$�u�+�&*�5�k�3�A��$�$�Q�V�V�T�2��$�$�Q�Z�Z��7��$�$�Q�V�V�T�2��$�$�Q�V�V�T�2��$�$�Q�Z�Z��6��$�$�Q�W�W�e�4��A�"�+���Z��]�*��+��$�$�Q�X�X�q�1��A�"�+���Z��]�*��+��$�$�Q�X�X�q�1�92�
2�	2�@�	>�D��A�H��O�O�A�H�H�%<�<�=�"�#3�Q�W�W�=�	>�
�	>�D��A�H��O�O�A�H�H�%<�<�=�"�#3�Q�W�W�=�	>r(c�z��tj�	ddlm}d�}d�fd�	}d|gd��dd�}d	|gd
��dd�}d|gd
��dd�}d
k(r|j
t|d|d�|j
t|d|d�|j
t|d|d�y#t$r|jd�Y��wxYw)Nrr�r�c�\�dj|D�cgc]
}t|���c}�Scc}wr�)r�r�)r�rs  rr�z6CWhitebox.test_invalid_override.<locals>.make_grouping{s#���7�7�C�0�q�C��F�0�1�1��0s�)c�4���|�j||�Sr)r�)rr�r�r�s   �rr�z0CWhitebox.test_invalid_override.<locals>.get_fmt~s����1�:�(�(��h�7�7r(rb)�r�rr��xxxxxr�r��yyyyy�r�rKr�)r�r�r�r�r�r�rer)r�r�r�r��invalid_grouping�invalid_dot�invalid_sepr�s       @r�test_invalid_overridezCWhitebox.test_invalid_overridess�����)�)��	;�'�	2�	8�"�&�}�5�!�
��&�&�y�1�!�
��"�&�y�1�%�
���s�?����j�'�5�.��
5�	
���*�g�u�k�3�G����*�g�u�k�3�G��=�	;��M�M�9�:�	;�s�B�B:�9B:c��tj}tj}tj}|�5}d|j|<dt
jz}|j|||�dt
jdz
z}|j|||�dt
jz}|j|||�dt
jdz
z}|j|||�ddd�y#1swYyxYw)NTz0e%drz1e%d)r�r�r�r�r-rrnrer�s      r�test_exact_conversionzCWhitebox.test_exact_conversion�s����)�)���~�~���-�-��
�^�	<�q�(,�A�G�G�$�%�����$�A����.���;��3�;�;�,�q�.�)�A����.���;�����$�A����.���;��3�;�;�,�q�.�)�A����.���;�#	<�	<�	<�s�B0C1�1C:c��tj}tj}tj}tj}tj
}|�5}d|_d|j|<d|j|<d|j|<ddtjf}|jt|j|��d�|j|||�ddtjf}|j||j|�|j|||�ddtjdz
f}|jt|j|��d�|j|||�ddtjdz
f}|j||j|�|j|||�ddtjdzf}|jt|j|�|jt||�ddtjdz
f}|jt|j|�|jt||�d	}|jt||��d
�d}|jt||��d
�d}|jt||��d
�ddd�y#1swYyxYw)Nr*Trrz
-0E+999999)rrrz-0E-1000007rr�rX)rr�r�)rr�r�z-sNaN1)r�r�r�r�r�r�r+r-rrnr:r5r�rer�)r�r�r�r�r�r�r�rs        r�test_from_tuplezCWhitebox.test_from_tuple�sf���)�)���~�~���-�-���:�:���K�K�	�
�^�(	8�q��A�F�(,�A�G�G�$�%� $�A�G�G�H��!%�A�G�G�I���B����$�A����S��!1�!1�!�!4�5�|�D����.���;��I�s�{�{�+�A����h��(8�(8�!�<����.���;��B�����Q��'�A����S��!1�!1�!�!4�5�}�E����.���;��I����|�A�~�.�A����i��)9�)9�1�=����.���;��B����A�
�&�A����m�Q�-=�-=�q�A����m�W�a�8��B�����Q��'�A����m�Q�-=�-=�q�A����m�W�a�8��A����S����_�g�6��A����S����_�g�6� �A����S����_�h�7�Q(	8�(	8�(	8�s
�I)K
�
Kc��tj}tjdkD}|j|d�j	�d�|rH|ddz�j	�}|ddz�j	�}|j||dz�y|ddz�j	�}|ddz�j	�}|j||d	z�y)
Nr�rr�r�i�r�����r�)r�r�rPrI�
__sizeof__r:)r�r�r[rr�s     r�test_sizeofzCWhitebox.test_sizeof�s����)�)���*�*�y�0�����7�1�:�0�0�2�A�6����U��$�/�/�1�A���U��$�/�/�1�A����Q��!��$���T�
�#�.�.�0�A���T�
�#�.�.�0�A����Q��!��$r(c�"��tj}Gd�dt�}Gd�dt�}Gd�dt��G�fd�dt�}|||fD]8}|j	|j|d	��|jd	���:y)
Nc��eZdZd�Zd�Zy)�<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Xc��y�Nrrr�s rr�zMCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.as_integer_ratio�s��r(c��|Srrr�s rrzDCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.__abs__�����r(N�r�rZr[r�rrr(r�Xr��s��
�
r(r�c��eZdZd�Zy)�<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Yc��dgdzS�Nrr�rr�s rrzDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Y.__abs__��
���s�3�w�r(N)r�rZr[rrr(r�Yr�����
r(r�c��eZdZd�Zy)�<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�rZr[r�rr(r�Ir��r�r(r�c���eZdZ�fd�Zd�Zy)�<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Zc�$���d��d�fSr�r)r�r�s �rr�zMCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.as_integer_ratios����!��a��d�|�#r(c��|Srrr�s rrzDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.__abs__r�r(Nr�)r�s�r�Zr�s
���
$�
r(r�gfffffFY@)r�r�r�rr:r�)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�C����W�/�/��E�
�;�$�/�/��6�
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�t�gd�}tj}tj}tj}|tjtj
tj��}||�5|j|d�j�d�|j|d�j�d�|j|d�j�d�|j|d�j�d�|j|ddz�j�d�|j|d	�j�d
�|j|d�j�d�|j|d�j�|d
��|jt|d�d�d�|j|d�dzd�|j|d�dzd�|j|d�dz|d��ddd�y#1swYyxYw)N)	ryr�r�rcr�r�r�r�r�)r+rSrXrrr�rr���l�9V�r��40E9z2.0E+5r�)r�ri�rpz0.0025)r�r�r.r�rPrir�r:rUr�r�r�r�r))r��MaxContextSkipr�r.r��
maxcontexts      r�test_maxcontext_exact_arithz%CWhitebox.test_maxcontext_exact_ariths���<���)�)���)�)���~�~���!�*�*�1�:�:�A�J�J�O�
�
�*�
%�	D����W�Q�Z�^�^�-�q�1����W�Q�Z�]�]�_�a�0����W�Q�Z�-�-�/��3����W�U�^�1�1�3�Q�7����W�R��W�-�3�3�5�s�;����W�V�_�1�1�3�R�8����W�Q�Z�_�_�.��2����W�V�_�1�1�3�W�X�5F�G����V�G�B�K��3�V�<����W�R�[�A�-�q�1����W�Q�Z�!�^�Q�/����W�S�\�R�/���1B�C�	D�	D�	D�s
�2F3H.�.H7c�N�ttj�j�}|�}d}|j	t
|�5t
|�ddd�|j	t
|�5t|�ddd�|j	t
|�5t|�ddd�|j	t
|�5d|tj<ddd�|j	t
|�5|tjddd�|j	t
|�5|tj�jk(ddd�|j	t
|�5tj�j|k(ddd�|j	t
|�5|j�ddd�y#1swY��rxYw#1swY��UxYw#1swY��8xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swYyxYw)Nzinvalid signal dictT)r4r�r.rM�assertRaisesRegexrr��iterr9r�rn)r��
SignalDict�sd�err_msgs    r�test_c_signaldict_segfaultz$CWhitebox.test_c_signaldict_segfault5s����!�)�)�+�+�+�,�
�
�\��'��
�
#�
#�J��
8�	���G�	��
#�
#�J��
8�	���H�	��
#�
#�J��
8�	���H�	��
#�
#�J��
8�	*�%)�B�q�!�!�"�	*��
#�
#�J��
8�	#��q�!�!�"�	#��
#�
#�J��
8�	$��!�)�)�+�#�#�#�	$��
#�
#�J��
8�	$�
�I�I�K����#�	$��
#�
#�J��
8�	��G�G�I�	�	�+	�	��	�	��	�	��	*�	*��	#�	#��	$�	$��	$�	$��	�	�s`�G�1G�G�G*�7G7�)"H�)"H�)H�G
�G�G'�*G4�7H�H�H�H$N)#r�rZr[r\rKrMrPrRr_rarErdrhrjrlrorrrurzr|r�r�r�r�r�r�r��skipIfrrYrrrr�r�rr(rrGrG+s3��'�'�":�	7��:c"�J	2�"�(@�"�(@�T$1�L"�&�"�&�)�0-�U�>9L�v*@�X"�	
�"�	
�"�C>�"�C>�J#H�J<�0/8�b%�8�:�X�_�_�S�\�\�,�,�U�3�\�^��X�_�_�]�$D�E��X�_�_�_�T�$�?�E�F� D�F�F�^� D�Fr(rGc��eZdZdZd�Zd�Zy)�
SignatureTestzFunction signaturesc�X�tt�D�]�}|jd�r�tt|�}tt|�}|dk(s|dk(stj|�s�Vtj|�}tj|�}t|jj��}|jj�D�cgc]}|jd�s|��}}|j||d|z��|jj�D�cgc]}|j��}	}|jj�D�cgc]%}|djd�s|dj��'}
}|dk7s��r|j|	|
d	|z�����ycc}wcc}wcc}w)
NrDr�r.�parameter name mismatch in %s��msgrrr3�parameter kind mismatch in %s)r�r�rr!r��inspect�
isfunction�	signaturerO�
parametersr�r:r��kindr�)r�r&�p_func�c_func�p_sig�c_sig�c_namesr�p_names�c_kind�p_kinds           r�test_inspect_modulez!SignatureTest.test_inspect_moduleXs�����F�	S�D����s�#���Q��%�F��Q��%�F��	�!�T�Y�%6��"�"�6�*��)�)�&�1���)�)�&�1���u�/�/�4�4�6�7��&+�&6�&6�&;�&;�&=�.���<�<��,��.��.�� � ��'�%D�v�%M�!�O�+0�*:�*:�*A�*A�*C�D�Q�!�&�&�D��D�-2�-=�-=�-C�-C�-E�0���A�$�/�/�#�.��A�$�)�)�0��0��<�'��$�$�V�V�)H�6�)Q�%�S�1	S��.��E��0s�F�F"�*F'c��������tjj�tjj�ttjd�tjd�tjd�tjd�tjd�tjd�tjd�tjd�tjd�tjd�ddtjtj�d�ttjd�tjd�tjd�tjd�tjd�tjd�tjd�ddtjtj�d�i����fd��d�������fd�}|d	�|d
�y)Nrr�r�)r�rbrr�rr�rUr�rUr�numr�r,r%)r�rbr�rUr�rUrr�r�r,r%c���g}i}|jj�D]W\}}|dk(r�|j�k(r|j�||��3|j�k(r�||||<�Nt	d��||fS)Nr�zunexpected parameter kind)r�r�r�r2r)	�moduler%r�kwargs�name�param�POS�POS_KWD�pdicts	      ���r�mkargsz0SignatureTest.test_inspect_types.<locals>.mkargs�s�����D��F�"�~�~�3�3�5�
B���e��6�>�8��:�:��$��K�K��f�
�d� 3�4��Z�Z�7�*�#(��=��#6�F�4�L�$�%@�A�A�
B���<�r(c�*�|dk(ry|dk(ry|dk(ry|S)zwThe C Context docstrings use 'x' in order to prevent confusion
               with the article 'a' in the descriptions.rr�r�rUrr�r)rs r�trz,SignatureTest.test_inspect_types.<locals>.tr�s$���C�x���C�x���C�x���Hr(c
���tt|�}tt|�}t|�D�]�}|j	d�r�t||�}t||�}tj|�s�Dtj|�}tj|�}t|jj��}|jj�D�	cgc]
}	�|	���}
}	�j|
|d|z��|jj�D�	cgc]}	|	j��}}	|jj�D�	cgc]}	|	j��}}	�j|d���j|d��|dk(r�j|dd|ddd|z��n)�jt|�t|�d|z���t|�\}
}	t|d�|�|
i|���t|�\}
}	t|d�|�|
i|����ycc}	wcc}	wcc}	w#t $rt#d	|�d
|
�d|����wxYw#t $rt#d	|�d
|
�d|����wxYw)NrDr�r�rr�rr�r*zinvalid signature for z: r)r!r�r�r�rr�r�r�rOr�r�r:r�r�r�r�r�r)�ty�p_type�c_typer&r�r�r�r�r�rr�r�r�r�kwdsr�r�r�r�r�s               �����rr~z.SignatureTest.test_inspect_types.<locals>.doit�sx����Q��^�F��Q��^�F��F��*
c���?�?�3�'�� ���.�� ���.���%�%�f�-�#�-�-�f�5�E�#�-�-�f�5�E�#�5�#3�#3�#8�#8�#:�;�G�.3�.>�.>�.C�.C�.E�F��r�!�u�F�G�F��$�$�W�g�)H�6�)Q�%�S�/4�.>�.>�.E�.E�.G�H��a�f�f�H�F�H�.3�.>�.>�.E�.E�.G�H��a�f�f�H�F�H��M�M�&��)�W�5��M�M�&��)�S�1��Y���(�(�����V�A�B�Z�-L�v�-U�)�W��(�(��V��c�&�k�-L�v�-U�)�W�"(��5�!1�J�D�$�c�0���q�	�4�0�$�?�$�?�"(��5�!1�J�D�$�c�0���q�	�4�0�$�?�$�?�Q*
c��G��
I��H��$%�c�(�f�VZ�\`�)a�b�b�c��%�c�(�f�VZ�\`�)a�b�b�c�s*�H0�H5�H:�+H?�I �?I� I>r�r.)	r��_ParameterKind�POSITIONAL_ONLY�POSITIONAL_OR_KEYWORDr�r�r�r�r�)r�r~r�r�r�r�r�s` @@@@@r�test_inspect_typesz SignatureTest.test_inspect_typestsL����$�$�4�4���(�(�>�>���a�i�i��l��i�i��l��)�)�A�,��)�)�A�,��)�)�A�,��)�)�A�,��)�)�A�,��)�)�A�,��I�I�a�L� �y�y��|���!"��� !����
0��a�i�i��l��i�i��l��)�)�A�,��)�)�A�,��)�)�A�,��I�I�a�L� �y�y��|���!"��� !����
0�1��4	 �	�-	c�-	c�^	
�Y���Y�r(N)r�rZr[r\r�r�rr(rr�r�Ss���S�8er(r�c	���t�|j�}tjt�D]X}d|vs|jd�r�|j
d�\}}t�	|tvr�<|fd�}ttd|z|�~~~~�ZdtfdtffD]N\}}|s�	t|dzttjfd|i�}	|j|j|	���Pt�ud	d
lm}
m}ttfD]^}|s�|fd�}d�}
|tur|nd	}|t&j(d<|j|
|||
|�
��t*t&j(d<�`|S)Nz.decTestr�c�2�|jt|z�Sr)r�	directory)r�r�s  rrzload_tests.<locals>.<lambda>�s��$�.�.��Q��*G�r(�test_r��Pyr;rr)�DocTestSuite�IGNORE_EXCEPTION_DETAILc�*�|tjd<y�Nr)rr*)�slfrxs  rr�zload_tests.<locals>.setUp�s��),����I�&r(c�2�ttjd<yr�)�orig_sys_decimalrr*)r�s rrzload_tests.<locals>.tearDown�s��)9����I�&r()r�r�optionflags)�
TODO_TESTS�
suiteClass�os�listdirr�rr	r*r;r�r�r4r��TestCase�addTest�loadTestsFromTestCase�doctestr�r�rr*r)r��tests�pattern�filename�head�tail�tester�prefixrx�
test_classr�r�r�rrs               r�
load_testsr�ss�����!�!�#���J�J�y�)�)���X�%��)<�)<�S�)A���^�^�C�(�
��d��!�d�*�&<�� (�G����g��n�f�5��d�D�&�)��Q�x�$���*�@�������&�>�1�'��):�):�;�$�c�*�,�
�	�
�
�f�2�2�:�>�?�
@���A��a�4�	6�C���"�
-�
:�58�A�X�1�1�K�%(�C�K�K�	�"��M�M�,�s�%�(�/:�<�
=�%5�C�K�K�	�"�	6��Lr(c�p�tt�tt�t�tayt	d�ayr�)r6r�r��ARITHrr'rr(r�setUpModulers$����G���G��)�u�H�/B�9�/M�Hr(c��tr tjtt�tjtt�tst	j
dt�ttjdurtd��y)Nz*C tests skipped: no module named _decimal.rzGInternal error: unbalanced number of changes to sys.modules['decimal'].)r�r3�ORIGINAL_CONTEXTr��warnings�warn�UserWarningrrr*rrr(r�tearDownModuler
se���!�,�,�'��*�
+��L�L�!�!�$�%���
�
�B�!�	#��s�{�{�9�5�5��3�4�	4�6r(c�\�|a|a|atjt
|rdnddt
g��y)z� Execute the tests.

    Runs all arithmetic tests if arith is True or if the "decimal" resource
    is enabled in regrtest.py
    rrF)�	verbosity�exit�argvN)rrr*r��mainr���arith�verbose�
todo_tests�debugs    r�testr&s+��
�E��J��E��M�M�(�7�a���X�J�Wr(z:test_decimal.py [--debug] [{--skip | test1 [test2 [...]]}]z--debugz-d�
store_truez2shows the test number and context before each test)�action�helpz--skipz-sz%skip over 90% of the arithmetic tests)r"r#r!)NNNN)�r\r�rrrrr(rnr�r"r��test.supportrrrrrrr	r
rr�test.support.import_helperr
rrr(r�r7rYr�r�rr�
cfractionsr*�
pfractionsr�
skipUnless�requires_cdecimalr�r�rMr�r2r�r�r�r�r�r�r�r�rlr3r'r�r�r�r�r�r�r/r�r~rr6�TESTDATADIRr�rr��__file__�path�dirname�curdir�testdir�sepr��isdirr�r1�hasattr�EXTRA_FUNCTIONALITYrEr��skip_if_extra_functionalityr;r^rr�r�r�r/r1r3r�r�r�rrr&r.�requires_working_threadingr0rBrDrFr	rrrurwryr"r$r&rTrVrXr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r rGr�rrrrr'rr*r&�optparse�OptionParserr��
add_option�
parse_args�optr�skipr%rr(r�<module>rBs����"�������
�I�I�D�D�;�)�(�
����<�<�8���n�-��	�*��6���	�J�<�8��"�!��[�M�
B�
�����I��
 ��[�M�
B�
�����I��
�z�1�Z�(�	�)����I��'�H�'�'��+D�E���1�U�1�<�<�>���$�$�&�'�$��U�1�<�<�>���$�$�&�'������i�i����A�I�I�q�{�{�A�K�K��j�j�!�"�"�A�$6�$6�����"&��a�i�i����A�I�I�q�{�{�A�K�K��j�j�!�"�"�A�$6�$6�����	��H�
�:�:��
�\�\�
����
��m�m�����
��#�#���#�#��
�\�\�
��J�
�{���/���
��a�Q�\�\�^����T��Q�\�\�^������%� ���z���8�8�A�;�D��D�
�'�'�/�/�$�
�
,�2�9�9���b�f�f��{�*�R�V�V�3�	��G�G�M�M�)�,�,�
���&�a��6�d�E��2�x�2�2��G� I��-�h�o�o��4�6��a#�a#�LU<�U<�n
�� 8�(�:K�:K�����!9�8�;L�;L��K1�K1�Z�� 8�(�:K�:K�����!9�8�;L�;L��O9�O9�b
��*�h�/�/�����:�x�0�0��hA�hA�T	��6��8I�8I����� 7��9J�9J��
%'�N*0�Z-��,�,�.�*(�*(�/�*(�Z��]�H�$5�$5�����m�X�%6�%6��nE�nE�`��]�H�$5�$5����
�m�X�%6�%6�
�[N�[N�z
��n�h�&7�&7�����~�x�'8�'8��hC�hC�T����(9�(9�������):�):��b�b�H��0�(�2C�2C�����1�8�3D�3D��I0�I0�V��L�(�"3�"3�����\�8�#4�#4��N�N�`����(9�(9�������):�):��<;�<;�|��4�h�6G�6G�����5�x�7H�7H��k.�k.�Z��,�h�.?�.?�����-�x�/@�/@����1�h�'�'�1���1�: � �B���(�+�+����
��8�,�,�
�>�h�'�'�>�0BM��"�"�BM�HSC�X�&�&�SC�j�e��!�!�e��e�N��D�H�%�%�D���D�N&�PN�4�	
����
�
�
��X��z�������Z�[�A��L�L��D��<p�L�q��L�L��D��<c�L�d��,�,�.�K�S�$�
�x�x��5�$�'�	
��4��$�c�i�i�H��4��&�r(