Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_decimal.cpython-312.opt-1.pyc

�

'Μg�e��\�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZmZddlmZmZmZmZmZmZddlmZddlmZddlmZddlZddlZddlZej<dk(red	�ed
dg��Zed
dg�
�Z ddl!Z"eddg��Z#e ejHd
<eddg��Z%eejHd
<ee#e e%iZ&e"ejHd
<ejNed�Z(eer.e)ejU�jVjY��nde e)e jU�jVjY��iZ-eereej\ej^ej`ejbejdejfejhejjejlg	nde e j\e j^e j`e jbe jde jfe jhe jje jlg	iZ7d�Z8e jrZ9e jtZ:e jvZ;e jxZ<e jzZ=e j|Z>e j~Z?e j�Z@e9e:e;e<e=e>e?e@gZAeerejU�j�nde e jU�j�iZBd�ZCdZDeEdk(rej�dZGneHZGej�j�eG�xsej�ZLeLej�zeDzej�zZNej�j�eN�aPdZQeRed�rdndZSejNeSd�ZTej�eSd�ZVGd�d�ZWGd�d�ZXe(Gd�deXej���ZZGd�d eXej��Z[Gd!�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��ZaGd-�d.�Zbe(Gd/�d0ebej���ZcGd1�d2ebej��Zdd3�Zed4�Zfej��Gd5�d6��Zhe(Gd7�d8ehej���ZiGd9�d:ehej��ZjGd;�d<�Zke(Gd=�d>ekej���ZlGd?�d@ekej��ZmGdA�dB�Zne(GdC�dDenej���ZoGdE�dFenej��ZpGdG�dH�Zqe(GdI�dJeqej���ZrGdK�dLeqej��ZsGdM�dN�Zte(GdO�dPetej���ZuGdQ�dRetej��ZvGdS�dT�Zwe(GdU�dVewej���ZxGdW�dXewej��ZyGdY�dZ�Zze(Gd[�d\ezej���Z{Gd]�d^ezej��Z|Gd_�d`�Z}e(Gda�dbe}ej���Z~Gdc�dde}ej��ZGde�df�Z�e(Gdg�dhe�ej���Z�Gdi�dje�ej��Z�eVe(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�eEdk(r�ddl�Z�e��j*d��Z�e��j/d�d�d�d����e��j/d�d�d�d����e��j1�\Z�Z�e��j6re�dd���ye�re�dde�e��j8���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�
skip_on_s390x)�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  ���./usr/local/lib/python3.12/test/test_decimal.py�	<genexpr>z!assert_signals.<locals>.<genexpr>Vs'�����F�A�q�q�H�}�q��t�a��d�(�:�A�s�)�getattr�
assertTrue�all)�cls�context�attrrrs   `@r �assert_signalsr(Ts&�������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 �initr7ms@���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~r�r�r�r�r�r�r�r�r�)#rr/r&�readcontext�ignore_list�set�skipped_test_ids�C�add�change_precision�change_rounding_method�change_max_exponent�change_min_exponent�change_clamp�
ChangeDict�NameAdapter�
ROUND_CEILING�
ROUND_DOWN�ROUND_FLOOR�ROUND_HALF_DOWNr0�
ROUND_HALF_UP�ROUND_UP�
ROUND_05UP�RoundingDict�Clamped�InvalidOperation�DivisionByZero�Inexact�Overflow�Rounded�	Subnormal�	Underflow�
ErrorNames�LogicalFunctions��selfs r �setUpzIBMTestCases.setUp�s����|�|�+�+�-����<�<�/�/�1����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�����#�#�#�
�$��
)�Q����|�|�F�B�/�7�7��b�A��e����t�,�A�	�*�
)���|�|�4�4�e��I�I�m�I�,?�,?�,H�,H�H�K^�^�_c�c�d�d��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   r r�zIBMTestCases.eval_line7s����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  r r!z.IBMTestCases.eval_directive.<locals>.<genexpr>Js����@�<�a����	���)�<�s�(*rr-c��yrr)�argss r �<lambda>z-IBMTestCases.eval_directive.<locals>.<lambda>Ss��$r))r
r��int�
ValueErrorr��get)r�r�funct�values    r rzIBMTestCases.eval_directiveIsr��@�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>.FixQuotesjs^���+�+�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�r3r.�	enumerate�count�EXTENDEDERRORTESTr�r�r��append�OrderedSignals�type�strr�r�eval�
getexceptions�sort�repr�assertEqual)r�r�Sides�L�idr�valstemp�ans�
exceptionsr$�fname�vals�conglomerate�quoter�theirexceptionsr�ir#r��error�e�ordered_errors�result�myexceptionss                         r r
zIBMTestCases.eval_equationVsf���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�z�!�4�?�?�1�7�7�9�5�z��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��45����*�*�5�1�M�!�$�,�,�"=�"=�a�"@�A�!�I�I�%��&K�L�45����*�*�5�1�"1��L�L�/�/��2���'�'��4�<�<�8���K�K��N�7*�:��n����.P�!P�(��,-����"�"�5�)�E��4�L��I�I�%��C�D�,-����"�"�5�)�)�*8����)E�^�)E�A��o�I]�a�)E�N�^�'��,-����"�"�5�)�E��4�L��I�I�%��C�D�(�(��,-����"�"�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)r3rr&�flags)r�rIs  r r8zIBMTestCases.getexceptions�s6��"�4�<�<�0�J�0�a�D�L�L�4F�4F�q�4I��0�J�J��Js�<�<c��|jtk(r5|jjdk(r|jj	|�y||j_y�Nr�)rr��MAX_PRECr&r�r,)r�r,s  r r�zIBMTestCases.change_precision�s=���<�<�1�����!6�!6�)�!C��L�L�(�(��.� $�D�L�L�r)c�&�||j_yr)r&r-)r�r-s  r r�z#IBMTestCases.change_rounding_method�s�� (����r)c��|jtk(r5|jjdk(r|jj	|�y||j_yrP)rr�rQr&r��Emin�r��exps  r r�z IBMTestCases.change_min_exponent��=���<�<�1�����!6�!6�)�!C��L�L�(�(��-� #�D�L�L�r)c��|jtk(r5|jjdk(r|jj	|�y||j_yrP)rr�rQr&r��EmaxrUs  r r�z IBMTestCases.change_max_exponent�rWr)c�&�||j_yr)r&rb)r�rbs  r r�zIBMTestCases.change_clamp�s��"����r)N)r��
__module__�__qualname__�__doc__r�r�rr�rr
r8r�r�r�r�r�rr)r r<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-rcs  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�����-45rra� ����r����r)rr�r;r6�range)r�r�r�n�signrrGs       r �test_explicit_from_intz/ExplicitConstructionTest.test_explicit_from_int�s����,�,�&�&��
�B�K������Q���&�
�I�������Q���-�
�C�L������Q���'�
�A�J������Q���%��q�"��A����r�1��A���1��q��)�A���
�A��$�$�S��V�S��V�4�&� �r)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��NaNrj�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 ru  z123z1_2_3)	rr�r��localcontextr;r6r.rfr-)r�r�r�r��lead�trail�cs       r �test_explicit_from_stringz2ExplicitConstructionTest.test_explicit_from_stringsB���,�,�&�&���<�<�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�!,�.�7�2�
�^�q�(,�A�G�G�$�%����.���?����i��&�#�s�C�
���.��9J�K����.��9O�P�
���.���B����.���H�
���.���E�
���.���G�'�^�^�s
�	B.J�J	��categoryc�$�ddl}|jj}|jj�}|j	d�}|jt
||��d�|jt
|j|��d�y)Nr�9.999999)�	_testcapirr�r/�unicode_legacy_stringr;r6r�)r�r�r�r&rs     r �test_from_legacy_stringsz1ExplicitConstructionTest.test_from_legacy_stringsNsp��	��,�,�&�&���,�,�&�&�(���+�+�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�rrra�r)�rsrrn�r�r�rs�r����rz�r�	r�r�r�r+rr�rsr�r�����-4.34913534E-17)rr�F�Infinity)r�r�r�r�r+r)�r�r)�r�rrr�r)rr�zwrong!)rr�r�)rr��1)rr�r)r)r�r�r�Nrr)r)r����r�r+rr)r)r��
r�r+rr)r)r�r�r��arr)rr�r;r6rfr�r�r�rs   r �test_explicit_from_tuplesz2ExplicitConstructionTest.test_explicit_from_tuplesZs����,�,�&�&��
�\�#������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)Nrrarr�r�r�r��rr�r;r6r�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;rcs  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)	Nrirjrkrlrmrnrrar��r�r�rrIs    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�-infryr��	-Infinity�-0.0�-0���{�G�z�?�@��?)rr�r;r5r6r#�floatr�r�rtr)�expovariate)r�r��rrGrs     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��A��"�"�4�(�F�M�M�O�c�,A�C�,G�H�A����Q��g�a�j� 1�2�r)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�ra��in�z457E+2�456789z4.57E+5z3.14
ryr�r�z	-4.35E-17rkrlz5.00E+8�T)	l����l����l����i�r��l��������z0E-017z0E-17rj�-Infr��NaN123r�)rr�r�r��5678z 1234�12_34�NaN12345F)rr�r�r�ro�
getcontextr,r;r6r�rfr-�assertIsInstancer.r#�
isinstancerrrN)r�r�r�r��ncr�prevdecr�s        r �$test_explicit_context_create_decimalz=ExplicitConstructionTest.test_explicit_context_create_decimal�sW���,�,�&�&���<�<�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�'�	3���� ���������'�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�ryr�r�r�r��dr�r�r�r�)rr�r/r�r;r5r6r#r�r�r�r,rtr)r�)r�r�r�r�rGrs      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;r6)r�r��test_values�inputrs     r �test_unicode_digitsz,ExplicitConstructionTest.test_unicode_digits<sU���,�,�&�&���8C�-7���
 +�0�0�2�O�E�8����S����0�(�;� 3r)N)r�r[r\r]rdrgrwr�r
rr�ignore_warnings�DeprecationWarningr�r�r�r�r�rr�r�r�r�rr)r r_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�r[r\r�rrr)r r�r�G����Gr)r�c��eZdZeZy)�PyExplicitConstructionTestN�r�r[r\�Prrr)r r�r�J����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�rfr-r7�localsrcs  r �test_implicit_from_Nonez0ImplicitConstructionTest.test_implicit_from_NonePs(���,�,�&�&�����)�T�+>���Ir)c��|jj}|jt|d�dz�d�|j|d�dz|d��y)Nrsri�50l2}rr�rcs  r �test_implicit_from_intz/ImplicitConstructionTest.test_implicit_from_intTsN���,�,�&�&��	
����W�Q�Z�"�_�-�t�4�������l�2�G�L�4I�Jr)c�x�|jj}|jttdt��y)NzDecimal(5) + "3"r�rcs  r �test_implicit_from_stringz2ImplicitConstructionTest.test_implicit_from_string\�(���,�,�&�&�����)�T�+=�v�x�Hr)c�x�|jj}|jttdt��y)NzDecimal(5) + 2.2r�rcs  r �test_implicit_from_floatz1ImplicitConstructionTest.test_implicit_from_float`r�r)c�~�|jj}|j|d�|d�z|d��y)Nrsri�2rbrcs  r �test_implicit_from_Decimalz3ImplicitConstructionTest.test_implicit_from_Decimalds2���,�,�&�&��������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 �r6�r��others  r �
__divmod__z7ImplicitConstructionTest.test_rop.<locals>.E.__divmod__ms�� �3�u�:�-�-r)c��t|�dzS)Nz rdivmodr�r�s  r �__rdivmod__z8ImplicitConstructionTest.test_rop.<locals>.E.__rdivmod__os���5�z�J�.�.r)c��dt|�zS)Nzlt r�r�s  r �__lt__z3ImplicitConstructionTest.test_rop.<locals>.E.__lt__q����s�5�z�)�)r)c��dt|�zS)Nzgt r�r�s  r �__gt__z3ImplicitConstructionTest.test_rop.<locals>.E.__gt__srr)c��dt|�zS)Nzle r�r�s  r �__le__z3ImplicitConstructionTest.test_rop.<locals>.E.__le__urr)c��dt|�zS)Nzge r�r�s  r �__ge__z3ImplicitConstructionTest.test_rop.<locals>.E.__ge__wrr)c��dt|�zS)Nzeq r�r�s  r �__eq__z3ImplicitConstructionTest.test_rop.<locals>.E.__eq__yrr)c��dt|�zS)Nzne r�r�s  r �__ne__z3ImplicitConstructionTest.test_rop.<locals>.E.__ne__{rr)N)r�r[r\rrrrr	rr
rrr)r �Er�ls*��
.�
/�
*�
*�
*�
*�
*�
*r)rr�z	divmod 10z
10 rdivmodzDecimal(10) < E()zgt 10zDecimal(10) > E()zlt 10zDecimal(10) <= E()zge 10zDecimal(10) >= E()zle 10zDecimal(10) == E()zeq 10zDecimal(10) != E()zne 10))�+�__add__�__radd__)�-�__sub__�__rsub__)�*�__mul__�__rmul__)�/�__truediv__�__rtruediv__)�%�__mod__�__rmod__)z//�__floordiv__�
__rfloordiv__)z**�__pow__�__rpow__c�&��d�zt|�zS�Nr6r�)r�r��lops  �r rz3ImplicitConstructionTest.test_rop.<locals>.<lambda>�s������c�%�j�0Hr)c�&��t|��zdzSr%r�)r�r��rops  �r rz3ImplicitConstructionTest.test_rop.<locals>.<lambda>�s����E�
�S�0@�5�0Hr)zE()zDecimal(10)r6�10)rr�r;�divmodr7�setattr)r�r�r�oplist�symr&r(s     @@r �test_ropz!ImplicitConstructionTest.test_rophsd����,�,�&�&��	*�	*�$	
������W�R�[�1�;�?��������Q�S�1�<�@�����1�2�G�<�����1�2�G�<�����2�3�W�=�����2�3�W�=�����2�3�W�=�����2�3�W�=�
��$�M�C��c��A�s�H�I��A�s�H�I����T�%�#�+�
�"=�>�"�S�[�4�/�
1����T�-�#�"5��"=�>�!�C�Z�%�/�
1�$r)N)
r�r[r\r]r�r�r�r�r�r.rr)r r�r�Ms(��@�J�K�I�I�@�01r)r�c��eZdZeZy)�CImplicitConstructionTestNr�rr)r r0r0�r�r)r0c��eZdZeZy)�PyImplicitConstructionTestNr�rr)r r2r2�r�r)r2c�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)�)rI�0E-15z0e-15)rIz2.3E-15z2.3e-15)rIz2.30E+2z2.30e+2)rIz2.30000E-15z2.30000e-15)rIz1.23456789123456789e40z1.23456789123456789e+40)rI�1.5z1.5e+0)rIz0.15z1.5e-1)rIz0.015z1.5e-2)rIz0.0000000000015z1.5e-12)rIz15.0z1.50e+1)rI�-15z-1.5e+1)rIraz0e+0)rI�0E1�0e+1)rI�0.0z0e-1)rI�0.00�0e-2)�.6er6z0.000000e-9)r>raz0.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�rara)r�r;r;)r��0E-2r<)r�z0.00E-8�0.0000000000)r�r9ra)r�z3.2E1�32)r�z3.2E2�320)r�z3.20E2rB)r�z3.200E2z320.0)r�z3.2E-6z	0.0000032)�.6fr6�0.000000)rCr9rD)rCrarD)�.0frara)rEr=ra)rE�
3.14159265�3)�.1frF�3.1)z.4frF�3.1416)rCrF�3.141593)z.7frF�	3.1415926)z.8frFrF)z.9frFz3.141592650)�grara)rMr;r;)rMr9r:)�Gr9z0E+1)rMz0E-5z0.00000)rMz0E-6rD)rMz0E-7z0e-7)rMz-0E2z-0e+2)�.0grFrG)z.0nrFrG)z.1grFrG)z.2grFrI)z.5grFrJ)z.7grFrK)z.8grFrL)z.9grFrF)z.10grFrF)rr9�0%)r�0E0rP)rz0E-1rP)rr?rP)rz0E-3z0.0%)rz0E-4z0.00%)�.3%ra�0.000%)rR�0E10rS)rRz0E-10rS)rRz2.34z234.000%)rRz1.234567z123.457%)�.0%�1.23z123%)rIryry)r��-NaN123rW)z+g�NaN456z+NaN456)z.3e�Infr�)z.16fr�r�)rO�-sNaNrZ)r��1.00r[)�6�123�   123)z<6r]z123   )z>6r]r^)z^6r]z 123  )z=+6r]z+  123)�#<10ryz
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/=10raz
-/////45.6)z/=+10�45.6z
+/////45.6)z/= 10rbz
 /////45.6)z=10r�z
-Infinity)z^16r�z-Infinity)z>10�1.2345z
1.2345)z<10rcz
1.2345)�,�1234567z	1,234,567)rd�123456�123,456)rd�12345�12,345)rdr�z1,234)rdr]r])rd�12rj)rdr�r�)rdrara)rdz-1234567z
-1,234,567)rd�-123456�-123,456)z7,rfrg)z8,rf� 123,456)�08,rfz	0,123,456)z+08,rfz+123,456)z 08,rfrm)rnrkrl)z+09,rfz
+0,123,456)z07,�1234.56�1,234.56)rnrorp)z09,roz	01,234.56)z010,roz
001,234.56)z011,ro�0,001,234.56)z012,rorq)z08,.1fz1234.5z01,234.5)rd�
1.23456789rr)z,%z
123.456789z12,345.6789%)z,erfz
1.23456e+5)z,Erfz
1.23456E+5)rHr�r�)rHz-.0r�)rH�-.01r�)�z.1f�0.r;)�z6.1fruz   0.0)rv�-1.z  -1.0)rt�-0.r;)rt�.01r;)rtrsr;)�z.2frur<)rzrxr<)rzz.001r<)rzz-.001r<)�z.1eru�0.0e+1)r{rxr|)�z.1Eru�0.0E+1)r}rxr~)zz.2e�-0.001z-1.00e-3)zz.2grr)zz.2%rz-0.10%)�zfz-0.0000z0.0000)rt�
-00000.000001r;)rt�-00000.r;)rt�-.0000000000r;)rzr�r<)rzr�r<)rzr�r<)rtz.09�0.1)rtz-.09z-0.1)� z.0frxz 0)�+z.0frxz+0)�-z.0frxra)r�rw�-1)r�rwr�)r�rwr�)zz>6.1frxzzz-0.0)zz>z6.1frxzzzz0.0)zx>z6.1frxzxxx0.0)u
🖤>z6.1frxu🖤🖤🖤0.0)z>z6.1frxz0.0)zz3,.10Fz
-6.24E-323r@)r>raru)za=-7.0z0.12345zaaaa0.1)z	<^+15.20%r�z<<+Infinity%<<<)z>,%�sNaN1234567zsNaN1234567%)z=10.10%r�z
   NaN123%rs-020)rr�r;�formatrfr-�
__format__)r�r�r��fmtrrKs      r �test_formattingzFormatTest.test_formatting�se���,�,�&�&��N��^*�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)Nrrzr<)rr�r�r-r;r�r��r��ctxs  r �+test_negative_zero_format_directed_roundingz6FormatTest.test_negative_zero_format_directed_rounding{sP��
�\�\�
&�
&�
(�C�(�C�L����V�D�L�L�$8�$8��$B�F�K�"�
$�)�
(�
(�s�AA%�%A.c�n�|jtt|jj	d�d�y)NrV�fz)rfrr�rr�r�s r �test_negative_zero_bad_formatz(FormatTest.test_negative_zero_bad_format�s%�����*�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�s8���59�\�\�Q�5F�2�7�7�C�0�C�q�C��F�C�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�rrd��
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�90ri�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�Nru)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.123ruu100٬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)r5�a_type)r�r�s  r �__init__zDFormatTest.test_decimal_from_float_argument_type.<locals>.A.__init__�s
��"�1�g��r)N�r�r[r\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�r[r\r]r�r�r�r�r	r�r�rr)r r4r4�s@��-�WE�r$�R�WJ�r�X�w�'�;�(�;� 9r)r4c��eZdZeZy)�CFormatTestNr�rr)r r�r��r�r)r�c��eZdZeZy)�PyFormatTestNr�rr)r r�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.1rsz-6.1�16.1�rr�r;r5�r�r��d1�d2r�s     r �
test_additionz%ArithmeticOperatorsTest.test_additions���,�,�&�&��
�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.3rsz-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�-5rGr8rsz-25z-75r�r�s     r �test_multiplicationz+ArithmeticOperatorsTest.test_multiplication9s���,�,�&�&��
�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_divisionUs���,�,�&�&��
�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�rar�r��rr�r�s     r �test_floor_divisionz+ArithmeticOperatorsTest.test_floor_divisionqs���,�,�&�&��
�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��25rAr��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;r5)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)Nrirm)rr�r;�absrcs  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)
Nry�sNaNrYr�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�rf)r�r�r�r�rurrGr��
qnan_pairs�
snan_pairs�	order_ops�equality_opsr�rr��op�gotrs                  r �test_nan_comparisonsz,ArithmeticOperatorsTest.test_nan_comparisons�sv���,�,�&�&���<�<�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��->�?�3�0���^�s�*+�C�I�I�&�'�"���1�&�B��Q��(�C�')�X�[�[�'8�t�e�H��M�M�(�C�#.�.4�f�$�b�k�k�1�a��/>�?�'�#�#���1�&�B��%�%�&6����Q��J��%�%�&6����Q��J�'�#�
#�Z�/���1�#�B��%�%�&6��A�q�A�$�0�%�^��^���^�s�0A6I-�6C-I:�-I7�:Jc��|jj}|d�j|d��}|j|d�jd�|�|j	t
|d�jd�y)Nrr��-2)rr�rvr;rfr-r�s   r �test_copy_signz&ArithmeticOperatorsTest.test_copy_sign!sd���,�,�&�&���A�J� � ����-��������-�-�b�1�1�5����)�W�Q�Z�%9�%9�4�@r)N)r�r[r\r]r�r�r�r�r�r�r�r�rrrrr)r r�r��s?��D�.�8/�8-�80�8+�80�8+�8,�6>�8B�tAr)r�c��eZdZeZy)�CArithmeticOperatorsTestNr�rr)r rr(r�r)rc��eZdZeZy)�PyArithmeticOperatorsTestNr�rr)r rr+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#rNrf�divide�compare�assertFalser;)r%r�r�r�r�r�r�r�r�r��d3�test1�test2�c2�c3�c1�sigs                 r �thfunc1r(0s���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���������
�&�E��^��	
��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#rNrf�multiplyr r.rrr��finish2r;)r%r�r�r�r�r�r�r�r�r�r!r"�thiscontextr#r$r%r's                 r �thfunc2r0Ws]���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������)�)�#�.�/�E�''�
&��	
��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,rYrT�	threading�Eventrrr.�Threadr(r0�startrr3r rNr�)r�r7�	save_prec�	save_emax�	save_emin�th1�th2r's        r �test_threadingzThreadingTest.test_threading�sM�����4�4���<�<�1��T�\�\�%>�%>��M�M�6�7�#�'�'�	�"�'�'�	�"�'�'�	� ���'���(��� ���(��� ���(��� ���(������g�T�G�<�����g�T�G�<���	�	���	�	���������������4�<�<�(�C����^�1�1�#�6�7�)�	���
����
�'���'���'��r)N)r�r[r\r]rBrr)r r2r2�s
��:�
$(r)r2c��eZdZeZy)�CThreadingTestNr�rr)r rDrD�r�r)rDc��eZdZeZy)�PyThreadingTestNr�rr)r rFrF�r�r)rFc��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.42rj�rir|g�����Y@@r�)rr��
assertGreater�assertGreaterEqual�
assertLess�assertLessEqualr;�assertNotEqual�object�list�maprtr)�shuffler9)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�rMrNrKrLrOr;�r�r�rTrUs    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)NrZr[y�?y�?y@y@�?)	rr�rOr;r�r�NotImplementedr	rr^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ʈ�rYrTrrl	��Z��mH;5�Brq�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,rMr6r;rOrNrLrKrfrr�rar)
r��Dr�r/r�r��emax�emin�etinyr�s
          r � test_decimal_fraction_comparisonz.UsabilityTest.test_decimal_fraction_comparisons���L�L� � ���d�l�l�#�,�,���,�,�&�&���|�|�0�0���<�<�8�8���q�z�z�I���q�z�z�J�� ����k����D�)��
�!�_��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�_�_�s
�K'O�O	c�$�|jj}|d�}tj|�}|jt	|�t	|��tj
|�}|jt	|�t	|��y)Nz43.24)rr�ror;r>�deepcopy)r�r�rr�rVs     r �test_copy_and_deepcopy_methodsz,UsabilityTest.test_copy_and_deepcopy_methods1sf���,�,�&�&���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�rWr�s   �r �hashitz.UsabilityTest.test_hash_method.<locals>.hashit?s,����Q��A��
�
��A����Q��"��Hr)rJr�r��nan123�-NaN)r������ro�!�=�>�?�@�A�B���r�rprr�r�r<z-0.000rTz-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�rt�extendr;rwrr�r,)r�r�r�ryr5rurvr�r�test_stringsrr�rr�r�h1�h2�h3s`                 r �test_hash_methodzUsabilityTest.test_hash_method:sg����,�,�&�&���|�|�0�0��	�	�w�r�{���w�z�"�#��w�{�#�$��w�x� �!��w�v���!A�,�!A�1� %�c�2��1�#*�4�	�t�Q��T�A�X��/�$+�	0�!/�0�!A�	�,�
	�����
���
������!������ ������$��
�#���%��)�*���$���%���%���%���$�)�	�0!�E����V�E�]�D��U��,<�=�!�
B���A��a��A���
�A����V�A�Y��Q��0��
�^�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)Nrryc��eZdZd�Zy)�-UsabilityTest.test_hash_method_nan.<locals>.Hc��y)Nr�rr�s r rxz6UsabilityTest.test_hash_method_nan.<locals>.H.__hash__�s��r)N)r�r[r\rxrr)r �Hr��s��
r)r�c��eZdZy)�-UsabilityTest.test_hash_method_nan.<locals>.DN)r�r[r\rr)r rmr��s��r)rm)rr�rfr-rwr;rPrx)r�r�rr�rms     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�r r#rcs  r �test_as_nonzerozUsabilityTest.test_as_nonzero�s6���,�,�&�&��	
������$������(�)r)c��|jj}|d�}|jt|�d�|jt	|�d�y)Nr�zDecimal('15.32'))rr�r;r6r:r�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.00ri��3.2r�)�3.54r�)�3.899r�)�-2.3r��z-11.0i�����r;r�z-0E3r)�89891211712379812736.1l�{�#'s�{Mr{rr�rYr�)	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)r7r)r�r)z3.5r�))�123.456r�z0E+4)�-123.456r�z-0E+4)r�r�z0E+3)r�r�z-0E+3)r�r�z1E+2)r�rqz1.2E+2)r�rr])r�rz123.5)r�r�123.46)r�r�r�)r�r�z123.4560)z123.455rr�)z123.445rz123.44)rYr�ry)r�i��ry)�sNaN314r��NaN314)
rr�r;rr��mathr�rfr�
OverflowError�ceil�roundr6)
r�r�r�r��
test_pairsrrG�test_triplesrur�s
          r �test_tonum_methodsz UsabilityTest.test_tonum_methods�s����,�,�&�&��
�T�]��
�W�
��	
����R��"�%�����R��"�%�	
����r��B�'�����r��E�*�
�
��D�A�q����T�Z�Z���
�3�Q�7�����*�d�j�j�'�&�/�B����*�d�j�j�'�&�/�B����*�d�j�j�'�(�2C�D����-����W�U�^�D����-����W�V�_�E�
�
��D�A�q����T�Y�Y�w�q�z�2�A�6�����*�d�i�i����A����*�d�i�i����A����*�d�i�i���1B�C����-����G�E�N�C����-����G�F�O�D��
�$�D�A�q����U�7�1�:�.��2�����*�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�rur;r	)r�r�rr�rvs     r �test_nan_to_floatzUsabilityTest.test_nan_to_float"sl���,�,�&�&��7�A��g�a�j�!�A��O�O�D�J�J�q�M�*��=�=��a�(�D����T�1�<�<��+<�4�#�F�	8r)c��|jj}dD]%}||�}|jtt|��'y)N)�snanz-snan�snan1357z	-snan1234)rr�rfrr�)r�r�rrs    r �test_snan_to_floatz UsabilityTest.test_snan_to_float,s6���,�,�&�&��;�A���
�A����j�%��3�<r)c��|jj}|d�}|j|tt	|���|d�}|j|tt	|���|d�}|j|tt	|���|d�}|j|tt	|���y)Nr�r�r�r�)rr�r;r7r:r�s   r �test_eval_round_tripz"UsabilityTest.test_eval_round_trip2s����,�,�&�&��
�\�#������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�rmr�r�r�r�)rr�r�)r�rrr�rrsr�r�r�)r�r�rrsr�r�r�)r�rrr�%)rr�r�)rrr�)rr�ru)rr�ru)rr��N�rrr�)rrru)rr�r�)r)rrr�rr�)rr�r�)rr�r;�as_tupler�s   r �
test_as_tuplezUsabilityTest.test_as_tupleEs����,�,�&�&��
�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�rfr��as_integer_ratiorrtr��tuplerrKr;r��gcd)	r�r�rV�coeffrvr�pqr�r�s	         r �test_as_integer_ratioz#UsabilityTest.test_as_integer_ratiorsh���,�,�&�&��	
���-�!�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�<�C��t���$�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�@�!%�%� r)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�r[r\r�rr)r �	MyDecimalr��s���Ar)r�rr�1.0r+)	rr�r�r5r�ror;rsr�)r�r�r�r�r�rrr5s        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;r6r��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.709530rqz2.045323r�r�1111000z
9.999999E+999rr�ra�
+Subnormalz0E-1005r�Nan891287828�
NaN1287828i  r�ry�e�101rir)r�11100z1.11E+9r�r��225r7�r-r&r�z1.50001z1e-3)rVr-r&z1.501z1.500z1e-10)r�):rr�r/r�r�r�r�r�r�r�r�r�r,rYrTr*r;r6rVr#rNrfr�r�r��ln�log10�logbrzr�r�r�rhr��capitalsr�rrjrdr�r�r�r�r�r�r��rotate�scaleb�shift�fmar0r-�to_integralr�r�r�r��quantize)r�r�r/r�r�r�r�r�r�r�r�r�r�rr��zr@r&s                  r �test_none_argszUsabilityTest.test_none_args�s^���,�,�&�&���,�,�&�&���|�|�0�0���<�<�8�8�����4�4���<�<�(�(���L�L�*�*�	��L�L�*�*�	��,�,�&�&���,�,�&�&���,�,�&�&��
�'�)�
$���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�o%�r�'�)�
$���G�L��G�L��G�L��$�'�1�� � �����+�� � �����-�� � �����.�(�	%�
$�s%�
$��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'��i7rir�r�irr�z9.123���r�rqi�ri�C)rr�r;rrjrlrnrdr�r�r�r�r�r�r�rr�r�r�r�rrrcs  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�r[r\r]rXr_rbrqrtr�r�r�r�r�r�r�r�r�r�r�r�r�rr
rr)r rHrH�sw��4�"�H1�&9�((5�T(�L<�\>�&�(*�6�g;�RG�4�+�&+7�ZA�B-!�^2�m/�^/Er)rHc��eZdZeZy)�CUsabilityTestNr�rr)r r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 �r r�zPyUsabilityTest.setUp�	�+���
��
��#&�#=�#=�#?�� ��"�"�4�(r)c�`��tj|j�t�|��yr�rrrr�tearDownrs �r rzPyUsabilityTest.tearDown�	�"����"�"�4�#;�#;�<�
���r)�r�r[r\r�rr�r�
__classcell__�r�s@r rr�	�����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��assertNotIsInstancercs  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)rt�pickle�HIGHEST_PROTOCOLrr�r�modules�dumps�loadsr;r�r�r�r��DecimalTuple)r��protor��savedecimalrr�rIrr��sxr��sys            r �test_picklezPythonAPItests.test_pickle
sX���6�2�2�Q�6�7�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�	�"�a8r)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�rtr;rr�rr�rfrr��r�r�rrrr�s      r �test_intzPythonAPItests.test_int7
s����,�,�&�&���t�S�!�A��1�u�9�%�A����S����_�c�%��(�m�<���
�A��
�
�j�)�A����W�S��V�_�a�0�"�	
���*�c�7�6�?�;����*�c�7�6�?�;����-��g�e�n�=����-��g�f�o�>r)c��|jj}tdd�D]#}|jt	||��|��%y)Nrri)rr�rtr�r�r�r�rs   r �test_small_intszPythonAPItests.test_small_intsH
s7���,�,�&�&���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)Nr7r8r9r:)
rr�rtr;rr�rr�r��truncr;s      r �
test_trunczPythonAPItests.test_truncO
s����,�,�&�&���t�S�!�A��1�u�9�%�A����S����_�c�%��(�m�<���
�A��
�
�j�)�A����W�T�Z�Z��]�3�Q�7�"r)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  r r�z:PythonAPItests.test_from_float.<locals>.MyDecimal.__init__`
s	����r)Nr�rr)r r�rE_
s��
r)r�r�r�r�ls\�&�5$3�|	r�r�r�ryr�r��abcr�r�r�r�)rr�r#r$r�r;r5r6rr�r�r�rfr-rtr)r�)r�r�r�r��bigintrGrs       r �test_from_floatzPythonAPItests.test_from_float[
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)Nrs)r,r-z3.1415rJ)r,r.��z
Decimal('-0')r�zDecimal('1')r�z
Decimal('10'))rr�r/r�r�r;�create_decimal_from_floatr��pir�rfr:)r�r�r/r�r&s     r �test_create_decimal_from_floatz-PythonAPItests.test_create_decimal_from_float{
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��rfz7.335ryz7.34�r-z7.33�10e99999�1e100000r�z0.871831e800�1e797)r&rVr-z	8.71E+799)rr�r/r�r;rr�rf)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;rWrXrY�complexr�rfr.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)8Nrrqr+r�)r&rrr�rr�r�z0.7r�r�z-0.9z9.73z1E+1�9999�'z-2000i0���r]riz0.0625�0.2r�)r&r�rar��0.01z0.0101r;z-0.3z0.02z-0.03r�r�r��1e10�9.99r7r��9.9z0.9)�thirdr&r�z7E+1i����r�z0.21�11r)�01�23g�������?r)r�)@rr�r/r�r�r�r,rYrTr*r;rfr#rNr rVr�r�r�r�r�rr�r�r�rrjr�r�r�r�r�rr�rr-r|r~r�r�r�r�r�r�r�r��adjustedrY�radixr�rzrhr�rdr�r�r�r�rr�r��	canonicalrrrt)r�rmr/r�r�r��xcr�s        r �test_named_parametersz$PythonAPItests.test_named_parameters�
s�	���L�L� � ���,�,�&�&���|�|�0�0���<�<�8�8���<�<�(�(��
�Y�����������
�^�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�E�^�^�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�ror�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�r[r\r)r5r<r
r?rBrJrOrUr\rmrvrr)r r"r"�	sP��;�11�f?�"�.��.�
8�@�@*�82�0J� nB�`&Nr)r"c��eZdZeZy)�CPythonAPItestsNr�rr)r rxrxWr�r)rxc��eZdZeZy)�PyPythonAPItestsNr�rr)r rzrzZr�r)rzc���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-rYrTr�rbrNr.r��?B��rrrNr.)rr/r�r�r�r;r,r-r0rYrTr�rbr()r�r/r�r�r�r&r$r�s        r rzContextAPItests.test_none_args_s���,�,�&�&���<�<�8�8�����4�4���<�<�(�(��
�Y��
�$��D�t�"�$�d�$�H���b��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�r)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;rfr-r+)r�r�r��rndrs     r r�z(ContextAPItests.test_from_legacy_stringsss���	��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,rTrYr-r�rbrNr.rNr.)rtr+r,rr/rr-r/r.r;r,rTrYr-r�rbrNr.r�r�r0r�r4r)�	randranger�r()r�r1r/r2r�rI�combinations�dumper�loader�rirG�fi�tir,rorn�capsrbrrs                    r r5zContextAPItests.test_pickle�sS���6�2�2�Q�6�7�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�".����&�}�5�E�B��!*�>�&�+A�!B���A�%.�~�f�/E�%F�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�?&G�"C�6�#/�H&1�C�K�K�	�"�s8r)c��|jj}|j|d�dd|d�dig�|j|d�dddig�y)Nr�r�r�)rr)rr��assertIn�assertNotInrcs  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/rorOr>rNr.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/rfr.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�Nrqr�)rr�r/rr;rfr-�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;rfr-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;rfr-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/rjr;rfr-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/rlr;rfr-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/rnr;rfr-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/rrr;rfr-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/rpr;rfr-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/rtr;rfr-r�s     r �test_copy_negatez ContextAPItests.test_copy_negate8�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/rvr;rfr-r�s     r rzContextAPItests.test_copy_signA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;rfr-r�s     r �test_dividezContextAPItests.test_divideM�����,�,�&�&���,�,�&�&���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/rxr;rfr-r�s     r �test_divide_intzContextAPItests.test_divide_intY�����,�,�&�&���,�,�&�&���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;rfr-r�s     r �test_divmodzContextAPItests.test_divmoder�r)c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�y�Nr�r))rr�r/rVr;rfr-r�s     r �test_expzContextAPItests.test_expq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�rG�4r�rz
not a decimalrr�gZd;�O��?)rr�r/rr;rfr-r�s     r �test_fmazContextAPItests.test_fmaz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;rfr-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/r�r;rfr-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;rfr-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;rfr-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;rfr-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;rfr-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;rfr-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;rfr-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;rfr-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;rfr-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;rfr-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;rfr-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/rdr;rfr-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/rzr;rfr-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;rfr-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;rfr-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;rfr-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;rfr-r�s     r �test_max_magzContextAPItests.test_max_mag9
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;rfr-r�s     r �test_minzContextAPItests.test_minE
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;rfr-r�s     r �test_min_magzContextAPItests.test_min_magQ
r�r)c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r/�minusr;rfr-r�s     r �
test_minuszContextAPItests.test_minus]
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;rfr-r�s     r �
test_multiplyzContextAPItests.test_multiplyf
�����,�,�&�&���,�,�&�&���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;rfr-r�s     r �test_next_minuszContextAPItests.test_next_minusr
sh���,�,�&�&���,�,�&�&���I��
�L�L����%��������b�)�1�-����)�Q�\�\�4�8r)c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r/r�r;rfr-r�s     r �test_next_pluszContextAPItests.test_next_plus{
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;rfr-r�s     r �test_next_towardz ContextAPItests.test_next_toward�
r�r)c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r/r�r;rfr-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)Nrirrm)rr�r/r;rh)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;rfr-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�rsr�r)�modulorWr�)rr�r/�powerr;rfr-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;rfr-r�s     r rUzContextAPItests.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;rfr-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;rfr-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;rfr-r�s     r �test_rotatezContextAPItests.test_rotate�
r�r)c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r/r�r;rfr-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;rfr-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;rfr-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/rr;rfr-r�s     r �
test_shiftzContextAPItests.test_shift
s����,�,�&�&���,�,�&�&���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;rfr-r�s     r �
test_subtractzContextAPItests.test_subtractr�r)c��|jj}|jj}|�}|j|d��}|j	|jd�|�|jt|jd�yr�)rr�r/r�r;rfr-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;rfr-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;rfr-r�s     r �test_to_integral_exactz&ContextAPItests.test_to_integral_exact4sn���,�,�&�&���,�,�&�&���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;rfr-r�s     r �test_to_integral_valuez&ContextAPItests.test_to_integral_value=s����,�,�&�&���,�,�&�&���I��
������,������,�,�R�0�!�4����)�Q�%8�%8�$�?����)�Q�%8�%8�"�c�Br)N)Gr�r[r\rr
rrr�r�r�r5r�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�rrrrUrr
rrrrrrrrr!r#rr)r r|r|]sv��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)r|c��eZdZeZy)�CContextAPItestsNr�rr)r r%r%Gr�r)r%c��eZdZeZy)�PyContextAPItestsNr�rr)r r'r'Jr�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_localcontextQs~���\�\�,�,�
��|�|�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_ctxr0r1r2s	         r �test_localcontextargz)ContextWithStatement.test_localcontextarg^s����,�,�&�&���\�\�,�,�
��|�|�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-rTrYr�rb)r_�rTrq�rYr�r��rbr�rQ�rN�r.)
rr�r�r;r,r-rTrYr�rbrfr-rr�s  r �test_localcontext_kwargsz-ContextWithStatement.test_localcontext_kwargsos��
�\�\�
&�
&��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�r5r9)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�
&�
/�4����T�Y�Y��+����S�X�X�y�1�0��\�\�
&�
&�B�
&�
/�4����T�Y�Y��+����S�X�X�y�1�0�
/�0�
/��0�
/�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�r;T���z0e-999z3.4e200r)rr�r/r�r�r�r�r*r;rNr.rTrOrfr�r#rr )r�r�r/r�r�r�r�r/r6r&r$s           r �test_nested_with_statementsz0ContextWithStatement.test_nested_with_statements�s5���,�,�&�&���,�,�&�&���\�\�,�,�
��|�|�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�so���|�|�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#1swYyxYwrrJrKs      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)Nrr5rr�r�)rr/r�r�r4r;r,)
r�r/r�r�r4r&�n1r$�n2�n3r%�n4rLs
             r �test_with_statements_gc3z-ContextWithStatement.test_with_statements_gc3�st���,�,�&�&���|�|�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�r[r\r3r7r@rDrHrMrOrUrr)r r)r)Ms.��N�N�"I�82�!2�F
�
�r)r)c��eZdZeZy)�CContextWithStatementNr�rr)r rWrW�r�r)rWc��eZdZeZy)�PyContextWithStatementNr�rr)r rYrY�r�r)rYc�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�rNr.�_raise_error)r&�flagr�s  �r �raise_errorz7ContextFlags.test_flags_irrelevant.<locals>.raise_errorsC����|�|�q� �&*��
�
�d�#��=�=��&��J�'��$�$�T�*r)r+r5r�)r,rTrYr-r.rNz100E-425000010rrrz
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�r0rfr�r�r-rr*rNr�rQr3r9r>r;)r�r�r/r�r�r�r�r�rar&�
operations�flagsets�fnrr@�kr�rN�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��#�H�B�����!��d�)�C�#*�=�=�#6�#6�#8�>�#8�4�1�a�A�Q�#8�E�>�'���#�#�%�'�D����.�(��d�)��"&�e���'�D��>�1�&�-�-�d�3�(��#�#��#�+�+2�-�-�*=�*=�*?�E�*?�3�1�Q�1�Q�*?�	�E����2��&�� � ��g�!`�;>��!H�"I�J�� � ��N�"]�;I�9�"U�#V�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�rOrNr.r;�update)r�r/r�r�r�rs      r �test_flag_comparisonsz"ContextFlags.test_flag_comparisons;s����,�,�&�&���,�,�&�&���,�,�&�&���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�ror�r r.r*r;r#rNr�r�rMrf)r�r�ror�r�rs      r �test_float_operationz!ContextFlags.test_float_operationasK���,�,�&�&�����4�4���|�|�0�0��
�^�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�]�^�^�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"rfr�r#rN)r�rWr'r&�signalr�ror�s      ��r �assert_attrz7ContextFlags.test_float_comparison.<locals>.assert_attr�s\������!���4� �A���'��!�!�&�!�Q�/��
�
�a��d�D�)��O�O�G�M�M�.�9�:r)rZr[r]r\r;r�r�rLr�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	)rrr
rr�r�ryr�)r�)r�rrr'r�rs�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)	Nr:z100.0rr�r�g$@r�rW)r*r�r;�lenr#rNrf�sorted)r�rrrrWr�ror�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))rrTr)rr�r/ror�r�r r.)r�r/r�r�r�r�r�r�rorsrurvrwrxryrzr{r|r}r~rr�s`      @@@@@@@@@@@@@@@r �test_float_comparisonz"ContextFlags.test_float_comparison�s(�����,�,�&�&���,�,�&�&�����4�4���|�|�0�0��	;��&�/���������������V�_�
����
��
�#���K�(�	��e����&�M�	�	I�	I�	I�<	5�*�Y��
�"�
�����Q�W�W�^�4�5���4� ��A�d�+�&*�A�G�G�N�#���>�*��A�n�5��
�
�s
�(AE�Ec��|jj}|jj}|jj}|jj}|�}|j|j|�|j|j|�|j�d|j|<d|j|<|j|j|�|j|j|�yr^)
rr�r/r�ror rNr.�clear_trapsr#)r�r�r/r�ror&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�r[r\rjrmrror�r�rr)r r[r[�s1��@W�D$(�L�36��36�jY6�v0r)r[c��eZdZeZy)�
CContextFlagsNr�rr)r r�r�r�r)r�c��eZdZeZy)�PyContextFlagsNr�rr)r r�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�r4r�r�r�r�r�r(ror,r.r;�	Exceptionr�)r�r�r�r�r4r�r�r�r�r��savecontext�basic_context_prec�extended_context_prec�ex�templater�rIs                 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�)rr7r�r�r�r4r�r�r�r;r,r(ror.r�r�)r�r7r�r�r�r4r�r�r�r��default_context_precr�r��saveprecrIs               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�r[r\r]r�r�rr)r r�r�s��%�"�H'r)r�c��eZdZeZy)�CSpecialContextsNr�rr)r r�r�Xr�r)r�c��eZdZeZy)�PySpecialContextsNr�rr)r r�r�[r�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,rYr~rqr�rTrr�rrr�r-r+r��r�rbrrnr�rNr.r�r)r,rYrTr-r�rbrNr.rQr=r<r�r>�Qr?�rr)rr)
rr/r7ror+r;r"rfrr-r.�KeyError�__delattr__)r�r/r7r�r's     r �test_invalid_contextz+ContextInputValidation.test_invalid_context`s����,�,�&�&�����4�4�����!��%�D��A�t�V�$����W�Q��-�v�6����j�'�1�d�B�?����i��!�T�5�A�	%�	��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����j�'�1�d�B�?����j�'�1�d�A�>����i��!�T�7�C�*�	
���.�'�1�f�c�B�	
���)�W�a��"�=����(�G�Q���<����(�G�Q��-�a�0�	2�'�D����n�a�m�m�T�B�'�
	
���)�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�r[r\r�rr)r r�r�^s��:;r)r�c��eZdZeZy)�CContextInputValidationNr�rr)r r�r��r�r)r�c��eZdZeZy)�PyContextInputValidationNr�rr)r r�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-rTrYr�rbr�rQr4rNr.)r�r,r-rTrYr�rbrNr.r�r/rs          ��r r�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�9X�A��A��J��9X�� Y�!&�D�J��$�!�%��.�9G��9P�SX�9X� Y�9X�A��A��J��9X�� Y�!&�D�J�%��!Z��!Zs�)B5�B:)NNNNNNNNr�)r/rs��r �	MyContextr��s���IM�@D�%)�
'r)r��r,r-rTrYr�rbrNr.r,rqrr5�9e2rr-�XYZ)r-r,rdr+rTrs)rTr,z1e-99z2.234e-2000r;rY)rYr,�1e99z
2.234e2000r�r<�1E222z1e+222rbr�c)rbrYz!1.000000000000000000000000000E+99rNr>r.r?)%rr�r/r�r�r�r�r�r�r�r�r;r"rfrr,rr-r�r-rrTr�r#rNrYr�r�r�r�rbr6r*r4r r.r�)r�r�r�r�r�r�r�r�r�r�r�r�rr'rrrr/rs                @@r �test_context_subclassingz+ContextSubclassing.test_context_subclassing�sP����,�,���/�/���/�/���/�/�� �/�/���/�/���#�#���/�/���%�%�	��%�%�	�"�3�3��	'��	'�4
�I���K��'�D����W�Q��-�w�q�$�/?�@�'�
	����*�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�,�H�	����*�i�?�F�2�;�?��1�1�%���������#����(�A�E�E�7�6�?�G�L�<Q�R��<�<�1��"�H�g�6����������0�7�	����*�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�,�0�	�
�
��$�W�-�F����Q�W�W�V�_�-�.�	����)�Y�B�7�5�/�B��W�n�5�6����/�F��O�O�A�G�G�F�O�,�0�	�
�
��$�W�-�F����Q�W�W�V�_�-�.r)N)r�r[r\r�rr)r r�r��s��i.r)r�c��eZdZeZy)�CContextSubclassingNr�rr)r r�r�r�r)r�c��eZdZeZy)�PyContextSubclassingNr�rr)r r�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�rQr�r�rkrlr#r8�__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�__rG)r�r�r/r	r�r;r��r�rrr�s    r �test_context_attributesz'CheckAttributes.test_context_attributes(s����A�I�I�K�(�O�(�1�D�A�I�Q�\�\�#�=N�Q�(��O��A�I�I�K�(�O�(�1�D�A�I�Q�\�\�#�=N�Q�(��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�rG)r�r�r�r	r;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��A�I�I�a�L�)�P�)�1�T�Q�Y�a�l�l�3�>O�Q�)��P�����Q��#�a�&��#�%�0��
Q��Ps�B3�B3�"B8�=B8N)r�r[r\r�r�r�rr)r r�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;rircs  r �
test_adjustedzCoverage.test_adjusted6si���,�,�&�&�������-�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�rkr;)r�r�r�rr�s     r �test_canonicalzCoverage.test_canonical>sk���,�,�&�&���\�\�,�,�
��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�r5rrFz{Context(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[], traps=[]))rr7ror,rYrTr�r-r�rbr4rNr.�__repr__r;)r�r�r'rr�s     r �test_context_reprzCoverage.test_context_reprIs����L�L�'�'�,�,�.�����������$��
���
����!�$�,�,�/�C� �A�G�G�C�L� �A�G�G�C�L�0�
�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)"Nrrqz-10r��7r�r)rsrr�z1.2raryTz1.01r�F�20�580r�r�r+z2E+1z-1E+1z+Normalr�z1.12345r�r�rar�i�i�)!rr�r�r,rYrTr;rrr�r��powrVr�r�r�r�r�rzr�r�r�rhr�r#r|r~r�r�r�rrrtrv)r�r�r�r�rr�rs       r r�zCoverage.test_implicit_context\s2���,�,�&�&���|�|�0�0��
�^�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�~�^�q��A�F����A�����A��
�
��A����Q��"��
�
��A����Q��"����G�A�J�'�A����Q��"��^��^��~�^�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�194ryr�Fr�r�r�)
rr�r�r�r�r*r;r#r�r.r*rNr�)r�r�r�r�r�r�r�r�s        r r�zCoverage.test_divmod�st���,�,�&�&���|�|�0�0���<�<�8�8�����4�4��
�^�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�^�^�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�r[rrqFr�r�r�)
rr�r�r�r�r,r*r;r#rNrYrTr.)r�r�r�r�r�r�s      r rzCoverage.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)NrrqFr��1e1)rr�r�r�r,rYrTr.rr#r��r�r�r�r�r�rs      r rUzCoverage.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;rjr�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"ra)r�r�r's   r r.zCoverage.test_rop�s@���,�,�&�&��M�D��M�M�5�'�'�#�,��5�e�<�n�M�Mr)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�rcr)z9.99e-5rarrrsz1.23457rcr�z1.2345000000r�z0E+10rVr�r�)	rr�r�r,r;r6�	__round__rfr-)r�r�r�r�s    r �
test_roundzCoverage.test_rounds&���,�,�&�&���|�|�0�0��
�^�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��^�^�s�EF�Fc�|�|jj�}|jt|jdg�y)Nr)rr/rfrr�)r�r�s  r �test_create_decimalzCoverage.test_create_decimals.���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     r r<zCoverage.test_intsy���,�,�&�&���|�|�0�0��
�^�q��A�F���d�
�#�b�$�h�.�A����S��V�Q�'����Q�]�]�_�a�0�	�^�^�s�AB�Bc�2�|jj}|�}d|_ddz}|j|�}|j	||�|j|�}|j	||�|j
|d�}|j	||�y)Nr�i�i�r)rr/r,rrr;rtrv)r�r/r�rr�s     r r�zCoverage.test_copy%s����,�,�&�&���I������d�l�O��
�J�J�q�M������Q�B��
�M�M�!�������Q�B��
�K�K��1�������Q�B�r)N)r�r[r\r�r�r�r�r�rrUr�r.r�r�r<r�rr)r r�r�4sH��7�	��&O#�b'5�R/�((�(�N�J�"?�1� r)r�c��eZdZeZy)�	CCoverageNr�rr)r r�r�5r�r)r�c�,��eZdZeZ�fd�Z�fd�Z�xZS)�
PyCoveragec�~��t�|��tj�|_tj
d�yrrrs �r r�zPyCoverage.setUp;rr)c�`��tj|j�t�|��yrrrs �r rzPyCoverage.tearDown@rr)rrs@r r�r�8r r)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)rEr�r�)z#.0fr��1.)rM�1.1r�)z#gr�r�)rOr�r�)z#.0gr�r�)rUr�z100%)z#.0%r�z100.%)r�r�r�r;r�)r�r�r�r�r�rrKs       r �test_py_alternate_formattingz,PyFunctionality.test_py_alternate_formattingGsH���)�)���~�~����*�N�C��F����V�G�A�J��4�f�=�*r)N)r�r[r\r]r�rr)r r�r�Ds
��+�>r)r�c�.�eZdZdZd�Zd�Zd�Zd�Zd�Zy)�
PyWhiteboxz White box testing for decimal.pyc��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}|j	||d��d|_|d�|d�z}|j	||d��d|_|d�|d�z}|j	||d��d|_|d�|d�z}|j	||d��d|_|ddz�|d�z}tj
|_tj|_tj|_	d|jtj<|d�}|dz}|j	|d�ddd�y#1swYyxYw)Nr�ir�z
0.00390625z-0.6z0.0012885819�256e7l�o�
�z-0.0625r`�152587890625e7rsic
r�152587890625z3e-6rz2.6e-6r�z2.56e-6r���iB�ul)r�r�r�r,r;rQr�rYrkrTr.r�)r�r�r�r�r�D2�ress       r �test_py_exact_powerzPyWhitebox.test_py_exact_power_s���)�)���~�~��
�^�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����Q����0��A�F���'�7�6�?�:�A����Q��� 1�2��A�F���'�7�6�?�:�A����Q��	� 2�3��A�F���'�7�6�?�:�A����Q��	� 2�3��A�F���3���7�6�?�2�A��Z�Z�A�F��Z�Z�A�F��Z�Z�A�F�!"�A�G�G�A�I�I�����B���)�C����S�(�+�Y�^�^�s�HI�I	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  r r!z=PyWhitebox.test_py_immutability_operations.<locals>.<genexpr>�s����9�'8�!��1�v�'8�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())r7r;�_sign�_int�_exp)�	operation�useOther�b1�b2r�r�r�s  �����r �checkSameDecz@PyWhitebox.test_py_immutability_operations.<locals>.checkSameDec�s�����U�Y�&��/�0�� � ����2�8�8�4�� � ����"�'�'�2�� � ����"�'�'�2�� � ����2�8�8�4�� � ����"�'�'�2�� � ����"�'�'�2��U�Y�&��-�.�� � ����2�8�8�4�� � ����"�'�'�2�� � ����"�'�'�2r)�__abs__rTrr
rr	rrr�	__float__r rx�__int__�	__trunc__rr�__neg__�__bool__�__pos__r"rrr�r!rrr#r�__str__rrrir�rr�r�r�rr�r�r�r�r)F)r�r�r7r4ror1r4r.r;rr
r)
r�r�r7r4r�rrrr�r�s
`     @@@@r �test_py_immutability_operationsz*PyWhitebox.test_py_immutability_operations�s^����)�)���)�)���\�\�
����!���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)Nrirj)r�r�r;r6rOr>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)Nryr�)r�r�r��_rescaler�r#r�r�s     r �test_py_rescalezPyWhitebox.test_py_rescale�sM���)�)���~�~��
�^�q����'�'��8�4�A��O�O�A�H�H�J�'��^�^�s�<A-�-A6c�|�tj}|jt|d�jdt
�y)Nz3.1234r)r�r�rfr�_roundr�rcs  r �test_py__roundzPyWhitebox.test_py__round�s*���)�)�����*�g�h�&7�&>�&>��8�Lr)N)	r�r[r\r]rrrr!r$rr)r r�r�\s"��*�1,�fM$�^*�(�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.rN)r;rbr()r�r&s  r �assert_restz7CFunctionality.test_c_ieee_context.<locals>.assert_rests2�����W�]�]�A�.��4��'�2�6��4��'�2�6r)r��`i����r~rFrG�"ii�r�rqi)r��IEEEContext�	DECIMAL32�	DECIMAL64�
DECIMAL128r;r,rYrTrfr�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)rNr.)r�r/r:�
DecRoundedr;�_flags�_trapsr�s   r �test_c_contextzCFunctionality.test_c_contextsO���)�)���!�,�,�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)Nror��ir)r�r:�DecConversionSyntax�DecDivisionByZero�DecDivisionImpossible�DecDivisionUndefined�DecFpuError�
DecInexact�DecInvalidContext�DecInvalidOperation�DecMallocError�DecFloatOperation�DecOverflowr2�DecSubnormal�DecUnderflowr;r-r.r/�IEEE_CONTEXT_MAX_BITSr0�DecIEEEInvalidOperation�	DecErrors�DecTraps)r��condrGr�s    r �test_constantszCFunctionality.test_constants's���
�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�r[r\r]�requires_extra_functionalityr0r5rJrr)r r&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�e!d�����Z"d�Z#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@Brsr�i�)r�r�r�r,rtr)r�r;)r�r�r�rrr�rGr�rWrr�s           r �test_bignumzCWhitebox.test_bignumQs����)�)���~�~��
��V��
��V��
�^�q��A�F��1�X���$�$�R��,���$�$�T�4�0����F���A�J�'�!�*�,��� � ��A�&���^�^�s�A,B(�(B1c�P�|jttjdd�y)Nr+r�)rfr-r�r�r�s r �test_invalid_constructionz#CWhitebox.test_invalid_constructionbs�����)�Q�Y�Y��5�9r)c���tj}tj}tj}tj}||��5|j||d�ddd�y#1swYyxYw)N�1e9999999999999999999)r�r�r�r/r�rf)r�r�r�r/r�s     r �test_c_input_restrictionz"CWhitebox.test_c_input_restrictionesU���)�)���-�-���)�)���~�~��
�'�)�
$����.��5�
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�r5rrTaQContext(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�r7roror,rYrTr�r-r�rbr4rNr.r�r;)r�r7ror�r'rr�s       r �test_c_context_reprzCWhitebox.test_c_context_reprps����)�)���)�)�����!�����������$��
���
����!�!�$�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!rrNrr.r�ri�pr�r�r�l�N�Zoiʚ;r�rTr5r;r:rr=r<)r,rTrYr�rb�win32r�r�r�i���?rqi9�r�r���zwith localcontext("xyz"): passz-with localcontext(context=getcontext()): passr�)r�r/r�r�ror�r�r4rQrfr�rN�__setitem__r.r�__delitem__r-r+ror�r�platformr"�execr�)r�r/r�r�ror�r�r4�HAVE_CONFIG_64r�r�int_max�gt_max_emaxr'�
saved_contexts               r �test_c_context_errorszCWhitebox.test_c_context_errors�s���)�)���-�-���:�:���)�)���~�~���\�\�
��\�\�
��*�*�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��%�D����j�'�1�d�K�H�%����*�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�D����m�W�a��w�q�y�I����m�W�a���x��z�J��|�|�w�&��!�!�*�g�q�$��H��!�!�*�g�q�$����
�K�B�
�:�:��"����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�*�D����j�'�1�d�B�?����j�'�1�d�A�>����i��!�T�7�C���!�!�*�g�q�$��F��!�!�*�g�q�$��H�
*�	
���)�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�r0r�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��_allcrrrrZ)r3r4rqr�r[r\r~r)r�r/r�r�r�r�r4rQrfr�r+rr_rr-)r�r/r�r�r�r�r4rar�rbr'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�)�D����m�W�a��w�q�y�I����m�W�a���x��z�J��|�|�w�&��!�!�)�W�a��w�G��!�!�)�W�a���x��z�J�)�	
���*�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�rdre)r�r7r�r�r�r�r�ror,r�r-rYrTr�rbr;�Etiny�EtoprQr�r�r�)r�r7r�r�r�r�r�r�s        r �test_c_valid_contextzCWhitebox.test_c_valid_context(s����)�)���)�)���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�r7ror;ri)r�r7r�s   r �test_c_valid_context_extraz$CWhitebox.test_c_valid_context_extraNsJ���)�)�����!��������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�TrVrr�r)r�r�r�r�r�rlrQr.rfr�rr�)r�r�r�r�r�rlrbr�s        r �test_c_roundzCWhitebox.test_c_roundWsK���)�)���-�-���~�~���:�:���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�rrz=%d.1)r�r�rQrfr-r�r)r�r�ra�maxsizes    r �
test_c_formatzCWhitebox.test_c_formatos����)�)���*�*�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;rrfr-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�"�=�
�^�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��^�^�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+9rrrGr+rr�r�rrz	1e-100000r�r�r�r��200Tri�)r�r�r�r�r�r�r;r�rfr-r�rhr�rr�r�rvrkr|r*r6rjr.rr#rNr*r,)r�r�r�r�r�r�r�s       r �test_c_funcszCWhitebox.test_c_funcs�s���)�)���-�-���)�)���\�\�
��~�~�������+�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�	
�
�^�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�^�^�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)
rVr�r�r�r�r�rzr�r�r�rhr�r�rr�)rrjrdr�r�r�r�r�r�r�r�rr�rrrQ)�mod)r�r�r/r"rfr-rr�r�rrr)r�r�r/rr'�funcr�s       r �test_va_args_exceptionsz!CWhitebox.test_va_args_exceptions�s����)�)���)�)���M�"��K�D��1�d�#�D����i��s��;����i��s�D��A�K�D�D��1�d�#�D����i��s��;����i��s�D��A�D�	
���)�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�r4rFr9rBrDr:r7r�s r �test_c_context_templatesz"CWhitebox.test_c_context_templatess������
�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 )rr�signal_dictr'r�s   �r �assertIsExclusivelySetz<CWhitebox.test_c_signal_dict.<locals>.assertIsExclusivelySet$s8���"���&�=��O�O�K��$4�5��$�$�[��%5�6�	#r)Trr�rrr�i���rrr�)>r�r/r7r�ror�r�r�r�r�r�r�r:r?rFror#r.r�r��valuesr�r rNrr�r;rfr-r�r�	getsizeofr�r*r3r4r2r=rCrDrBr9rAr:r;r<r>r@r8r4rtr�r)�sampler�rQr,r-rTrYr�rb)&r�r/r7r�ror�r�r�r�r�r�r�r:r?rFr�r�rer�rr�
IntSignals�IntCond�limr�r�r�rNr.r,rornrbr��crr�rrIs&`                                     r �test_c_signal_dictzCWhitebox.test_c_signal_dicts�����)�)���)�)���-�-���)�)���)�)���:�:���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��A��3�Z��*�]�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�9+� ��@�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  r r�z6CWhitebox.test_invalid_override.<locals>.make_grouping�s'���7�7�C�0�C�q�C��F�C�0�1�1��0s�)c�4���|�j||�Sr)r�)rr�r�r�s   �r r�z0CWhitebox.test_invalid_override.<locals>.get_fmt�s����1�:�(�(��h�7�7r)rd)�r�rr��xxxxxr�r��yyyyy�r�rMr�)r�r�r�r�r�r�rfr)r�r�r�r��invalid_grouping�invalid_dot�invalid_sepr�s       @r �test_invalid_overridezCWhitebox.test_invalid_override�s�����)�)��	;�'�	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.rrtrfr�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�rZ)rr�r�)rr�r�z-sNaN1)r�r�r�r�r�r�r,r.rrtr;r6r�rfr�)r�r�r�r�r�r�r�rs        r �test_from_tuplezCWhitebox.test_from_tuple�s[���)�)���~�~���-�-���:�:���K�K�	�
�^�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�^�^�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�rQrK�
__sizeof__r;)r�r�rarr�s     r �test_sizeofzCWhitebox.test_sizeofs����)�)���*�*�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 r r�zMCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.as_integer_ratios��r)c��|Srrr�s r rzDCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.__abs__����r)N�r�r[r\r�rrr)r �Xr�s��
�
r)r�c��eZdZd�Zy)�<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Yc��dgdzS�Nrr�rr�s r rzDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Y.__abs__�
���s�3�w�r)N)r�r[r\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�r[r\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 �r r�zMCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.as_integer_ratio$s����!��a��d�|�#r)c��|Srrr�s r rzDCWhitebox.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_methodss{����)�)��	��	�	��	�	��	�	��	��a��7�C����W�/�/��E�
�;�$�/�/��6�
8�r)�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)	rzr�r�rdr�r�r�r�r)r,rTrYrrr�rr���l�9V�r��40E9z2.0E+5r�)r�ri�rqz0.0025)r�r�r/r�rQrkr�r;rVr�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�
�
�*�
%����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�&�
%�
%�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)r5r�r/rN�assertRaisesRegexrr��iterr:r�ro)r��
SignalDict�sd�err_msgs    r �test_c_signaldict_segfaultz$CWhitebox.test_c_signaldict_segfaultZs����!�)�)�+�+�+�,�
�
�\��'��
�
#�
#�J��
8���G�9��
#�
#�J��
8���H�9��
#�
#�J��
8���H�9��
#�
#�J��
8�%)�B�q�!�!�"�9��
#�
#�J��
8��q�!�!�"�9��
#�
#�J��
8��!�)�)�+�#�#�#�9��
#�
#�J��
8�
�I�I�K����#�9��
#�
#�J��
8��G�G�I�9�
8�+9�
8��9�
8��9�
8��9�
8��9�
8��9�
8��9�
8��9�
8�s`�G�1G�G�G*�7G7�)"H�)"H�)H�G
�G�G'�*G4�7H�H�H�H$c���tjd�}|jt|d�d�tj	d��5|jt|d�d�ddd�y#1swYyxYw)Nz6.09e+23r>z6.09E+23rr<)r�r�r;r�r�)r�rs  r �test_format_fallback_capitalsz'CWhitebox.test_format_fallback_capitalsxsX��
�I�I�j�!�������3���4�
�^�^�Q�^�
'����V�A�s�^�Z�8�(�
'�
'�s�A.�.A7c��tjd�}|jt|d�d�tj	tj
��5|jt|d�d�ddd�y#1swYyxYw)Nz6.09z#.1fz6.1rQz6.0)r�r�r;r�r�r�)r�r�s  r �test_format_fallback_roundingz'CWhitebox.test_format_fallback_rounding�s\��
�I�I�f��������6�*�E�2�
�^�^�Q�\�\�^�
2����V�A�v�.��6�3�
2�
2�s�A<�<BN)&r�r[r\r]rQrSrVrXrergrKrjrnrprrrurxr{r�r�r�r�r�r�r�r�r��skipIfrr_r	rrr
r�r�r�r�rr)r rMrMMsG��'�'�":�	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�F�<9�7r)rMc��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)
NrGr�r/�parameter name mismatch in %s��msgrrr4�parameter kind mismatch in %s)r�r�r	r"r��inspect�
isfunction�	signaturerQ�
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_module�s�����F�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�*C�Q�!�&�&�*C��D�-2�-=�-=�-C�-C�-E�0�-E���A�$�/�/�#�.��A�$�)�)�-E��0��<�'��$�$�V�V�)H�6�)Q�%�S�1��.��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�rerr�rr�rWr�rVr�numr�r-r&)r�rer�rWr�rVrr�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�r3r)	�moduler'r�kwargs�name�param�POS�POS_KWD�pdicts	      ���r �mkargsz0SignatureTest.test_inspect_types.<locals>.mkargs�s�����D��F�"�~�~�3�3�5���e��6�>�8��:�:��$��K�K��f�
�d� 3�4��Z�Z�7�*�#(��=��#6�F�4�L�$�%@�A�A� 6���<�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�rWrr�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)NrGr�r�rr�rr�r+zinvalid signature for z: r)r"r�r�r�r	r�r�r�rQr�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               �����r r�z.SignatureTest.test_inspect_types.<locals>.doit�sz����Q��^�F��Q��^�F��F����?�?�3�'�� ���.�� ���.���%�%�f�-�#�-�-�f�5�E�#�-�-�f�5�E�#�5�#3�#3�#8�#8�#:�;�G�.3�.>�.>�.C�.C�.E�F�.E��r�!�u�.E�G�F��$�$�W�g�)H�6�)Q�%�S�/4�.>�.>�.E�.E�.G�H�.G��a�f�f�.G�F�H�.3�.>�.>�.E�.E�.G�H�.G��a�f�f�.G�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$��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_types�sL����$�$�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�r[r\r]r�r�rr)r r�r��s���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��d	d
lm}
m}t'j(�j+��ttfD]b}|s�|fd�}|f�fd�	}
|tur|nd	}|t,j.d<|j|
|||
|�
��t&t,j.d<�d|S)Nz.decTestr�c�2�|jt|z�Sr)r�	directory)r�r�s  r rzload_tests.<locals>.<lambda>s��$�.�.��Q��*Gr)�test_r��Pyr<rr)�DocTestSuite�IGNORE_EXCEPTION_DETAILc�@�|tjd<t|�y�Nr)rr-r7)�slfr~s  r r�zload_tests.<locals>.setUp-s��),����I�&��S�	r)c����ttjd<|jt|j��tj�j��yr)�orig_sys_decimalrr-r4�ORIGINAL_CONTEXTro)rr~�orig_contexts  �r rzload_tests.<locals>.tearDown0sC���)9����I�&����/��4�9�9�;�<� �+�+�L�,=�,=�,?�@r))r�r�optionflags)�
TODO_TESTS�
suiteClass�os�listdirrr	r
r+r<r�r�r5r��TestCase�addTest�loadTestsFromTestCase�doctestrrr
r�rorr-)r��tests�pattern�filename�head�tail�tester�prefixr~�
test_classrrr�rr
rs               @r �
load_testsrs�������!�!�#���J�J�y�)���X�%��)<�)<�S�)A���^�^�C�(�
��d��!�d�*�&<�� (�G����g��n�f�5��d�D�&�*��Q�x�$���*�������&�>�1�'��):�):�;�$�c�*�,�
�	�
�
�f�2�2�:�>�?�
+���A�'�2�2�4�9�9�;���a�4�C���"�
�#&�
A�69�A�X�1�1�K�%(�C�K�K�	�"��M�M�,�s�%�(�/:�<�
=�%5�C�K�K�	�"���Lr)c�p�tt�tt�t�tayt	d�ayr)r7r�r��ARITHrr(rr)r �setUpModuler!;s$����G���G��)�u�H�/B�9�/M�Hr)c�P�tr.tjttj��tjttj��tstjdt�ttjdurtd��y)Nz*C tests skipped: no module named _decimal.rzGInternal error: unbalanced number of changes to sys.modules['decimal'].)r�r4rror��warnings�warn�UserWarningr
rr-rrr)r �tearDownModuler&Asw���!�,�,�'��*�/�/�1�
2��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)r rr+r��mainr���arith�verbose�
todo_tests�debugs    r �testr1Qs+��
�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�rrrr#r+ror�r%r��test.supportrrrrrrr	r
rrr
�test.support.import_helperrrrr)r�r9r_r�r�rr
�
cfractionsr-�
pfractionsr�
skipUnless�requires_cdecimalr�r�rNr�r3r�r�r�r�r�r�r�r�ror4r(r�r�r�r�r�r�r0r�r�rr7�TESTDATADIRr�r*r��__file__�path�dirname�curdir�testdir�sepr�isdirr�r2�hasattr�EXTRA_FUNCTIONALITYrKr��skip_if_extra_functionalityr<r_rr�r�r�r0r2r4r�r�r�rrr(r0�requires_working_threadingr2rDrFrHrrr"rxrzr|r%r'r)rWrYr[r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r&rMr�rr!r&r r(rr+r1�optparse�OptionParserr��
add_option�
parse_args�optr�skipr0rr)r �<module>rMs����"�������
�I�I�)�)�;�)�(�
����<�<�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��V9�V9�p
��*�h�/�/�����:�x�0�0��hA�hA�T	��6��8I�8I����� 7��9J�9J��
%'�N*0�Z-��,�,�.�*(�*(�/�*(�Z��]�H�$5�$5�����m�X�%6�%6��pE�pE�d��]�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�'�'�>�0ZM��"�"�ZM�xSC�X�&�&�SC�j�v7��!�!�v7��v7�p��D�H�%�%�D���D�N*�XN�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)

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