Uname:Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64

403WebShell
403Webshell
Server IP : 3.111.61.48  /  Your IP : 216.73.216.67
Web Server : Apache
System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.2.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/lib/python3.10/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.10/test/__pycache__/test_decimal.cpython-310.pyc
o

�9j>G�@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZmZmZmZddlmZmZmZmZddlmZddlmZddlZddlZddlZejdkried�ed	d
gd�Zed	d
gd�Zddl Z!ed
d
gd�Z"eej#d	<ed
d
gd�Z$eej#d	<ee"ee$iZ%e!ej#d	<eer�e&e�'�j(�)��ndee&e�'�j(�)��iZ*eer�ej+ej,ej-ej.ej/ej0ej1ej2ej3g	ndeej+ej,ej-ej.ej/ej0ej1ej2ej3g	iZ4dd�Z5ej6Z6ej7Z7ej8Z8ej9Z9ej:Z:ej;Z;ej<Z<ej=Z=e6e7e8e9e:e;e<e=gZ>ee�re�'���ndee�'���iZ?dd�Z@dZAeBdk�r.ejCdZDneEZDejF�GeD��p9ejHZIeIejJeAejJZKejF�LeK�aMdZNeOed��rUdndZPe�QePd�ZRe�SePd�ZTGdd�dejU�ZVGdd�deV�ZWGdd�deV�ZXGdd �d ejU�ZYGd!d"�d"eY�ZZGd#d$�d$eY�Z[Gd%d&�d&ejU�Z\Gd'd(�d(e\�Z]Gd)d*�d*e\�Z^Gd+d,�d,ejU�Z_Gd-d.�d.e_�Z`Gd/d0�d0e_�ZaGd1d2�d2ejU�ZbGd3d4�d4eb�ZcGd5d6�d6eb�Zdd7d8�Zed9d:�ZfGd;d<�d<ejU�ZgGd=d>�d>eg�ZhGd?d@�d@eg�ZiGdAdB�dBejU�ZjGdCdD�dDej�ZkGdEdF�dFej�ZlGdGdH�dHejU�ZmGdIdJ�dJem�ZnGdKdL�dLem�ZoGdMdN�dNejU�ZpGdOdP�dPep�ZqGdQdR�dRep�ZrGdSdT�dTejU�ZsGdUdV�dVes�ZtGdWdX�dXes�ZuGdYdZ�dZejU�ZvGd[d\�d\ev�ZwGd]d^�d^ev�ZxGd_d`�d`ejU�ZyGdadb�dbey�ZzGdcdd�ddey�Z{Gdedf�dfejU�Z|Gdgdh�dhe|�Z}Gdidj�dje|�Z~Gdkdl�dlejU�ZGdmdn�dne�Z�Gdodp�dpe�Z�eTGdqdr�drejU��Z�Gdsdt�dtejU�Z�Gdudv�dve��Z�Gdwdx�dxe��Z�Gdydz�dzejU�Z�Gd{d|�d|ejU�Z�Gd}d~�d~ejU�Z�Gdd��d�ejU�Z�ee�Qed��Gd�d��d�ejU���Z�geZ�e[�e]�e^�e`�ea�ec�ed�eh�ei�ek�el�en�eo�eq�er�et�eu�ew�ex�ez�e{�e}�e~�e��e��e��e��e��e��e��e��eW�eX�Z�e�sse�d�dd��Z�ne���de��e���d�e��d�d�d��Z�eBdk�r�ddl�Z�e���d��Z�e�j�d�d�d�d�d��e�j�d�d�d�d�d��e����\Z�Z�e�j��r�e�ddd��dSe��r�e�dde�e�j�d��dSe�ddd��dSdS)�ag
These are the test cases for the Decimal module.

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

Cowlishaw's tests can be downloaded from:

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

This test module can be called from command line with one parameter (Arithmetic
or Behaviour) to test each part, or without parameter to test both parts. If
you're working through IDLE, you can import this test module and call test_main()
with the corresponding argument.
�N)�run_unittest�run_doctest�is_resource_enabled�requires_IEEE_754�requires_docstrings�requires_legacy_unicode_capi�check_sanitizer)�
TestFailed�run_with_locale�cpython_only�darwin_malloc_err_warning)�import_fresh_module)�warnings_helper�darwin�test_decimal�decimal�_decimal)�fresh)�blocked�	fractionscs,t||��|�t��fdd��D���dS)Nc3s*�|]}|�vr�|n�|VqdS�N���.0�s��d�expectedr�(/usr/lib/python3.10/test/test_decimal.py�	<genexpr>Ss�(z!assert_signals.<locals>.<genexpr>)�getattr�
assertTrue�all)�cls�context�attrrrrr�assert_signalsQs
"r&cCs2|sdS|jdtt�t|d�d�}|�|�dS)N�	r)�prec�rounding�traps)�Context�ROUND_HALF_EVEN�dict�fromkeys�Signals�
setcontext)�m�DefaultTestContextrrr�initjs
�r3�decimaltestdata�__main__F�
DecClampedTz.test requires build with -DEXTRA_FUNCTIONALITYztest requires regular buildc@speZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�IBMTestCasesz?Class which tests the Decimal class against the IBM test cases.c
Cs|j��|_|j��|_dg|_tgd��|_|jtkrL|j�d�|j�d�|j�d�|j�d�|j�d�|j�d�|j�d	�|j�d
�|j	|j
|j|j|j
d�|_idd
�dd�dd�dd�dd�dd�dd�dd�dd�dd�d d!�d"d#�d$d%�d&d'�d(d)�d*d+�d,d-�id.d/�d0d1�d2d3�d4d5�d6d7�d8d9�d:d;�d<d=�d>d?�d@dA�dBdC�dDdE�dFdG�dHdI�dJdK�dLdM�dNdO��dPdQdRdS��|_ttttttttdT�|_|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj|jj dU�|_!dV|_"dS)WN�#)�scbx164�scbx165�expx901�expx902�expx903�expx905�lnx901�lnx902�lnx903�lnx905�logx901�logx902�logx903�logx905�powx1183�powx1184�powx4001�powx4002�powx4003�powx4005�powx4008�powx4010�powx4012�powx4014�pwsx803�pwsx805�powx4302�powx4303�powx4342�powx4343�pwmx325�pwmx326)�	precisionr)�maxexponent�minexponent�clamp�and�logical_and�apply�_apply�class�number_class�
comparesig�compare_signal�comparetotal�
compare_total�
comparetotmag�compare_total_mag�copy�copy_decimal�copyabs�copy_abs�
copynegate�copy_negate�copysign�	copy_sign�	divideint�
divide_int�invert�logical_invert�iscanonical�is_canonical�isfinite�	is_finite�
isinfinite�is_infinite�isnan�is_nan�isnormal�	is_normal�isqnan�is_qnan�issigned�	is_signed�issnan�is_snan�issubnormal�is_subnormal�iszero�is_zero�maxmag�max_mag�minmag�min_mag�	nextminus�
next_minus�nextplus�	next_plus�
nexttoward�next_toward�or�
logical_or�reduce�	normalize�
remaindernear�remainder_near�samequantum�same_quantum�
squareroot�sqrt�toeng�
to_eng_string�
tointegral�to_integral_value�to_integral_exact�
to_sci_string�logical_xor)�tointegralx�tosci�xor)�ceiling�down�floor�	half_down�	half_even�half_up�up�05up)�clamped�conversion_syntax�division_by_zero�division_impossible�division_undefined�inexact�invalid_context�invalid_operation�overflow�rounded�	subnormal�	underflow)rvrxrzr|r~r�r�r�r�r�r�)#rr+r$�readcontext�ignore_list�set�skipped_test_ids�C�add�change_precision�change_rounding_method�change_max_exponent�change_min_exponent�change_clamp�
ChangeDict�NameAdapter�
ROUND_CEILING�
ROUND_DOWN�ROUND_FLOOR�ROUND_HALF_DOWNr,�
ROUND_HALF_UP�ROUND_UP�
ROUND_05UP�RoundingDict�Clamped�InvalidOperation�DivisionByZero�Inexact�Overflow�Rounded�	Subnormal�	Underflow�
ErrorNames�LogicalFunctions��selfrrr�setUp�s�
$���������	�
���
������������������� �!�"
�'�
�
zIBMTestCases.setUpcCsT|jtkr#|jjdkr#|j�d�|j�d�|j�d�|j�|�S|j�||�S)a2Work around the limitations of the 32-bit _decimal version. The
           guaranteed maximum values for prec, Emax etc. are 425000000,
           but higher values usually work, except for rare corner cases.
           In particular, all of the IBM tests pass with maximum values
           of 1070000000.�@�Ti���?i�9�)	rr��MAX_EMAXr��_unsafe_setprec�_unsafe_setemax�_unsafe_setemin�create_decimal�Decimal)r��vr$rrr�read_unlimitedszIBMTestCases.read_unlimitedcCs�trtj�t|dd��@}|D]4}|�dd��dd�}z|�|�}Wq|jjyB}z|�d|j	j
d|�WYd}~qd}~wwWd�dS1sNwYdS)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�	exceptionrrr�	eval_file%s&���"�zIBMTestCases.eval_filecCs�|�d�dkr,|dd�dkr,|�d�s,|�d�dd|�d�d�d�d��}n	|�d�d��}|jD]}|�|�dkrDdSq8|sIdSd|vrR|�|�S|�|�S)	Nz -> r��--z  --�->��:)�find�
startswith�split�stripr��eval_directive�
eval_equation)r�r�ignorerrrr�4s (��
�

zIBMTestCases.eval_linecCsjdd�|�d�D�\}}|dkr|j|}nzt|�}Wn	ty%Ynw|j�|dd��}||�dS)Ncss�|]	}|����VqdSr)r�lower�r�xrrrrGs�z.IBMTestCases.eval_directive.<locals>.<genexpr>r�r)cWsdSrr)�argsrrr�<lambda>Psz-IBMTestCases.eval_directive.<locals>.<lambda>)rr��int�
ValueErrorr��get)r�r�funct�valuerrrrFs�zIBMTestCases.eval_directivecs�ts
t��dkr
dS�j��z:|�d�}|d����}|d}tr*td|dd�|d��}|dd�}|d����}|d}|dd�}Wnt	t
tfyW�jj
�wd	d
�}	|�jvrcdS�j�||�}
|
dkrpdSt�j|
�}g}d}d}
�fd
d�|D��t�jD]}d�jj|<q��D]}d�jj|<q�t|�D]�\}}|�d�ddkr�d|
}
|
r�|d|}q�||}d}|	|�}|
dv�r"t�r�D]J}d�jj|<z
|�j�|��Wn(|y�Yn)t�j�y
}z��d|||f�WYd}~nd}~ww��d||f�d�jj|<qЈj�|�}n��|�j�}|�|�q�|	|�}t�r�|
dv�r�D]H}d�jj|<z||�Wn)|�yUYn)t�j�yt}z��d|||f�WYd}~nd}~ww��d||f�d�jj|<�q=�fdd�t�jD�}|D]F}d�jj|<z||�Wn-|�y�Y�q�t�j�y�}z��dt|�||f�WYd}~�q�d}~ww��d||f��q�|D]	}d�jj|<�q�t�r�td�j�zt||��}|
�jv�rttt |���}Wn't�j�y%}z��d||f�WYd}~n
d}~wtd|����!�}|j"t#d��j"t#d���$||d|d|���$|�d|dt|��dS)Ng�������?r�rzTest � )�endr�r�cSs@|�dd��dd�}|�dd��dd�}|�dd��dd�}|S)Nz''�SingleQuotez""�DoubleQuote�'r��")r�)�valrrr�	FixQuotesgsz-IBMTestCases.eval_equation.<locals>.FixQuotes�rescaler�csg|]	}�j|���qSr)r�rrr�rr�
<listcomp>wsz.IBMTestCases.eval_equation.<locals>.<listcomp>r)r�r�z Raised %s in %s when %s disabledzDid not raise %s in %scsg|]}|�vr|�qSrr�r�e)�theirexceptionsrrr��zRaised %s in %s; expected %sr�zRaised %s in %szERROR:��keyzIncorrect answer for z -- got zIncorrect flags set in )%�TEST_ALL�randomr$�clear_flagsrr�DEBUG�printr�	TypeError�AttributeError�
IndexErrorrr�r�r�r
r r/r*�	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��irr��errorr�ordered_errors�result�myexceptionsr)r�rrrSs�

�

�����������
��zIBMTestCases.eval_equationcs�fdd�t�jD�S)Ncsg|]
}�jj|r|�qSr)r$�flagsrr�rrr�sz.IBMTestCases.getexceptions.<locals>.<listcomp>)r/rr�rr�rr0�szIBMTestCases.getexceptionscC�2|jtkr|jjdkr|j�|�dS||j_dS�Nr�)rr��MAX_PRECr$r�r()r�r(rrrr���zIBMTestCases.change_precisioncC�||j_dSr)r$r))r�r)rrrr���z#IBMTestCases.change_rounding_methodcCrDrE)rr�rFr$r��Emin�r��exprrrr��rGz IBMTestCases.change_min_exponentcCrDrE)rr�rFr$r��EmaxrKrrrr��rGz IBMTestCases.change_max_exponentcCrHr)r$r\)r�r\rrrr��rIzIBMTestCases.change_clampN)r��
__module__�__qualname__�__doc__r�r�r�r�rrr0r�r�r�r�r�rrrrr7�s 
r7c@�eZdZeZdS)�
CIBMTestCasesN�r�rNrOr�rrrrrrR��rRc@rQ)�PyIBMTestCasesN�r�rNrO�PrrrrrrU�rTrUc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zee	e
jed
�dd����Z
d
d�Zdd�Zdd�Zdd�Zedd��Zdd�Zdd�Zdd�ZdS)�ExplicitConstructionTestz6Unit tests for Explicit Construction cases of Decimal.cCs|jj}|�|�|d��dS)N�0�rr�r3�r�r�rrr�test_explicit_empty��z,ExplicitConstructionTest.test_explicit_emptycCs|jj}|�t|d�dSr)rr��assertRaisesr%r[rrr�test_explicit_from_None�sz0ExplicitConstructionTest.test_explicit_from_NonecCs�|jj}|d�}|�t|�d�|d�}|�t|�d�|d�}|�t|�d�|d�}|�t|�d�tdd	�D]%}d
D] }tdd�D]}|d
||}||�}|�t|�t|��qDq=q9dS)N�-�45�{e��	500000123�����-45rrY� ����r�����r�)rr�r3r.�range)r�r�r�n�signrr>rrr�test_explicit_from_int�s$���z/ExplicitConstructionTest.test_explicit_from_intcCs�|jj}|jj}|jj}|�t|d��d�|�t|d��d�|�t|d��d�|�t|d��d�|�t|d��d�|�t|d��d	�|�t|d
��d�|�t|d��d
�|�t|d��d�|�t|d��d�dD]}dD]}|�t||d|��d�qvqr|��H}d|j|<|�||d�|�t|ddd�|�||d�|�||d�|�||d�|�||d�|�||d�|�||d�Wd�dS1s�wYdS)Nr��NaNra�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 ruu  z123z1_2_3)	rr�r��localcontextr3r.r*r^r%)r�r�r�ry�lead�trail�crrr�test_explicit_from_strings<��
"�z2ExplicitConstructionTest.test_explicit_from_string��categorycCsRddl}|jj}|j��}|�d�}|�t||��d�|�t|�|��d�dS)Nr�9.999999)�	_testcapirr�r+�unicode_legacy_stringr3r.r�)r�r�r�r$rrrr�test_from_legacy_stringsOs

z1ExplicitConstructionTest.test_from_legacy_stringscCs6|jj}|d�}|�t|�d�|d�}|�t|�d�|d�}|�t|�d�|d�}|�t|�d�|d	�}|�t|�d
�|�t|d�|�t|d�|�t|d
�|�t||d�ddf�|�t|d�|�t|d�|�t|d�|�t|d�|�t|d�|�t|d�|�t|d�|�t|d�dS)N�r�rrrY�r�)�rjrre�r�r�rj�r����rp�r��	r�r�r�r'r�r�rjr�r�����-4.34913534E-17)rr�F�Infinity)r��r�r�r�r'r�)�r�r�)�r�r�r�r�r�)r�r�zwrong!)r�r�r�)r�r��1)r�rvr�)r�)r�r�r�Nr�r�)r�)r����r�r'r�r�)r�)r��
r�r'r�r�)r�)r�r�r��ar�r�)rr�r3r.r^r�r�r�rrrr�test_explicit_from_tuples[s.z2ExplicitConstructionTest.test_explicit_from_tuplescCs�|jj}|ddgdg�}|�t|�d�|dgd�dg�}|�t|�d�|gd��}|�t|�d�|dgd�df�}|�t|�d�dS)NrrYr�r�r�r�r��rr�r3r.r�rrr�test_explicit_from_list�sz0ExplicitConstructionTest.test_explicit_from_listcCs\|jj}|�t|d��d�|�t|d��d�|�|d�|d��|�|d�|d��dS)NrFr�T)rr��assertIs�boolr3r[rrr�test_explicit_from_bool�s
z0ExplicitConstructionTest.test_explicit_from_boolcCs�|jj}|d�}||�}|�t|�d�|d�}||�}|�t|�d�|d�}||�}|�t|�d�|d�}||�}|�t|�d�dS)	Nr`rarbrcrdrerrYr��r�r�rrrrr�test_explicit_from_Decimal�sz3ExplicitConstructionTest.test_explicit_from_DecimalcCs2|jj}|d�}|�t|�|�|�t|�d�|�|td�����|�|td�����|�|td�����|�t|td���t|d���|�t|td���t|d���|�t|td���t|d���|�t|td	���t|d
���t	d�D]}t
�d�t
�
�d
d}|�|t||���q}dS)N皙�����?�90.1000000000000000055511151231257827021181583404541015625�nan�inf�-infror��	-Infinity�-0.0�-0���{�G�z�?�@��?)rr�r3r-r.r!�floatr�rzrkr!�expovariate)r�r��rr>rrrr�test_explicit_from_float�s2
�
�
�
�
��z1ExplicitConstructionTest.test_explicit_from_floatcCs�|jj}|jj}|jj}t�|j���}d|_|�}|�t|�d�|�	�}|�t|�d�|�
t|j	d�|�	d�}|�||�|�|�	d�|�	d��|d�}|�t|�d�|�	d�}|�t|�d�|�t|�	d��d	�|d
�}|�t|�d�|�	d
�}|�t|�d�|d
�}||�}|�t|�d�|�	|�}|�t|�d�d|_d|j
|<dD]}|�	|�}|�t||��|�t|�|�q�d|_d|j
|<|�
||j	d�d|_|�t|�	d��d�|�t|�	d��d�|�t|�	d��d�|�t|�	d��d�|�
||j	d�|�
t|j	d�|�
t|j	dd�|�
||j	d�|�
||j	d�d|_|�
||j	d �|�
||j	|d ��d!|j
|<|�t|�	d ��d	�|�|j|�d!|j|<|�t|�	|d ���d	�|�|j|�dS)"Nr�rY��in�z457E+2�456789z4.57E+5z3.14
ror�r�z	-4.35E-17rbrcz5.00E+8�T)	l����l����l����i�r��l��������z0E-017z0E-17ra�-Infr��NaN123rv)r�rvr�rw�5678z 1234�12_34�NaN12345F)rr�r�r�ri�
getcontextr(r3r.r�r^r%�assertIsInstancer*r!�
isinstancerrrC)r�r�r�r��ncr�prevdecr�rrr�$test_explicit_context_create_decimal�sv
�






�

z=ExplicitConstructionTest.test_explicit_context_create_decimalcCs\|jj}|j��}|�d�}|�t|�|�|�t|�d�|�|�td���	��|�|�td���
��|�|�td���
��|�t|�td���t|�d���|�t|�td���t|�d���|�t|�td���t|�d���|�t|�td	���t|�d
���d|_td�D]}t
�d
�t
�
�dd}|�|t|�|���q�dS)Nr�z0.1000000000000000055511151231r�r�r�ror�r�r�r��dr�r�r�r�)rr�r+r�r3r-r.r!r�r�rzr(rkr!r�)r�r�r�r�r>rrrr�'test_explicit_context_create_from_float%s2

�����z@ExplicitConstructionTest.test_explicit_context_create_from_floatcCs>|jj}dddd�}|��D]\}}|�t||��|�qdS)Nr�z	0.0000372z-NaN2400)u1u٠.٠٣٧٢e-٣u-nan౨౪౦౦)rr��itemsr3r.)r�r��test_values�inputrrrr�test_unicode_digits=s��z,ExplicitConstructionTest.test_unicode_digitsN)r�rNrOrPr\r_rnr}rrr�ignore_warnings�DeprecationWarningr�r�r�r�r�rr�r�r�r�rrrrrX�s&8
	+
YrXc@rQ)�CExplicitConstructionTestNrSrrrrr�HrTr�c@rQ)�PyExplicitConstructionTestNrVrrrrr�JrTr�c@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�ImplicitConstructionTestz6Unit tests for Implicit Construction cases of Decimal.cC�|jj}|�ttdt��dS)NzDecimal(5) + None�rr�r^r%r/�localsr[rrr�test_implicit_from_NonePr]z0ImplicitConstructionTest.test_implicit_from_NonecCs<|jj}|�t|d�d�d�|�|d�d|d��dS)Nrjr`�50l2}rr�r[rrr�test_implicit_from_intTsz/ImplicitConstructionTest.test_implicit_from_intcCr�)NzDecimal(5) + "3"r�r[rrr�test_implicit_from_string\r]z2ImplicitConstructionTest.test_implicit_from_stringcCr�)NzDecimal(5) + 2.2r�r[rrr�test_implicit_from_float`r]z1ImplicitConstructionTest.test_implicit_from_floatcCs(|jj}|�|d�|d�|d��dS)Nrjr`�2rZr[rrr�test_implicit_from_Decimalds z3ImplicitConstructionTest.test_implicit_from_Decimalcs*|jj}Gdd�d�}|�t|�|d��d�|�t|d�|��d�|�td�d�|�td�d	�|�td
�d�|�td�d
�|�td�d�|�td�d�gd�}|D]9\}��t|��fdd��t|��fdd��|�td|d�d�d�|�td|d�d�d�qYdS)Nc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)z,ImplicitConstructionTest.test_rop.<locals>.EcS�dt|�S)Nzdivmod �r.�r��otherrrr�
__divmod__mrIz7ImplicitConstructionTest.test_rop.<locals>.E.__divmod__cSst|�dS)Nz rdivmodr�r�rrr�__rdivmod__orIz8ImplicitConstructionTest.test_rop.<locals>.E.__rdivmod__cSr�)Nzlt r�r�rrr�__lt__qrIz3ImplicitConstructionTest.test_rop.<locals>.E.__lt__cSr�)Nzgt r�r�rrr�__gt__srIz3ImplicitConstructionTest.test_rop.<locals>.E.__gt__cSr�)Nzle r�r�rrr�__le__urIz3ImplicitConstructionTest.test_rop.<locals>.E.__le__cSr�)Nzge r�r�rrr�__ge__wrIz3ImplicitConstructionTest.test_rop.<locals>.E.__ge__cSr�)Nzeq r�r�rrr�__eq__yrIz3ImplicitConstructionTest.test_rop.<locals>.E.__eq__cSr�)Nzne r�r�rrr�__ne__{rIz3ImplicitConstructionTest.test_rop.<locals>.E.__ne__N)r�rNrOr�r�r�r�r�r�r�r�rrrr�Elsr�r�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__csd�t|�S�Nr.r�r�)�loprrr
��z3ImplicitConstructionTest.test_rop.<locals>.<lambda>cst|��dSr�r�r�)�roprrr
�r�zE()zDecimal(10)r.�10)rr�r3�divmodr/�setattr)r�r�r��oplist�symr)r�r�r�test_rophs*

�
��z!ImplicitConstructionTest.test_ropN)
r�rNrOrPr�r�r�r�r�rrrrrr�Msr�c@rQ)�CImplicitConstructionTestNrSrrrrr�rTrc@rQ)�PyImplicitConstructionTestNrVrrrrr�rTrc@s:eZdZdZdd�Zdd�Zedd�dd	��Zd
d�ZdS)
�
FormatTestz#Unit tests for the format function.cCsN|jj}gd�}|D]\}}}|�t||�|�|�q
|�t|d�jd�dS)N)�)r�0E-15z0e-15)rz2.3E-15z2.3e-15)rz2.30E+2z2.30e+2)rz2.30000E-15z2.30000e-15)rz1.23456789123456789e40z1.23456789123456789e+40)r�1.5z1.5e+0)rz0.15z1.5e-1)rz0.015z1.5e-2)rz0.0000000000015z1.5e-12)rz15.0z1.50e+1)r�-15z-1.5e+1)rrYz0e+0)r�0E1�0e+1)r�0.0z0e-1)r�0.00�0e-2)�.6erz0.000000e-9)rrYz0.000000e+6)rr�z9.999999e+0)rz	9.9999999z1.000000e+1)rz-1.23e5z-1.230000e+5)rz
1.23456789e-3z1.234568e-3)r�rYrY)r�rr)r��0E-2r)r�z0.00E-8z0.0000000000)r�r	rY)r�z3.2E1�32)r�z3.2E2�320)r�z3.20E2r)r�z3.200E2z320.0)r�z3.2E-6z	0.0000032)�.6fr�0.000000)rr	r)rrYr)�.0frYrY)rr
rY)r�
3.14159265�3)z.1fr�3.1)z.4fr�3.1416)rr�3.141593)z.7fr�	3.1415926)z.8frr)z.9frz3.141592650)�grYrY)rrr)rr	r
)�Gr	z0E+1)rz0E-5z0.00000)rz0E-6r)rz0E-7z0e-7)rz-0E2z-0e+2)�.0grr)z.0nrr)z.1grr)z.2grr)z.5grr)z.7grr)z.8grr)z.9grr)z.10grr)r�r	�0%)r��0E0r)r�z0E-1r)r�rr)r�z0E-3z0.0%)r�z0E-4z0.00%)�.3%rY�0.000%)r �0E10r!)r z0E-10r!)r z2.34z234.000%)r z1.234567z123.457%)�.0%�1.23z123%)rroro)r��-NaN123r%)z+g�NaN456z+NaN456)z.3e�Infr�)z.16fr�r�)r�-sNaNr()r��1.00r))�6�123�   123)z<6r+z123   )z>6r+r,)z^6r+z 123  )z=+6r+z+  123)�#<10roz
NaN#######)r-z-4.3z
-4.3######)z#<+10�0.0130z
+0.0130###)z#< 10r.z
 0.0130###)z@>10r�z
@-Infinity)z#>5r�r�)z?^5r+z?123?)z%^6r+z%123%%)z ^6�-45.6z-45.6 )z/=10r/z
-/////45.6)z/=+10�45.6z
+/////45.6)z/= 10r0z
 /////45.6)z=10r�z
-Infinity)z^16r�z-Infinity)z>10�1.2345z
1.2345)z<10r1z
1.2345)�,�1234567z	1,234,567)r2�123456�123,456)r2�12345�12,345)r2rwz1,234)r2r+r+)r2�12r8)r2r�r�)r2rYrY)r2z-1234567z
-1,234,567)r2�-123456�-123,456)z7,r4r5)z8,r4� 123,456)�08,r4z	0,123,456)z+08,r4z+123,456)z 08,r4r;)r<r9r:)z+09,r4z
+0,123,456)z07,�1234.56�1,234.56)r<r=r>)z09,r=z	01,234.56)z010,r=z
001,234.56)z011,r=�0,001,234.56)z012,r=r?)z08,.1fz1234.5z01,234.5)r2�
1.23456789r@)z,%z
123.456789z12,345.6789%)z,er4z
1.23456e+5)z,Er4z
1.23456E+5)za=-7.0z0.12345zaaaa0.1)z	<^+15.20%r�z<<+Infinity%<<<)z>,%�sNaN1234567zsNaN1234567%)z=10.10%r�z
   NaN123%r�s-020)rr�r3�formatr^r%�
__format__)r�r�r��fmtrrArrr�test_formatting�szFormatTest.test_formattingc	s8�jj�zddlm}Wnty��d�Ynw�fdd�}dA��fdd�	}d	|gd
��dd�}d||g�d
d�}d|gd
��dd�}d|ddd|g�dd�}d�d�|gd
��d�d�d�}��|�d�|�d���|�d�|�d���|�d�|�d���|�d�|�d���|d|�d���|d|�d���|d|�d���|d|�d���|d|d �d!���|d|d �d"���|d|d �d"���|d|d �d#���|d$|d%�d&���|d$|d'�d&���|d$|d(�d)���|d$|d*�d+���|d,|d(�d-���|d,|d*�d-���|d,|d.�d/���|d,|d0�d1���|d,|d2�d1���|d,|d3�d4���|d5|d*�d6���|d5|d.�d6���|d5|d0�d6���|d5|d2�d7���|d5|d3�d8���|d5|d9�d8���|d5|d:�d;���|d5|d<�d=���|�d>�|d?�d@�dS)BNr��CHAR_MAX�locale.CHAR_MAX not availablecs"�jtkrd�dd�|D��S|S)Nr�cS�g|]}t|��qSr��chrrrrrrI�zCFormatTest.test_n_format.<locals>.make_grouping.<locals>.<listcomp>)rr��join��lstr�rr�
make_groupingHs"z/FormatTest.test_n_format.<locals>.make_groupingrlcs,�jtkr
�|��||�S�|�j||d�S)N)�_localeconv)rr�rC�r�overriderD�r�r�rr�get_fmtKs
z)FormatTest.test_n_format.<locals>.get_fmt�.�r�r�rr2��
decimal_point�grouping�
thousands_sepr�r�&r�r�r�r�s¿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��03nrw�04n�05n�01234�06n�001234�90r7�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�Nrl)rr��localerG�ImportError�skipTest�decoder3)	r�rGrPrU�en_US�fr_FR�ru_RU�crazy�dotsep_widerrTr�
test_n_format@sz�
��
��
��zFormatTest.test_n_format�LC_ALL�ps_AFcCsn|jj}t��d}t��d}|dkr|�d�|d��|dkr*|�d�|d��|�t|d�d�d	�dS)
NrYr[u٫z5inappropriate decimal point separator ({!a} not {!a})u٬z1inappropriate thousands separator ({!a} not {!a})z
100000000.123rlu100٬000٬000٫123)rr�ro�
localeconvrqrBr3)r�r�rYr[rrr�&test_wide_char_separator_decimal_point�s���z1FormatTest.test_wide_char_separator_decimal_pointcCsPGdd�d|jj�}|�d�}|�|jj|j�|�d�}|�|jj|j�dS)Nc@�eZdZdd�ZdS)z;FormatTest.test_decimal_from_float_argument_type.<locals>.AcSst|�|_dSr)r-�a_type)r�r�rrr�__init__�szDFormatTest.test_decimal_from_float_argument_type.<locals>.A.__init__N�r�rNrOrrrrr�A��r�g@E@�*)rr��
from_floatr3r~)r�r�r�rrr�%test_decimal_from_float_argument_type�s


z0FormatTest.test_decimal_from_float_argument_typeN)	r�rNrOrPrErxr
r|r�rrrrr�s Y
rc@rQ)�CFormatTestNrSrrrrr��rTr�c@rQ)�PyFormatTestNrVrrrrr��rTr�c@sheZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�ZdS)�ArithmeticOperatorsTestz:Unit tests for all arithmetic operators, binary and unary.cCs�|jj}|d�}|d�}|�|||d��|�|||d��|d}|�||d��|�t|�t|��d|}|�||d��|�t|�t|��||7}|�||d��|d7}|�||d��dS)N�-11.1�22.2z11.1rjz-6.1�16.1�rr�r3r-�r�r��d1�d2r|rrr�
test_addition��z%ArithmeticOperatorsTest.test_additioncCs�|jj}|d�}|d�}|�|||d��|�|||d��|d}|�||d��|�t|�t|��d|}|�||d��|�t|�t|��||8}|�||d��|d8}|�||d��dS)	Nr�r�z-33.3z33.3rjz-16.1r�z-38.3r�r�rrr�test_subtraction�r�z(ArithmeticOperatorsTest.test_subtractioncCs�|jj}|d�}|d�}|�|||d��|�|||d��|d}|�||d��|�t|�t|��d|}|�||d��|�t|�t|��||9}|�||d��|d9}|�||d��dS)N�-5rrrjz-25z-75r�r�rrr�test_multiplication�r�z+ArithmeticOperatorsTest.test_multiplicationcCs�|jj}|d�}|d�}|�|||d��|�|||d��|d}|�||d��|�t|�t|��d|}|�||d��|�t|�t|��||}|�||d��|d}|�||d��dS)	Nr��2�-2.5z-0.4r�z-1.25z-0.8z-0.625r�r�rrr�
test_divisionr�z%ArithmeticOperatorsTest.test_divisioncCs�|jj}|d�}|d�}|�|||d��|�|||d��|d}|�||d��|�t|�t|��d|}|�||d��|�t|�t|��||}|�||d��|d}|�||d��dS)N�5r�rYr�r��r�r�r�rrr�test_floor_division,r�z+ArithmeticOperatorsTest.test_floor_divisioncCs�|jj}|d�}|d�}|�|||d��|�|||d��|d}|�||d��|�t|�t|��d|}|�||d��|�t|�t|��||C}|�||d��|dC}|�||d	��dS)
Nr�r��25rr��625r��16807�390625r�r�rrr�
test_poweringHr�z%ArithmeticOperatorsTest.test_poweringcCs�|jj}|d�}|d�}|�|||d��|�|||d��|d}|�||d��|�t|�t|��d|}|�||d��|�t|�t|��||;}|�||d��|d;}|�||d��dS�Nr�r�r�r�r�r�r�rrr�test_moduledr�z#ArithmeticOperatorsTest.test_modulecCs|jj}|d�}|d�}t||�\}}|�||d��|�||d��|�t|�t|��|�t|�t|��t|d�\}}|�||d��|�||d��|�t|�t|��|�t|�t|��td|�\}}|�||d��|�||d��|�t|�t|��|�t|�t|��dSr�)rr�r�r3r-)r�r�r�r��p�qrrr�test_floor_div_module�s$z-ArithmeticOperatorsTest.test_floor_div_modulecCsT|jj}|�|d�
|d��|�|d�|d��|�t|d��t|d���dS)Nr`rd)rr�r3�absr[rrr�test_unary_operators�s z,ArithmeticOperatorsTest.test_unary_operatorscCs�|jj}|jj}|jj}|d�}|d�}|d�}|d�}||f||f||f||f||ff}||f||f||f||f||f||f||ff}	tjtjtjtjf}
tj	tj
f}||	D](\}}
|
|D]}|||
�}|tj
urndnd}|�||d�||j
||
|��q`qX|��k}d|j|<|D]&\}}
|D]}|||
�}|tj
ur�dnd}|�||d�||j
||
|��q�q�|	D]\}}
|D]}|�|tj	||
�|�|tj
||
�q�q�||	D]\}}
|
D]
}|�||||
�q�q�Wd�dS1s�wYdS)	Nro�sNaNr'r�TFz8expected {0!r} for operator.{1}({2!r}, {3!r}); got {4!r}r�)rr�r�ry�operator�lt�le�gt�ge�eq�ner�rBr�r*r^)r�r�r�ryrlrr>r��
qnan_pairs�
snan_pairs�	order_ops�equality_opsrrx�op�gotr�ctxrrr�test_nan_comparisons�s\".
���	

���	���"�z,ArithmeticOperatorsTest.test_nan_comparisonscCsH|jj}|d��|d��}|�|d��d�|�|�t|d�jd�dS)Nr�r��-2)rr�rpr3r^r%r�rrr�test_copy_sign�sz&ArithmeticOperatorsTest.test_copy_signN)r�rNrOrPr�r�r�r�r�r�r�r�r�r�r�rrrrr��s7r�c@rQ)�CArithmeticOperatorsTestNrSrrrrr��rTr�c@rQ)�PyArithmeticOperatorsTestNrVrrrrr��rTr�c	Cs�|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|d�}	|d�}
|	|
}|j	�
�|j��|	|
}|��a}
|�
|
j|�|�||
j|	d�|�
|
j|�|��,}|�
|j|�|�
|j|�|�||j|	|d��|�
|j|�~Wd�n1s�wY|�|
j|�~
Wd�n1s�wY|�||d��|�||d��|�}|�
|j|�||||fD]
}|�|j|�q�dS)Nr�r�rr��0.333333333333333333333333)rr�r�r�r�r�r�r�ry�finish1r��synchro�waitr!rCr^�divide�compare�assertFalser3)r#r�r�r�r�r�r�r�ryr��d3�test1�test2�c2�c3�c1�sigrrr�thfunc1�sF

��
�r�c	Cs�|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|d�}	|d�}
|	|
}|�}d|_	|	|
}
|��q}|�
|j|�|�||j
|d�d�|�
|j|�||��1}|�
|j|�|�|j|�d|j|<|�||j|d�d�|�
|j|�~Wd�n1s�wY|�|j|�|�|j|�~Wd�n1s�wY|j��|j��|�||d��|�|
|d	��|�|j|�|�
|j|�||||fD]
}|�|j|�q�dS)
Nr�r���1e425000000��Tz1e-425000000r�z0.333333333333333333)rr�r�r�r�r�r�r�ryr(r!rCr^�multiplyr�r*r�r�r��finish2r3)r#r�r�r�r�r�r�r�ryr�r�r��thiscontextr�r�r�r�rrr�thfunc2sN

��

�r�c@�eZdZdZdd�ZdS)�
ThreadingTestz0Unit tests for thread local contexts in Decimal.cCs�|jj}|jtkr|jjs|�d�|j}|j}|j}d|_d|_d|_t�	�|_
t�	�|_t�	�|_tj
t|fd�}tj
t|fd�}|��|��|j��|j��t|jD]
}|�|j|�qZ|��|��||_||_||_dS)Nzcompiled without threading�r����)�targetr	)r�DefaultContextr��HAVE_THREADSrqr(rMrJ�	threading�Eventr�r�r��Threadr�r��startr�r/r�rCrM)r�r��	save_prec�	save_emax�	save_emin�th1�th2r�rrr�test_threading@s2






zThreadingTest.test_threadingN)r�rNrOrPr�rrrrr�:sr�c@rQ)�CThreadingTestNrSrrrrr�grTr�c@rQ)�PyThreadingTestNrVrrrrr�jrTr�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*S)+�
UsabilityTestz*Unit tests for Usability cases of Decimal.cCs|jj}|d�}|d�}|d�}|�||�|�||�|�||�|�||�|�||�|�||�|�||�|�||�|�|d�|�d|�|�|d�|�|d�|�|d�|�|t��|�|t�t	t
|td���}|dd�}t�
|�|��|�||�dS)Nz23.42ra�r`rrg�����Y@@r�)rr��
assertGreater�assertGreaterEqual�
assertLess�assertLessEqualr3�assertNotEqual�object�list�maprkr!�shuffler1)r�r��da�db�dcr��brrr�test_comparison_operatorsps0
z'UsabilityTest.test_comparison_operatorscCs�|jj}|d�}|d�}|�|d�|�|d�|�|d�|�|d�|�|d�|�|d�|�d|�|�d|�|�d|�|�d|�|�d|�|�d|�|�d|d��dS)N�0.25�3.0�@��?g�?r��0.1)rr�r�r�r�r�r�r3�r�r�r�r�rrr�test_decimal_float_comparison�s z+UsabilityTest.test_decimal_float_comparisoncCs�|jj}|d�}|d�}|�|d�|�d|�|�|d�|�d|�|�d|�|�|d�|�|d�|�d|�|�|�d�t�|�|�d�t�|�|�d�t�|�|�d�t�dS)Nr�r�y�?y�?y@y@�?)	rr�r�r3r�r��NotImplementedr�r�r�rrr�test_decimal_complex_comparison�sz-UsabilityTest.test_decimal_complex_comparisonc
Cs�|jj}t|jj}|jj}|jj}|jj}trtjnd}tr"tj	nd}tr)tj
nd}|||d�}	||	���||	_|�|d�|dd��|�|dd�|d��|�|dd�|d	t
|���|�|d
t
|��|dd��|�|dd�|d	t
|���|�|d
t
|��|dd��|�|d�|dd
��|�|dd
�|d��d|	_|�|d�d|dd��|�|dd�|d�d�|�|dd�|dt
|���|�|dt
|��|dd��|�|d�|dd��|�|d�|dd��|�|d�|dd��|�|d�|dd��|�||d�j|dd��|�t|dd��|d���|�|d�|dd��|�|dd�|d��Wd�dS1�sFwYdS)N�ɚ;�6e�ilʈ�rMrJrr�l	��Z��mH;5�Brh�1ez-1el��!�0QYr�r�i,r�i�6l�c(	�9er�l�g�]�{l�����g�]r�r�i����)rr�r�Fractionr+ryr�r�r��MIN_EMIN�	MIN_ETINYr(r�r.r3r�r�r�r�r^r�r�r�r�)
r��Dr�r+ryr��emax�emin�etinyr|rrr� test_decimal_fraction_comparison�sB$�z.UsabilityTest.test_decimal_fraction_comparisoncCsP|jj}|d�}t�|�}|�t|�t|��t�|�}|�t|�t|��dS)Nz43.24)rr�rir3r6�deepcopy)r�r�rr|r�rrr�test_copy_and_deepcopy_methods�s

z,UsabilityTest.test_copy_and_deepcopy_methodscs��jj��jj}�fdd�}|�d��|�d��|�d��|�d��|�d���fdd	�d
D�}|��d��d��d
��d��d��d��d��d��d��d��d��d��d��d��d��d�g�|D]}��||�tt|���qlgd�}|D]}t|�}�|�}��||�t|��q�|��A}	�d�}
d|	_||
�}d|	_||
�}d|	_||
�}
��||���||
�d |	_d!d"}
��|�|
��||
��Wd�dS1s�wYdS)#Ncs t|�}|��}��||�|Sr)�hash�__hash__r3)rr�r�r�rr�hashit�sz.UsabilityTest.test_hash_method.<locals>.hashitr�r�r��nan123�-NaNcs:g|]}tdd�D]}dD]}�|d||��q
q	qS)���r�rgr�)rk)rr1rlrm�r�rrrs���z2UsabilityTest.test_hash_method.<locals>.<listcomp>)r������rf�!�=�>�?�@�A�B�-1r�rz-0.000r"z-0E12�10.0z	-23.00000�1230E100z
-4.5678E50l��z	1.634E100z
90.697E100z
188.83E100z
1652.9E100�	56531E100)r�r�rz-.0e1z34.0�2.5z
112390.625z	-0.515625z123456789.1�r�r�'iLi�)	rr�ry�extendr3r
rr�r()r�ryrr�r�test_stringsrr�rr|r�h1�h2�h3rrTr�test_hash_method�sd
��"�zUsabilityTest.test_hash_methodcCsz|jj}|�tt|d��|d�}|�t|�t�|��Gdd�d�}Gdd�d||�}|d�}|�t|�t�|��dS)Nr�roc@r})z-UsabilityTest.test_hash_method_nan.<locals>.HcS�dS)Nr�rr�rrrrB�z6UsabilityTest.test_hash_method_nan.<locals>.H.__hash__N)r�rNrOrrrrr�HAr�r0c@seZdZdS)z-UsabilityTest.test_hash_method_nan.<locals>.DN)r�rNrOrrrrrDsr)rr�r^r%r
r3r�r)r�r�rr0rrrr�test_hash_method_nan<sz"UsabilityTest.test_hash_method_nancCs�|jj}|d�}|d�}d}d}|�t||�|�|�t||�|�|�t||�|�|�t||�|�|�t||�|�|�t||�|�|�t||�|�|�t||�|�dS)N�15.32z28.5rr�)rr�r��min�max)r�r�r�r��l1�l2rrr�test_min_and_max_methodsIsz&UsabilityTest.test_min_and_max_methodscCs(|jj}|�|d��|�|d��dS)Nrz0.372)rr�r�r!r[rrr�test_as_nonzero]szUsabilityTest.test_as_nonzerocCs4|jj}|d�}|�t|�d�|�t|�d�dS)Nr2zDecimal('15.32'))rr�r3r.r2r�rrr�test_tostring_methodsesz#UsabilityTest.test_tostring_methodsc
Cs4|jj}|d�}|d�}|�t|�d�|�t|�d�|�t|�d�|�t|�d�gd�}|D]\}}|�t�||��|�q2|�ttj|d��|�ttj|d��|�ttj|d	��|�t	tj|d
��|�t	tj|d��gd�}|D]\}}|�t�
||��|�qz|�ttj
|d��|�ttj
|d��|�ttj
|d	��|�t	tj
|d
��|�t	tj
|d��gd
�}|D]\}}|�t||��|�q�|�tt|d��|�tt|d��|�tt|d	��|�t	t|d
��|�t	t|d��gd�}|D]\}}}	|�tt||�|��|	��qdS)N�66r2r rg�p=
ף.@)	�z123.00r��3.2r�)�3.54r�)�3.899r�)�-2.3r��z-11.0i�����rr�z-0E3r)�89891211712379812736.1l�{�#'s�{Mrr�r�r'r�)	r;)r=r��r>r��r?r��r@r�rArBrC)rDl�{�#'s�{M)r;r<rErFrGrArBrC)z-3.5���)r�r�)rlr�)�-0.5r)�0.5r)rr�)r%r�)z3.5r�))�123.456rHz0E+4)rKr�z0E+3)rKr�z1E+2)rKrhz1.2E+2)rKrr+)rKr�z123.5)rKr��123.46)rKr�rK)rKr�z123.4560)z123.455r�rL)z123.445r�z123.44)r'r�ro)r�i��ro)�sNaN314r��NaN314)
rr�r3rr��mathr�r^r�
OverflowError�ceil�roundr.)
r�r�r�r��
test_pairsrr>�test_triplesrlr�rrr�test_tonum_methodsmsF�z UsabilityTest.test_tonum_methodscCsX|jj}dD]#}t||��}|�t�|��t�d|�}|�||�d�r&dnd�qdS)N)r��nan1234�-nanz-nan2468r�r�g�)	rr�r�r!rOr{ror3r)r�r�rr�rmrrr�test_nan_to_float�s�zUsabilityTest.test_nan_to_floatcCs,|jj}dD]
}||�}|�tt|�qdS)N)�snanz-snan�snan1357z	-snan1234)rr�r^rr�)r�r�rrrrr�test_snan_to_float�s
�z UsabilityTest.test_snan_to_floatcCs||jj}|d�}|�|tt|���|d�}|�|tt|���|d�}|�|tt|���|d�}|�|tt|���dS)Nr�r�r�r�)rr�r3r/r2r�rrr�test_eval_round_trip�sz"UsabilityTest.test_eval_round_tripcCsD|jj}|d�}|�|��d�|d�}|�|��d�|d�}|�|��d�|d�}|�|��d�|d	�}|�|��d
�|d�}|�|��d�|d
�}|�|��d�|d�}|�|��d�|d�}|�|��d�|d�}|�|��d�|d�}|�|��d�|d�}|�|��d�|d�}|�|��d�dS)Nrr�rdr�r�r�r�)rr�r�)r�rrr�rrjr�r�r�)r�r�rrjr�r�r�)r��rrr�%)r�r�r`)r�rr`)rr]rl)rr^rl)r�r_�N�r�rra)r�rrl)rr�r�)r�)rr�r�r�r�)r�r�r�)rr�r3�as_tupler�rrr�
test_as_tuple�s6zUsabilityTest.test_as_tuplec		Cs|jj}|�t|j|d��|�t|j|d��|�t|j|d��|�t|j|d��tdd�D]M}td�D]F}dD]A}|d	|||f�}|��}|\}}|�|t�|�|t	�|�|t	�|�
|d
�|�t�
||�d�|�||�||�|�q;q7q1dS)Nr�r�rW�snan123rHr���)r�r�z%s%dE%drr�)rr�r^rP�as_integer_ratiorrkr��tuplerr�r3rO�gcd)	r�r�rL�coeffrmr�pqr�r�rrr�test_as_integer_ratio$s8
�
�
�
����z#UsabilityTest.test_as_integer_ratiocCsd|jj}Gdd�d|�}|d�}|d�}||}|�t|�|�|�|�}|�t|�|�t�|�}|�t|�|�|�||�t�|�}|�t|�|�|�||�|d�}||�}|�t|�|�|�||�||�}|�t|�|�|�||�|�|jd�||�}|�t|�|�|�||�d|_||�}|�t|�|�|�||�|�|jd�dS)Nc@seZdZdZdS)z1UsabilityTest.test_subclassing.<locals>.MyDecimalN)r�rNrOrxrrrr�	MyDecimalIrTrmr�r��1.0r')	rr�r�r-r4rir3rrx)r�r�rmr�r�rrr1rrr�test_subclassingEs<


zUsabilityTest.test_subclassingcCs@|jj}|jj}|�}|�t|d����t|�|d����dS�Nr)rr�r�r3r.r��r�r�r�r|rrr�test_implicit_contextts�z#UsabilityTest.test_implicit_contextc	Cs�|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj	}	|jj
}
|jj}||����M}d|_d|_
d|_|d�}
|d�}|d�}|��|�t|
jdd��d�|�|j|	�|�|j|
�|��|j||jdd�|�|j|�|�|jdd�d	�|�|jdd�d
�|��|�t|
jdd��d�|�|j|	�|�|j|
�|��|j||d�jdd�|�|j|�|��|�t|
jdd��d
�|�|j|	�|�|j|
�|��|j||d�jdd�|�|j|�|��|�t|
jdd��d�|j||d�jdd�|�|j|�|��|�t|
jdd��d�|j||jdd�|�|j|�|��|�t|jdd��d�|j||d�jdd�|�|j|�|��|�t|jdd��d�|j||d�jdd�|�|j|�|��|�t|jdd��d�|j||jdd�|�|j|�|�t|j dd��d�|��|�t|j!dd��d�|�|j|�|�|j|	�|�|j|
�|�|j|�|�|j|�|��|j||j!dd�|�|j|�d|_"|�t|j#dd��d�d|_"|��t|
j$|d�dd��}|�|d�|j||
j$|d�dd�|�|j|�|��t|
j%ddd��}|�|d�|j||
j%|d�dd�|�|j|�|��t|
j&ddd��}|�|d�|j||
j&ddd�|�|j|�|��t|
j'ddd��}|�|d�|j||
j'ddd�|�|j|�|��t|
j(ddd��}|�|d �|j||
j(ddd�|�|j|�|��t|
j)ddd��}|�|d�|j||
j)|d�dd�|�|j|�|��t|
j*ddd��}|�|d�|j||
j*|d�dd�|�|j|�|��t|
j+ddd��}|�|d�|j||
j+|d�dd�|�|j|�|��t|
j,ddd��}|�|d�|j||
j,|d�dd�|�|j|�|��t|
j-ddd��}|�|d �|j||j-ddd�|�|j|�|��t|
j.d!dd��}|�|d"�|j||
j.ddd�|�|j|�|��t|
j/ddd��}|�|d#�|j||
j/d$dd�|�|j|�|��t|
j0d!dd��}|�|d"�|j||
j0d$dd�|�|j|�|��t|
j1d!d%dd��}|�|d&�|j||
j1|d�d%dd�|�|j|�t2|_3t|d'�j4ddd(��}|�|d�t5|_3t|d'�j4ddd(��}|�|d)�t|d'�j4t6dd(��}|�|d�|��|j||d�j4dd�|�|j|�t2|_3t|d'�j7ddd(��}|�|d�t5|_3t|d'�j7ddd(��}|�|d)�t|d'�j7t6dd(��}|�|d�|��|j||d�j7dd�|�|j|�t2|_3t|d'�j8ddd(��}|�|d�t5|_3t|d'�j8ddd(��}|�|d)�t|d'�j8t6dd(��}|�|d�|��|j||d�j8dd�|�|j|�t6|_3t|d*�j9|d+�ddd,��}|�|d-�t5|_3t|d*�j9|d+�ddd,��}|�|d.�t|d*�j9|d+�t6dd,��}|�|d-�|��|j||j9|d/�t6dd(�|�|j|�Wd�n	1�s�wY||���E}d|_d|_
d|_|dd0��}|�|jd�|�|j
d�|�|jd�Wd�n1�s�wYWd�dSWd�dS1�s�wYdS)1Nr�r�i����111�1e9999z1e-9999�r$z1.609487E+48FTz4.709530rhz2.045323r�r�1111000z
9.999999E+999r�r�rY�
+Subnormalz0E-1005r��Nan891287828�
NaN1287828i  r!ro�e�101rr�r��11100z1.11E+9r'r��225r�r)r$r�z1.50001z1e-3)rLr)r$z1.501z1.500z1e-10)r�):rr�r+ryr�r�r�r�r�r�r�r�r(rMrJr"r3r.rLr!rCr^r�r~r��ln�log10�logbrtr�r�r�rbr��capitalsr�r�rdr^r�r�r4r�r3r�r��rotate�scaleb�shift�fmar,r)�to_integralr�r�r�r��quantize)r�r�r+ryr�r�r�r�r�r�r�r�r|rrx�zr8r$rrr�test_none_args}s���Z ��$�zUsabilityTest.test_none_argscCs |jj}|�|d��d�|d��|d���|�|d��d�|d��|d���|�|d��d�|d��|d���|�|d��d�|d��|d���|�|d��d�|d��|d���|�|d��d�|d��|d���|�|d��	d�|d��	|d���|�|d��
d�|d��
|d���|�|d��d�|d��|d���|�|d��d�|d��|d���|�|d��
d�|d��
|d���|�|d��d�|d��|d���|�|d��d�|d��|d���|�|d	��d�|d	��|d���|�|d��d
�|d��|d
���|�|d��d�|d��|d���|�|d��d
�|d��|d
���|�|d��d�|d��|d���|�|d��|d�d�|d��|d�|d���|�|d��dd�|d��|d�|d���|�|d��d|d��|d��|d�|d���dS)Nr�r�iu'��i7rr�r�ir�rfz9.123���r�rhi�r`�C)rr�r3r�rdrfrhr^r�r�r4r�r3r�r�r�r�r�r�r�r�r�r[rrr�test_conversions_from_intl	s����������������������z'UsabilityTest.test_conversions_from_intN)r�rNrOrPr�r�r�r
rr-r1r7r8r9rUrXr[r\rdrlrorrr�r�rrrrr�ms.$*	N
g
-!/	pr�c@rQ)�CUsabilityTestNrSrrrrr��	rTr�c�,eZdZeZ�fdd�Z�fdd�Z�ZS)�PyUsabilityTestc�"t���t��|_t�d�dS�NiX��superr��sys�get_int_max_str_digits�_previous_int_limit�set_int_max_str_digitsr��r�rrr��	�

zPyUsabilityTest.setUpc�t�|j�t���dSr�r�r�r�r��tearDownr�r�rrr��	�zPyUsabilityTest.tearDown�r�rNrOrWrr�r��
__classcell__rrr�rr��	�r�c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�PythonAPItestscCsT|jj}|�t|tj��|�t|tj��|�|d�tj�|�	|d�tj�dSrp)
rr�r!�
issubclass�numbers�Numberr��Realr��assertNotIsInstancer[rrr�test_abc�	s
zPythonAPItests.test_abccCs�ttjd�D]�}|jj}tjd}|jtjd<|d�}t�||�}t�|�}|�	||�t
r�t
�d�}t�d�}t
tjd<t�||�}	ttjd<t�|	�}
|�|
tj�|�	|
|�ttjd<t�||�}t
tjd<t�|�}
|�|
t
j�|�	|
|�t
�d��
�}t�d��
�}t
tjd<t�||�}	ttjd<t�|	�}
|�|
tj�|�	|
|�ttjd<t�||�}t
tjd<t�|�}
|�|
t
j�|�	|
|�|tjd<qdS)Nr�rz-3.141590000z-3.123e81723)rk�pickle�HIGHEST_PROTOCOLrr�r��modules�dumps�loadsr3r�rWr�rc�DecimalTuple)r��protor��savedecimalrr�rrrx�sxr��syrrr�test_pickle�	sN















�zPythonAPItests.test_picklecCs�|jj}tdd�D])}d|d}|�t||��tt|���||�}|�t�}|�|t|��|�q	|�t	t|d��|�t	t|d��|�t
t|d��|�t
t|d��dS)	N������%0.2f�Y@rWrYr�r�)rr�rkr3rr�r�r�r^rrP�r�r�rrrr�rrr�test_int�	s
zPythonAPItests.test_intcCsl|jj}tdd�D]*}d|d}|�t||��tt|���||�}|�t�}|�|t�	|��|�q	dS)Nr�r�r�r�)
rr�rkr3rr�r�r�rO�truncr�rrr�
test_trunc�	s
�zPythonAPItests.test_trunccCsz|jj}Gdd�d|�}|�t||��|�d�}|�t|�|�|�t|�d�|�|jd�d}|�|�|�||��|�|�t	d���
��|�|�t	d�����|�|�t	d	�����|�t|�t	d���t|d
���|�t|�t	d���t|d���|�t|�t	d	���t|d���|�t
|jd
�td�D]}t�d�t��dd}|�|t	|�|���q�dS)Nc@r})z1PythonAPItests.test_from_float.<locals>.MyDecimalcSs
d|_dS)Nrx)r)r��_rrrr

�
z:PythonAPItests.test_from_float.<locals>.MyDecimal.__init__Nr�rrrrrm	
r�rmr�r�rxls\�&�5$3�|	r�r�r�ror�r��abcr�r�r�r�)rr�r!r�r�r3r-r.rr�r�rzr^r%rkr!r�)r�r�rmr��bigintr>rrrr�test_from_float
s8

�
�
�
��zPythonAPItests.test_from_floatcCs�|jj}|jj}|jj}|dtd�}|�|�tj�|d��|dt	d�}|�|�tj�|d��|d|gd�}|�
||jtj�|�t|�d��d�|�t|�d��d	�|�t|�d
��d�dS)Nrj)r(r)z3.1415r)r(r*��z
Decimal('-0')r�zDecimal('1')r�z
Decimal('10'))rr�r+r�r�r3�create_decimal_from_floatrO�pir�r^r2)r�r�r+r�r$rrr�test_create_decimal_from_float%
s8
�
�����z-PythonAPItests.test_create_decimal_from_floatcCs�|jj}|jj}|jj}|ddd�}|�|d��|d��|d��|�|d�j|d�td�|d��|j||d	�j|d
�|d�|�}|d�}|j||d
�td�}|�||d��dS)Ni��iay��r�z7.335z.01z7.34�r)z7.33�10e99999�1e100000ruz0.871831e800�1e797)r$rLr)z	8.71E+799)rr�r+r�r3r�r�r^)r�r�r+r�r|rrrrr�
test_quantizeA
s(���zPythonAPItests.test_quantizecCs�|jj}|d�}|�|j|�|�|jd�|�|��|�|d�}|�t|�ttd���|�t	t
|dd�|�t	t
|dd�|�t	t
|dd�|�t	t
|d	d�dS)
Nz9.8182731e181273rr�r��realr��imag�	conjugate�__complex__)rr�r3r�r�r��complexr�r^r&r�)r�r�rrrr�test_complexY
szPythonAPItests.test_complexcCs.|jj}|jj}|jj}|jj}|jj}|�}d|_d|_d|_|���h}|�	�|�
|d|�d�|�
|d|d�d�|�
||dd�d�|�
||d�d�|�	�|j||d|d�|�|j
|�|�|j
|�|�	�|�
|d�j|d�d	�|j||d
�j|d�|�|j
|�|�|j
|�|�	�|�
|d�j|d�|d��|j||d�j|d�|�|j
|�|�|j
|�|�
|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|dd�d�|�	�|j||d�j|d�|d�|�|j
|�|�|j
|�|�
|d�j|d�|d�|d��|�
|d�j|d�|d�|d��|�
|d�j|d �|d�|d ��|�
|d!�j|d"�|d�|d#��|�
|d!�j|d"�|d�|d��|�
|d�j|d$�|d�|d%��|�	�|j||d�j |d&�|d�|�|j
|�|�|j
|�|�
|d'�j!|d(�|d�|d)��|�
|d*�j"|d+�|d	d,�|d-��|jt#|d�j$|d�|jt#|d�j%|d�|jt#|d�j&|d�|jt#|d�j'|d�|jt#|d�j(|d�|jt#|d�j)|d�|jt#|d�j*|d�|jt#|d�j+|d�|�|d�j,|d��|�|d�j-|d��|jt#|d�j.|d�|jt#|d�j/|d�|jt#|d�j0|d�|�
|d.�j1|d�d�|�
|d�j2|d�d�|�
|d�j3|d�d/�|�
|d0�j4|d�d0�|�
|d1�j5|d2�|d�d�|�
|d1�j6|d2�|d�d�|�
|d3�j7|d2�|d�d�|�
|d4�j8d|d�d�|�
|d4�j8d|d�d�|�	�|j||d4�j9d|d�|�|j
|�|�|j
|�|�
|d4�j:d|d�d�|jt#|j;d5|d�|jt#|d�j<|d�|�
|d��=�d�|jt#|d$�j>|d�|jt#|d$�j?|d�|jt#|d�j=d6d�|jt#|d�j=d6d7�Wd�dS1�s�wYdS)8Nr�rhr'ru)r$rrrvr�r�r�z0.7r�r�z-0.9z9.73z1E+1�9999�'z-2000i0���r+rz0.0625�0.2r�)r$r�rYr��0.01z0.0101rz-0.3z0.02z-0.03r�r!r��1e10�9.99rrI�9.9z0.9)�thirdr$r�z7E+1i����rwz0.21�11r��01�23g�������?r)rv)@rr�r+ryr�r�r(rMrJr"r3r^r!rCr�rLrr�r�r�r�r�r�r�r�r�rdr4r�r3r�r�r�r�r�r%rvrxrzr|r�r�r�r�r~r��adjustedr��radixr�rtrbr�r^r�r�r�r�r�r�rc�	canonicalrlrn)r�rr+ryr�r��xcr|rrr�test_named_parametersi
s�
�""�"�"����$�z$PythonAPItests.test_named_parameterscCs�|j}|j}|j}|j}|j}|j}|j}|j}|j}	|j	}
|j
}|�t|t
��|�t||��|�t||��|�t|t��|�t||��|�t|t��|�t||
��|�t||	��|�t||��|�t||	��|�t||
��|�t||��|�t||��|�t||��|�t|	|��|�t|
|��|�t||��|�t|j|��|�t|j|��|�t|j|��|�t|jt��|�t|j|��dSr)rr�r��FloatOperationr�r�r�r�r�r�r�r!r��ArithmeticErrorr%�ZeroDivisionError�ConversionSyntax�DivisionImpossible�DivisionUndefined�InvalidContext)r�rr�r�r�r�r�r�r�r�r�r�rrr�test_exception_hierarchy�
sBz'PythonAPItests.test_exception_hierarchyN)
r�rNrOr�r�r�r�r�r�r�r�r�r�rrrrr��	s3 pr�c@rQ)�CPythonAPItestsNrSrrrrr�rTr�c@rQ)�PyPythonAPItestsNrVrrrrr�rTr�c@seZdZdd�Zeeejed�dd����Z	dd�Z
dd	�Zd
d�Zdd
�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Z d4d5�Z!d6d7�Z"d8d9�Z#d:d;�Z$d<d=�Z%d>d?�Z&d@dA�Z'dBdC�Z(dDdE�Z)dFdG�Z*dHdI�Z+dJdK�Z,dLdM�Z-dNdO�Z.dPdQ�Z/dRdS�Z0dTdU�Z1dVdW�Z2dXdY�Z3dZd[�Z4d\d]�Z5d^d_�Z6d`da�Z7dbdc�Z8ddde�Z9dfdg�Z:dhdi�Z;djdk�Z<dldm�Z=dndo�Z>dpdq�Z?drds�Z@dtdu�ZAdvdw�ZBdxdy�ZCdzd{�ZDd|d}�ZEd~d�ZFd�S)��ContextAPItestsc
Cs�|jj}|jj}|jj}|jj}|�}|ddddddddd�}||fD]=}|�|jd�|�|jt�|�|j	d�|�|j
d�|�|jd�|�|jd�t
||dg�t
||d|||g�q#dS)	N)r(r)rMrJr�r\rCr*r��?B��r�rrCr*)rr+r�r�r�r3r(r)r,rMrJr�r\r&)r�r+r�r�r�r�r�r|rrrr�s(
���zContextAPItests.test_none_argsr~cCsrddl}|j��}tD]}|�|�|_|�|j|�q|�d�}|�tt	|d|�|�d�}|�tt	|d|�dS)Nrr�r)z	ROUND_UP)
r�rr+�
RoundingModesr�r)r3r^r%r�)r�r�r|�rndrrrrr�s


z(ContextAPItests.test_from_legacy_stringscCsvttjd�D�]0}|jj}tjd}|jtjd<|�}t�t�||��}|�	|j
|j
�|�	|j|j�|�	|j|j�|�	|j
|j
�|�	|j|j�|�	|j|j�|�	|j|j�|�	|j|j�trottfttfgnttfg}|D]�\}}tt�D]�\}	}
tt|�D]�\}}
tt|�D]�\}}
t�dd�}
t�dd�}t�dd�}t�d�}t�d�}|tjd<|j|
||t|	||t|d|�t|d|�d�}t�||�}|tjd<t�|�}|�||j�|�	|j
|
�|�	|j|�|�	|j|�|�	|j
t|	�|�	|j|�|�	|j|�t||dt|d|��t||d	t|d|��q�q�q~qv|tjd<qdS)
Nr�rr�r�rr�)r(rJrMr)r�r\rCr*rCr*)rkr�r�rr+r�r�r�r�r3r(rJrMr)r�r\rCr*r�rWr(r�r,r!�	randranger�r&)r�r�r+r�r|r�combinations�dumper�loader�rir��fi�tir(rr�capsr\rrrrrr�-sb



�

���#�zContextAPItests.test_picklecCsB|jj}|�|d�dd|d�dig�|�|d�dddig�dS)Nr�r�r�)r�r�)rr��assertIn�assertNotInr[rrr�test_equality_with_other_typesjsz.ContextAPItests.test_equality_with_other_typescCs�|jj}|jj}|�}|��}|�t|�t|��|�t|j�t|j��|�t|j�t|j��t|j�	��}t|j�	��}|�
||�|�
|j|j�dSr)rr�r+rir�r6rCr*r��keysr3)r�r�r+r|r�k1�k2rrr�	test_copypszContextAPItests.test_copycCs"|jj}|�}|�tt|d�dS)N�_clamp)rr+r^r&r �r�r+r|rrr�test__clampszContextAPItests.test__clampcC�J|jj}|jj}|�}|�|d��}|�|�d�|�|�t|jd�dS�Nrhr!)rr�r+r�r3r^r%�r�r�r+r|rrrr�test_abs��zContextAPItests.test_abscC�|jj}|jj}|�}|�|d�|d��}|�|�dd�|�|�|�|d�d�|�|�|�d|d��|�|�t|jdd�|�t|jdd�dS�Nr�r�)rr�r+r�r3r^r%rrrr�test_add��zContextAPItests.test_addcCrr)rr�r+r�r3r^r%rrrr�test_compare�r
zContextAPItests.test_comparecCrr)rr�r+rdr3r^r%rrrr�test_compare_signal�r
z#ContextAPItests.test_compare_signalcCrr)rr�r+rfr3r^r%rrrr�test_compare_total�r
z"ContextAPItests.test_compare_totalcCrr)rr�r+rhr3r^r%rrrr�test_compare_total_mag�r
z&ContextAPItests.test_compare_total_magcCrr)rr�r+rlr3r^r%rrrr�
test_copy_abs�rzContextAPItests.test_copy_abscCrr)rr�r+rjr3r^r%rrrr�test_copy_decimal�rz!ContextAPItests.test_copy_decimalcCrr)rr�r+rnr3r^r%rrrr�test_copy_negate�rz ContextAPItests.test_copy_negatecC�|jj}|jj}|�}|�|d�|d��}|�|�dd�|�|�|�|d�d�|�|�|�d|d��|�|�t|jdd�|�t|jdd�dS)Nr�r�r�r�)rr�r+rpr3r^r%rrrrr��r
zContextAPItests.test_copy_signcCr�Nr�r�r�r�)rr�r+r�r3r^r%rrrr�test_divide�r
zContextAPItests.test_dividecCrr)rr�r+rrr3r^r%rrrr�test_divide_intr
zContextAPItests.test_divide_intcCrr)rr�r+r�r3r^r%rrrr�test_divmodr
zContextAPItests.test_divmodcCr�Nr�r�)rr�r+rLr3r^r%rrrr�test_exprzContextAPItests.test_expcCs^|jj}|jj}|�}|�|d�|d�|d��}|�|�ddd�|�|�|�|d�dd�|�|�|�d|d�d�|�|�|�dd|d��|�|�|�|d�|d�d�|�|�t|jddd�|�t|jddd�|�t|jddd�|�t|j|d�|d�d	�|�t|j|d
�|d�d�|�t|d�j|d�d	�|�t|d
�j|d�d�dS)
Nr�r�r�r�r�4r�rz
not a decimalr�rYgZd;�O��?)rr�r+r�r3r^r%rrrr�test_fma#s0
�
���zContextAPItests.test_fmacCrr)rr�r+rxr3r^r%rrrr�test_is_finite=rzContextAPItests.test_is_finitecCrr)rr�r+rzr3r^r%rrrr�test_is_infiniteFrz ContextAPItests.test_is_infinitecCrr)rr�r+r|r3r^r%rrrr�test_is_nanOrzContextAPItests.test_is_nancCrr)rr�r+r~r3r^r%rrrr�test_is_normalXrzContextAPItests.test_is_normalcCrr)rr�r+r�r3r^r%rrrr�test_is_qnanarzContextAPItests.test_is_qnancCrr)rr�r+r�r3r^r%rrrr�test_is_signedjrzContextAPItests.test_is_signedcCrr)rr�r+r�r3r^r%rrrr�test_is_snansrzContextAPItests.test_is_snancCrr)rr�r+r�r3r^r%rrrr�test_is_subnormal|rz!ContextAPItests.test_is_subnormalcCrr)rr�r+r�r3r^r%rrrr�test_is_zero�rzContextAPItests.test_is_zerocCrr)rr�r+rr3r^r%rrrr�test_ln�rzContextAPItests.test_lncCrr)rr�r+r�r3r^r%rrrr�
test_log10�rzContextAPItests.test_log10cCrr)rr�r+r�r3r^r%rrrr�	test_logb�rzContextAPItests.test_logbcCrr)rr�r+r^r3r^r%rrrr�test_logical_and�r
z ContextAPItests.test_logical_andcCr)Nrfrt)rr�r+rtr3r^r%rrrr�test_logical_invert�rz#ContextAPItests.test_logical_invertcCrr)rr�r+r�r3r^r%rrrr�test_logical_or�r
zContextAPItests.test_logical_orcCrr)rr�r+r�r3r^r%rrrr�test_logical_xor�r
z ContextAPItests.test_logical_xorcCrr)rr�r+r4r3r^r%rrrr�test_max�r
zContextAPItests.test_maxcCrr)rr�r+r�r3r^r%rrrr�test_max_mag�r
zContextAPItests.test_max_magcCrr)rr�r+r3r3r^r%rrrr�test_min�r
zContextAPItests.test_mincCrr)rr�r+r�r3r^r%rrrr�test_min_mag�r
zContextAPItests.test_min_magcCrr)rr�r+�minusr3r^r%rrrr�
test_minus
rzContextAPItests.test_minuscCrr)rr�r+r�r3r^r%rrrr�
test_multiply
r
zContextAPItests.test_multiplycCrr)rr�r+r�r3r^r%rrrr�test_next_minus
rzContextAPItests.test_next_minuscCrr)rr�r+r�r3r^r%rrrr�test_next_plus$
rzContextAPItests.test_next_pluscCrr)rr�r+r�r3r^r%rrrr�test_next_toward-
r
z ContextAPItests.test_next_towardcCrr)rr�r+r�r3r^r%rrrr�test_normalize9
rzContextAPItests.test_normalizecCsn|jj}|jj}|�}|�|�d�|�|d���|�|�d�|�|d���|�|�d�|�|d���dS)Nrrrd)rr�r+r3rb)r�r�r+r|rrr�test_number_classB
s z!ContextAPItests.test_number_classcCrr)rr�r+�plusr3r^r%rrrr�	test_plusK
rzContextAPItests.test_pluscCs�|jj}|jj}|�}|�|d�|d��}|�|�dd�|�|�|�|d�d�|�|�|�d|d��|�|�|�|d�|d��|�|�t|jdd�|�t|jdd�|�|jdddd�d�dS)	Nr�r�r�rrjr�r�)�modulor�r�)rr�r+�powerr3r^r%rrrr�
test_powerT
szContextAPItests.test_powercCrr)rr�r+r�r3r^r%rrrrr�b
r
zContextAPItests.test_quantizecCrr)rr�r+�	remainderr3r^r%rrrr�test_remaindern
r
zContextAPItests.test_remaindercCrr)rr�r+r�r3r^r%rrrr�test_remainder_nearz
r
z#ContextAPItests.test_remainder_nearcCrr)rr�r+r�r3r^r%rrrr�test_rotate�
r
zContextAPItests.test_rotatecCrr)rr�r+r�r3r^r%rrrr�	test_sqrt�
rzContextAPItests.test_sqrtcCrr)rr�r+r�r3r^r%rrrr�test_same_quantum�
r
z!ContextAPItests.test_same_quantumcCrr)rr�r+r�r3r^r%rrrr�test_scaleb�
r
zContextAPItests.test_scalebcCrr)rr�r+r�r3r^r%rrrr�
test_shift�
r
zContextAPItests.test_shiftcCrr)rr�r+�subtractr3r^r%rrrr�
test_subtract�
r
zContextAPItests.test_subtractcCrr)rr�r+r�r3r^r%rrrr�test_to_eng_string�
rz"ContextAPItests.test_to_eng_stringcCrr)rr�r+r�r3r^r%rrrr�test_to_sci_string�
rz"ContextAPItests.test_to_sci_stringcCrr)rr�r+r�r3r^r%rrrr�test_to_integral_exact�
rz&ContextAPItests.test_to_integral_exactcCs\|jj}|jj}|�}|�|d��}|�|�d�|�|�t|jd�|�t|jdd�dS)Nr�r�r)rr�r+r�r3r^r%rrrr�test_to_integral_value�
sz&ContextAPItests.test_to_integral_valueN)Gr�rNrOr�rrrr�r�r�r�r�r�rrr	rrr
rrrrr�rrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r0r1r2r3r4r5r6r8r;r�r=r>r?r@rArBrCrErFrGrHrIrrrrr�s�
=																												r�c@rQ)�CContextAPItestsNrSrrrrrJ�
rTrJc@rQ)�PyContextAPItestsNrVrrrrrK�
rTrKc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�ContextWithStatementcCsv|jj}|jj}|�}|��}|�}Wd�n1swY|�}|�||d�|�||d�|�||d�dS)N�!did not restore context correctly�did not copy the context� __enter__ returned wrong context)rr�ryr��assertIsNot)r�r�ry�orig_ctx�	enter_ctx�set_ctx�	final_ctxrrr�test_localcontext�
s�z&ContextWithStatement.test_localcontextc	Cs�|jj}|jj}|jj}|jj}|�}|dd�}||��}|�}Wd�n1s*wY|�}|�||d�|�|j|jd�|�||d�|�||d�dS)Nr��r(rMzdid not set correct contextrNrO)rr+r�ryr�r3r(rP)	r�r+r�ryrQ�new_ctxrRrSrTrrr�test_localcontextargs

�z)ContextWithStatement.test_localcontextargc	Cs�|jj}|jj}|jj}|jj}|jj}|jj}|�}|��|dd�}|���}	|�|	j	|j	�|�|	j
|j
�d|	j
|<d|	_|�|jd�|�
||	jd�|�|	j	|�||��4}
|�|
j	|j	�|�|
j
|j
�|�
||
j|d�d�|�|
j	|�|�|
j	|�~
Wd�n1s�wY|�|	j	|�~	Wd�n1s�wY|�|jd�|�|j	|�|�|j	|�|�|j	|�|�|j	|�dS)N��rMT���z0e-999z3.4e200r�)rr�r+r�ryr�r�r"r3rCr*rJr�r^r�r!r:r�)r�r�r+r�ryr�r�rQrWr�r�rrr�test_nested_with_statementssB


��z0ContextWithStatement.test_nested_with_statementscCs�|jj}|��N}~|��1}~|��}~|��	}~Wd�n1s"wYWd�n1s1wYWd�n1s@wYWd�dSWd�dS1sXwYdSr�rry�r�ryr�r�r��c4rrr�test_with_statements_gc1:s"������"�z-ContextWithStatement.test_with_statements_gc1cCs�|jj}|��Q}||��4}~||��}~||��
}~~Wd�n1s%wYWd�n1s4wYWd�n1sCwYWd�dSWd�dS1s[wYdSrr]r^rrr�test_with_statements_gc2Fs"


������"�z-ContextWithStatement.test_with_statements_gc2c
Cs�|jj}|jj}|jj}|jj}|���}~|dd�}||�||��~}~|�|jd�~|dd�}||�~|�|�jd�|dd�}	||	�|�|�jd�||	��>}
~	|�|
jd�~
|dd�}||�~|�|�jd�|��}|�|jd�~Wd�n1s�wYWd�n1s�wYWd�n1s�wYWd�dSWd�dS1s�wYdS)Nr�rVr�r�r�)rr+ryr�r0r3r()
r�r+ryr�r0r��n1r��n2�n3r��n4r_rrr�test_with_statements_gc3RsL





������"�z-ContextWithStatement.test_with_statements_gc3N)	r�rNrOrUrXr\r`rarfrrrrrL�
s
#rLc@rQ)�CContextWithStatementNrSrrrrrgsrTrgc@rQ)�PyContextWithStatementNrVrrrrrhurTrhc@s8eZdZdd�Zdd�Zedd��Zdd�Zd	d
�ZdS)�ContextFlagsc
s��jj}�jj}�jj}�jj}�jj}�jj}�jj}�fdd�}|dddtggd�}	|	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]o\}}
|	��||
�}dd�|	j��D�}|D]V}|	��|D]}||	|�q�||
�}t|�}|D]}||vr�|�|�q�|jtd
�dd�|	j��D�}|jtd
���||dd||f���||dd||f�q�qndS)Ncs4�jtkrd|j|<|j|r|�dS|�|�dS�NT)rr�rCr*�_raise_error)r$�flagr�rr�raise_error�s


�z7ContextFlags.test_flags_irrelevant.<locals>.raise_errorr'r�r�)r(rJrMr)r*rCz100E-425000010r�r@z
9.87654321cS�g|]\}}|r|�qSrr�r�kr�rrrr�rz6ContextFlags.test_flags_irrelevant.<locals>.<listcomp>rcSrnrrrorrrr�rz=operation produces different answers depending on flags set: zexpected %s, got %s.z9operation raises different flags depending on flags set: zexpected %s, got %s)rr�r+r�r�r�r�r�r,r`r�r�r�rDr"rCr�r�r+r1r6r3)r�r�r+r�r�r�r�r�rmr$�
operations�flagsets�fnr	r8rC�extra_flagsrl�new_ans�expected_flags�	new_flagsrr�r�test_flags_irrelevantzsb��	�
�
��
����z"ContextFlags.test_flags_irrelevantcCs2|jj}|jj}|jj}|�}|�|j|j�|�|j|j�|j|_|�|j|j�|�|j|j�d|j|<|j|_|�|j|j�|�|j|j�i}|�|j�|�||j�|�|j|�d||<|�||j�|�|j|�|di}|�||j�|�|j|�dg}|�||j�|�|j|�dS)NTFrv)	rr+r�r�r�rCr*r3�update)r�r+r�r�r|rrrr�test_flag_comparisons�s4
z"ContextFlags.test_flag_comparisonscCs�|jj}|jj}|jj}|���}|�|j|�|��|�|d�d�|�|j	|�|��|�|�
d�d�|�|j	|�|��|�d�}|�|j	|�|�|d�|�|j	|�|��|�d�}|�|j	|�|�|d�|�|j	|�d|j|<|��|�
||d�|�|j	|�|��|�
||j
d�|�|j	|�|��|�d�}|�|j	|�|��|�d�}|�|j	|�Wd�dS1s�wYdS)Ng@T)rr�r�ryr�r*r"r3r!rCr�r�r�r^)r�r�r�ryr|rrrr�test_float_operation�sF




"�z!ContextFlags.test_float_operationcs8�jj��jj}�jj��jj}d��fdd�	��d���d��d�
d��d���d��	d	�d
�
�d���d��td
��td��d���������	�
��
��fdd�	}d���fdd�	}|�}||��.}��|j��||dd�||dd�d|j�<||�d�||�d�Wd�dS1s�wYdS)NcsN|��t||�}|�kr��|||�n��||�d���|j��dSrj)r"r r^r�r!rC)r�r�r%r$�signalr�)r�r�rr�assert_attrs
z7ContextFlags.test_float_comparison.<locals>.assert_attrr�r�r�r�rr�r�r�r�r�r�r�csdD]
}��
�|||�qdD]
}���|||�q��
�d|d����	d|d����
d|d����	d|d����
d|d����d|d����d|d���
�d|d���d�dd|d����d|d����d|d���d�td�d|d�dS)	N)r�r�)r�r�r�r�r�r�ror�)r�)r|r|r%)r�r}�big_d�big_f�inf_d�inf_f�	neg_inf_d�	neg_inf_f�
neg_zero_d�
neg_zero_f�small_d�small_f�zero_d�zero_frr�doit6s z0ContextFlags.test_float_comparison.<locals>.doitcs�|��td�d�g�}��t|�d���|j��|��|r.��|td�d�g�ntd�d�g�}��|j��|��d�d�dfv}��|j��|��d�d�dddiv}��|j��dS)	Nr�z100.0r�r�r"g$@r�r�)r"r�r3�lenr!rCr^�sorted)r|r|rr�)r�r�r�rr�test_containersTsz;ContextFlags.test_float_comparison.<locals>.test_containers)r|Tr)rr�r+r�ryr�r�r*)r�r+ryr�r�r�r|r)r�r�r}r~rr�r�r�r�r�r�r�r�r�r�r�r�test_float_comparisons8	(

"�z"ContextFlags.test_float_comparisoncCs�|jj}|jj}|jj}|jj}|�}|�|j|�|�|j|�|��d|j|<d|j|<|�	|j|�|�	|j|�dSrj)
rr�r+r�r�r�rCr*�clear_trapsr!)r�r�r+r�r�r$rrr�test_float_operation_defaultss

z)ContextFlags.test_float_operation_defaultN)	r�rNrOrxrzrr{r�r�rrrrrixsB&
5[ric@rQ)�
CContextFlagsNrSrrrrr��rTr�c@rQ)�PyContextFlagsNrVrrrrr��rTr�c@� eZdZdZdd�Zdd�ZdS)�SpecialContextszTest the context templates.c
Cs.|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj	}	t
||d|||||	g�|���}
|j}|j}d}
zJz#d|_|_||fD]}||�|�}|�
||�|�|jd�qIWntyv}z	|j}
WYd}~nd}~wwW||_||_||
�|
r�|
�dS||_||_||
�|
r�|
�w)Nr*i�)r�BasicContext�ExtendedContextr�r0r�r�r�r�r�r&rir(rPr3�	Exceptionr�)r�r�r�r�r0r�r�r�r�r��savecontext�basic_context_prec�extended_context_prec�ex�templater|rrrr�test_context_templates�sP�
������z&SpecialContexts.test_context_templatesc
Cs8|jj}|jj}|jj}|jj}|jj}|jj}|jj}|jj}|�	|j
d�|�	|j
d�t||d|||g�|���}	|j
}
d}zMz)|�}|j
}
d|_
|�}|�	|j
|
�||�|�}|�
||�|�	|j
d�Wnty�}z	|j}WYd}~nd}~wwW|
|_
||	�|r�|�dS|
|_
||	�|r�|�w)Nr'r*i�)rr�r�r�r�r0r�r�r�r3r(r&rirPr�r�)r�r�r�r�r�r0r�r�r�r��default_context_precr�r|�saveprecrrrr�test_default_context�sP�
�����z$SpecialContexts.test_default_contextN)r�rNrOrPr�r�rrrrr��s$r�c@rQ)�CSpecialContextsNrSrrrrr��rTr�c@rQ)�PySpecialContextsNrVrrrrr��rTr�c@r})�ContextInputValidationc	Cs@|jj}|jj}|��}dD]#}t||d�|�t||�d�|�tt||d�|�t	t||d�qt|dd�|�t|d�d�|�tt|dd�|�t	t|dd�|�t	t|d	d�|�t	t|d	d
�|�t	t|d	d�|�t	t|d	d�dD]}|�tt||d�|�tt||d
�|�t	t||gd��qy|�t
t|dd�|�t	t|dg�|�tt|di�|�tt|dddi�dD]
}|�t
|j|�q�|�t	t|d
�|�t	t|d
�|jt	|dd�|jt	|dd�|jt|d
d�|jt|dd�|jt|dgd�|jt|dgd�|jt	|dd�|jt	|dd�dS)N�r(rMr�rhrvrJr�r��r�r�r�r)r'r��r�r\r�rr�rCr*r�r)r(rMrJr)r�r\rCr*r��r\�r�rW�rC�Q�r*�rr�)r�r)
rr+r�rir�r3r r^rr%r&�KeyError�__delattr__)r�r+r�r|r%rrr�test_invalid_context�sL�z+ContextInputValidation.test_invalid_contextN)r�rNrOr�rrrrr���r�c@rQ)�CContextInputValidationNrSrrrrr�rTr�c@rQ)�PyContextInputValidationNrVrrrrr�rTr�c@r})�ContextSubclassingcs�|j��j}�j��j}�j}�j}�j}�j}�j}�j	}�j
}	G��fdd�d��}
��}|
�}dD]}
|�t||
�t||
��q4|j
t|
fiddi��|
dd�}|�|jd�|�
|	|j|d�d	�|j
t|
fid
di��|
tdd�}|�|jt�|�|�|d
��d�|j
t|
fiddi��|
ddd�}|�|jd�|�|d�|d��}|�||d��|||||fD]
}|�|j|�q�|j
t|
fiddi��|
ddd�}|�|jd�|�
||j|d�|d��|jtk�r|||fD]
}|�|j|�q�|j
t|
fiddi��|
d	d�}|�|jd	�|�d�}|�|�|�d�|j
t|
fiddi��|
ddd �}|�|jd�|�|d��}|�t|�d!�|j
t|
fid"di��|
||gd#�}||fD]}|�|j|��qh|� �t!�D]}|�"|j|��q||j
t|
fid$di��|
||gd%�}||fD]}|�|j#|��q�|�$�t!�D]}|�"|j#|��q�dS)&Ncs"eZdZ			d��fdd�	ZdS)z>ContextSubclassing.test_context_subclassing.<locals>.MyContextNc		s���|�|dur||_|dur||_|dur||_|dur!||_|dur(||_|dur/||_�durHt�t�rE�fdd�t	��D���|_
�durct�t�r^�fdd�t	��D���|_dSdS)Nc�i|]}||�v�qSrr�rr�r�rr�
<dictcomp>B�z[ContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__.<locals>.<dictcomp>cr�rrr�r�rrr�Fr�)rr(r)rJrMr�r\r�r�r,rCr*)	r�r(r)rJrMr�r\rCr*�r+r�rCr*rr0s,



�zGContextSubclassing.test_context_subclassing.<locals>.MyContext.__init__)NNNNNNNNr�rr�rr�	MyContext/s
�r��r(r)rJrMr�r\rCr*r(rhr�rV�9e2rr)�XYZ)r)r(r�r'rJrj)rJr(z1e-99z2.234e-2000rrM)rMr(�1e99z
2.234e2000r�r��1E222z1e+222r\r��c)r\rMz!1.000000000000000000000000000E+99rCr�r*r�)%rr�r+r�r�r�r�r�r�r�r�r3r r^rr(r�r%r�r)r7rJr�r!rCrMr�r�r�r�r\r.r"r,r�r*r�)r�r�r�r�r�r�r�r�r�r�r�r|rr%rr|rr�r�test_context_subclassing"s~


�z+ContextSubclassing.test_context_subclassingN)r�rNrOr�rrrrr� r�r�c@rQ)�CContextSubclassingNrSrrrrr��rTr�c@rQ)�PyContextSubclassingNrVrrrrr��rTr�c@s$eZdZdd�Zdd�Zdd�ZdS)�CheckAttributescCs�|�tjtj�|�tjtj�|�tjtj�|�tjtj�|�tjdup+tjdu�|�tjdup8tjdu�|�tj	tj	�|�t
t�t
t��dS)NTF)r3r�rFrWr�rrr!r��__version__�dirr�rrr�test_module_attributes�sz&CheckAttributes.test_module_attributescCsJdd�tt���D�}dd�tt���D�}|�t|�t|�t��dS)NcS�"g|]
}d|vs
|�d�s|�qS��__r��rrrrrr��"z;CheckAttributes.test_context_attributes.<locals>.<listcomp>cSr�r�r�rrrrr�r�)r�r�r+rWr3r��r�rrxrrr�test_context_attributes�sz'CheckAttributes.test_context_attributescCsNdd�tt�d��D�}dd�tt�d��D�}|�t|�t|�t��dS)NcSr�r�r�rrrrr�r�z;CheckAttributes.test_decimal_attributes.<locals>.<listcomp>r'cSr�r�r�rrrrr�r�)r�r�r�r3r�r�rrr�test_decimal_attributes�sz'CheckAttributes.test_decimal_attributesN)r�rNrOr�r�r�rrrrr��sr�c@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�CoveragecCsH|jj}|�|d���d�|�|d���d�|�|d���d�dS)N�	1234e9999i'r�rr�)rr�r3r�r[rrr�
test_adjusted�szCoverage.test_adjustedcCsL|jj}|jj}|d���}|�|d�|�}|�|d��}|�|d�dS)Nr')rr�r�r�r3)r�r�r�rr|rrr�test_canonical�szCoverage.test_canonicalcCsp|jj��}d|_d|_d|_t|_d|_d|_	t
|jD]}d|j|<d|j|<q|�
�}d}|�||�dS)Nr�r�rr�Fz{Context(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[], traps=[]))rr�rir(rMrJr�r)r�r\r,rCr*�__repr__r3)r�r|r�rr�rrr�test_context_repr�s
zCoverage.test_context_reprcCsJ|jj}|jj}|���L}d|_d|_d|_|�t|d��d�|�|d�dd�|�|d�dd	�|�|d�d
d�|�|d��|d�d�d�|�	|d
��d
d��
�d�|�t|d�d	d
�d	�|�|d���d�|�	|d��
�d�|�	|d���d�|�|d���d�|�|d���d�|�|d���d	�|�|d���d�|�|d�d�|�|d�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����Wd�n	1�s\wY|��6}d|_d d!}||�}|��}|�||�|��}|�||�|� |d��}|�||�Wd�dS1�s�wYdS)"Nr�rhz-10r��7r�r�rjr�r�z1.2r�roTz1.01r�F�20�580r�r�r'z2E+1z-1E+1z+Normalr!z1.12345r�rYrYr'i�i�)!rr�ryr(rMrJr3r�r�r�r|�powrLr~r�rr�r�rtr�r�r�rbr�r!rvrxr�r�r�rlrnrp)r�r�ryr|rrxr�rrrrr�sb
�?
$�zCoverage.test_implicit_contextcCs�|jj}|jj}|jj}|jj}|���}t|d�d�\}}|�||d��|�||d��t|d�d�\}}|�|��o?|���d|j	|<t|d�d�\}}|�|��oX|���d|j	|<|�
�t|d�|d��\}}|�|��ow|���|�|j|�|�
�t|d�d	�\}}|�|��o�|���|�|j|�|�
�t|d
�d
�\}}|�|��o�|���|�|j|�d|j	|<|�
�t|d�d
�\}}|�|��o�|���|�|j|o�|j|�Wd�dS1s�wYdS)N�10912837129r��10901935�194ror�Fr�rzr�)
rr�ryr�r�r�r3r!r|r*r"rCrz)r�r�ryr�r�r|r�r�rrrr)sD


�"�zCoverage.test_divmodcCs�|jj}|jj}|jj}|jj}|��L}d|_|��|�|d�d|d��|�|j	|�d|_d|_
d|_|��d|j|<|�|d�|d	�|d
��|�|j	|�Wd�dS1sbwYdS)Nr�rnr�r)r�rhFr'rJr�)
rr�ryr�r�r(r"r3r!rCrMrJr*)r�r�ryr�r�r|rrrr;Rs"
"�zCoverage.test_powercCs�|jj}|jj}|jj}|��'}d|_d|_d|_d|j|<|d��|d��}|�	|�
��Wd�dS1s9wYdS)Nr�rhFr��1e1)rr�ryr�r(rMrJr*r�r!r|�r�r�ryr�r|rrrrr�fs
"�zCoverage.test_quantizecCs>|jj}|jj}|�}|�|d���d�|�|��d�dS)Nr�r�)rr�r�r3r�rqrrr�
test_radixss
zCoverage.test_radixcCs0|jj}dD]}|�t|d�|�d�t�qdS)N)r�r�r�r�r�r�r�r�r�rv)rr�r�r r�)r�r�r%rrrr{s�zCoverage.test_ropcCs�|jj}|jj}|��`}d|_|�t|d����d�|�t|d����d�|�t|d��d��d�|�t|d	��d
��d�|�t|d	��d��d
�|�t|d�jd�|�t|d�jdd�Wd�dS1snwYdS)Nr�r�r�z9.99e-5rYr@rjz1.23457r1r�z1.2345000000rz0E+10r$r�r�)	rr�ryr(r3r.�	__round__r^r%)r�r�ryr|rrr�
test_round�s"�zCoverage.test_roundcCs |j��}|�t|jdg�dS)Nr�)rr+r^rr�)r�r|rrr�test_create_decimal�s
zCoverage.test_create_decimalcCsv|jj}|jj}|��&}d|_|dd�dd}|�t|�d�|�|��d�Wd�dS1s4wYdS)Nr�i�i�r�iSr�r�)rr�ryr(r3rr��r�r�ryr|rrrrr��s"�zCoverage.test_intcCsl|jj}|�}d|_dd}|�|�}|�||�|�|�}|�||�|�|d�}|�||�dS)Nr'i�i�r�)rr+r(rlr3rnrp)r�r+r|rrxrrrr��s


zCoverage.test_copyN)r�rNrOr�r�r�rrrr;r�r�rr�r�r�r�rrrrr��sQ)

r�c@rQ)�	CCoverageNrSrrrrr��rTr�cr�)�
PyCoveragecr�r�r�r�r�rrr��r�zPyCoverage.setUpcr�rr�r�r�rrr��r�zPyCoverage.tearDownr�rrr�rr��r�r�c@r�)�PyFunctionalityz!Extra functionality in decimal.pycCs>tj}tj}gd�}|D]\}}}|�t||�|�|�qdS)N)
)z.0ernz1e+0)z#.0ernz1.e+0)rrnr�)z#.0frn�1.)r�1.1r�)z#gr�r�)rr�r�)z#.0gr�r�)r#rnz100%)z#.0%rnz100.%)rWr�ryr3rB)r�r�ryr�rDrrArrr�test_py_alternate_formatting�s
�z,PyFunctionality.test_py_alternate_formattingN)r�rNrOrPr�rrrrr��sr�c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�
PyWhiteboxz White box testing for decimal.pycCstj}tj}|��n}d|_|d�|d�}|�||d��|d�|d�}|�||d��|d�|d�}|d�|d	�}|�||d
��|d�|d	�}|dd
�|d	�}d|_|d�|d�}d|_|dd�|d�}Wd�dS1szwYdS)Nr�irIz
0.00390625z-0.6z0.0012885819�256e7l�o�
�z-0.0625r��152587890625e7rjic
r��152587890625��r�iB)rWr�ryr(r3r�rrr�test_py_exact_power�s$"�zPyWhitebox.test_py_exact_powercs:tj}tj}tj}|��}tdd�ttD��|_||�|d��|d��|d��|d��d4�����fdd�	}|�����j	�j	����j
�j
����j�j�|d�|d	d
�|dd
�|dd
�|d
d
�|dd
�|dd
�|dd
�|dd
�|d�|dd
�|d�|d�|d�|dd
�|dd
�|d�|d�|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.d
�|d/d
�|d0d
�|d1�|d2�|d3�dS)5Ncss�|]}|dfVqdS)rNrrrrrr�s�z=PyWhitebox.test_py_immutability_operations.<locals>.<genexpr>z-25e55z33e+33Fcs�|r<td|d����j�j����j�j����j�j����j�j����j�j����j�j�dStd|d����j�j����j�j����j�j�dS)Nzd1.z(d2)z())r/r3�_sign�_int�_exp)�	operation�useOther��b1�b2r�r�r�rr�checkSameDecsz@PyWhitebox.test_py_immutability_operations.<locals>.checkSameDec�__abs__r�Tr�r�r�r�r�r�r��	__float__r�r�__int__�	__trunc__r�r��__neg__�__bool__�__pos__r�r�r�r�r�r�r�r�r��__str__r�r�r�rcr�r4r3r�r�r�r�r�r�r�)F)rWr�r�r0rir-r,r*r3r�r�r�)r�r�r�r0r|r�rr�r�test_py_immutability_operations�st


























z*PyWhitebox.test_py_immutability_operationscCs>tj}|d�}||�}|�t|�d�|�t|�t|��dS)Nr`ra)rWr�r3r.r�r6r�rrr�test_py_decimal_idDs
zPyWhitebox.test_py_decimal_idcCsVtj}tj}|��}|d��dt�}|�|���Wd�dS1s$wYdS)Nror�)rWr�ry�_rescaler�r!r|r�rrr�test_py_rescaleLs"�zPyWhitebox.test_py_rescalecCs tj}|�t|d�jdt�dS)Nz3.1234r)rWr�r^r�_roundr�r[rrr�test_py__roundUszPyWhitebox.test_py__roundN)	r�rNrOrPr�rrrrrrrrr��sO	r�c@s4eZdZdZedd��Zedd��Zedd��ZdS)	�CFunctionalityzExtra functionality in _decimalcCstj}tj}tj}tj}dd�}||�}|�|jd�|�|jd�|�|jd�|||�||�}|�|jd�|�|jd�|�|jd�|||�||�}|�|jd	�|�|jd
�|�|jd�|||�|�	t
|d�|�	t|d
�|�	t|d�dS)NcSs.|�|jd�t||dg�t||dg�dS)Nr�r*rC)r3r\r&)r�r$rrr�assert_restfsz7CFunctionality.test_c_ieee_context.<locals>.assert_restr��`i����rrYr[�"ii�r�rhi)r��IEEEContext�	DECIMAL32�	DECIMAL64�
DECIMAL128r3r(rMrJr^rPr)r�rr
rrr	r|rrr�test_c_ieee_context^s.


z"CFunctionality.test_c_ieee_contextcCs:tj}|tjtjd�}|�|jtj�|�|jtj�dS)Nr�)r�r+r6�
DecRoundedr3�_flags�_trapsrrrr�test_c_context�szCFunctionality.test_c_contextcCstjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjf}|�tjd�|�tjd�|�tjd�|�tjd�t|�D]\}}|�|d|>�q@|�tjtjtjBtjBtjBtjBtj	Btj
B�|�tjtjtjB�|�tjtjtjBtjB�dS)Nrfr�ir�)r�r6�DecConversionSyntax�DecDivisionByZero�DecDivisionImpossible�DecDivisionUndefined�DecFpuError�
DecInexact�DecInvalidContext�DecInvalidOperation�DecMallocError�DecFloatOperation�DecOverflowr�DecSubnormal�DecUnderflowr3r
rr�IEEE_CONTEXT_MAX_BITSr(�DecIEEEInvalidOperation�	DecErrors�DecTraps)r��condr>r�rrr�test_constants�sH�
�������	���zCFunctionality.test_constantsN)r�rNrOrP�requires_extra_functionalityrrr(rrrrr[s
#
rc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	e
dd��Zdd�Ze
dd��Z
dd�Zdd�Zdd�Zdd�Zdd�Ze
dd��Ze
d d!��Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Ze�ej�d,�d-�e�ed.d.d/�d0�d1d2���Z d3S)4�	CWhiteboxzWhitebox testing for _decimalcCs�tj}tj}dd}dd}|��1}d|_td�D] }t�||�}t�dd�}||}	||�||�}
|�|	|
�qWd�dS1sEwYdS)Nr��#�$i@Brjrfi�)r�r�ryr(rkr!r�r3)r�r�ryr�r�r|r>r�r�rrxrrr�test_bignum�s�"�zCWhitebox.test_bignumcCs|�ttjdd�dS)Nr'rv)r^r%r�r�r�rrr�test_invalid_construction�sz#CWhitebox.test_invalid_constructioncCsVtj}tj}tj}tj}||���|�||d�Wd�dS1s$wYdS)N�1e9999999999999999999)r�r�r�r+ryr^)r�r�r�r+ryrrr�test_c_input_restriction�s�"�z"CWhitebox.test_c_input_restrictioncCs�tj}tj}|��}d|_d|_d|_t|_d|_	d|_
ttD]}d|j|<d|j
|<q d|j|<d|j
|<|��}d}|�||�dS)Nr�r�rr�TaQContext(prec=425000000, rounding=ROUND_HALF_DOWN, Emin=-425000000, Emax=425000000, capitals=0, clamp=1, flags=[Clamped, InvalidOperation, DivisionByZero, Inexact, FloatOperation, Overflow, Rounded, Subnormal, Underflow], traps=[Clamped, InvalidOperation, DivisionByZero, Inexact, FloatOperation, Overflow, Rounded, Subnormal, Underflow]))r�r�r�rir(rMrJr�r)r�r\r,rCr*r�r3)r�r�r�r|r�rr�rrr�test_c_context_repr�s"


zCWhitebox.test_c_context_reprc	Cs�tj}tj}tj}tj}tj}tj}tj}tjdk}|�}	|�	t
|	jjdd�|�	t
|	j
jdd�|�	t|	jj|�|�	t|	j
j|�|�	tt|	ddg�|�	tt|	ddg�|�	t
t|	dddi�|�	t
t|	dddi�|	j��}
|
|=d	|
d
<|�	t
t|	d|
�|�	t
t|	d|
�|r�dnd}|r�d
nd}dD]}
|�	tt|	|
|�q�|�	tt|	d|�|j	t||d�|j	t||d�|j	t||d�|j	t||dd�|j	t||dd�|j	t||dd�|j	t||dd�|j	t||dd�dD]4}
|�	tt|	|
|d�|�	tt|	|
|d�tjdk�r1|�	tt|	|
|�|�	tt|	|
|d�q�tjdk�r]|�	tt|	d�|d�|�	tt|	d�|d�|�	tt|	d�|d�tjdk�r�|�	tt|	d�d�|�	tt|	d�d�|�	tt|	d�d�|�	tt|	d�d�|�	tt|	d�d�|�	tt|	d�d�dD]5}
|�	tt|	|
d�|�	tt|	|
d�|�	tt|	|
gd ��|�r�|�	tt|	|
d!�|�	tt|	|
d"��q�|�	ttd#t��|�	ttd$t��|�}|�	t|d%�||�dS)&Nr�i!rrCrr*rxr�i�pr�r�r�l�N�Zoiʚ;r�rJrVrZ)rJr�r�r�)r(rJrMr�r\�win32r�r�r�i���?rhi9�r�r���zwith localcontext("xyz"): passz-with localcontext(context=getcontext()): passrv)r�r+r�r�r�ryr�r0rFr^r�rC�__setitem__r*r�__delitem__r%r�rirPr��platformr �execr�)r�r+r�r�r�ryr�r0�HAVE_CONFIG_64r|r�int_max�gt_max_emaxr%�
saved_contextrrr�test_c_context_errors�s�

��������
��zCWhitebox.test_c_context_errorscCs�|�tjtj�|�tjtj�|�tjtj�|�tjtj�|�tjtj�|�tjtj�|�tj	tj	�|�tj
tj
�dSr)r�r�r�rWr�r�r�r�r�r,r�r�rrr�test_rounding_strings_internedTsz(CWhitebox.test_rounding_strings_internedc	Cs�tj}tj}tj}tj}tj}tj}tjdk}|�}|rdnd}	|�t	t
|d|	d�|�t	t
|d|	d�tjdkrQ|�t
t
|d|	�|�t
t
|d|	d�dD]3}
|�t	t
||
|	d�|�t	t
||
|	d�tjdkr�|�tt
||
|	�|�tt
||
|	d�qS|�t
t
|dd	�|�t
t
|dd�|�tt
|dgd
��|r�|�t
t
|dd�|�t
t
|dd�dD]}
|�tt
||
d
�|�tt
||
d�q�dS)Nr�r�r��_allcrr�r�r2)rrrhr�r3r4r�r)r�r+r�r�ryr�r0rFr^rPr�r�r7rr%)r�r+r�r�ryr�r0r9r|r:r%rrr�test_c_context_errors_extra_s>


��z%CWhitebox.test_c_context_errors_extracCstj}tj}tj}tj}tj}tj}|��}d|_t	|_
d|_d|_d|_
d|_|�|jd�|�|j
t	�|�|jd�|�|jd�|�|j
d�|�|jd�|�|��d�|�|��d�tjdkr�|�d	�|�d	�|�d
�|�|jd	�|�|jd	�|�|jd
�dSdS)Nri�iH�r�ri'�i�r�r�r�)r�r�r�r�r�r�r�rir(r�r)rMrJr�r\r3�Etiny�EtoprFr�r�r�)r�r�r�r�r�r�r�r|rrr�test_c_valid_context�s:



�zCWhitebox.test_c_valid_contextcCs4tj}|��}|�|jd�d|_|�|jd�dS)Nr�r)r�r�rir3r?)r�r�r|rrr�test_c_valid_context_extra�s
z$CWhitebox.test_c_valid_context_extracCstj}tj}tj}tj}tj}tjdkrdnd}|��\}d|j|<|�||d�j	|d�|�||d�j	|�|�||d�j	t
|d��|�tj|d�j	t
|d��|�t|d�j	|d�|�t|d�j	|d�Wd�dS1szwYdS)	Nr�r�r�Tr$r�r�r�)r�r�r�ryr�rrFr*r^r�rrP)r�r�r�ryr�rr:r|rrr�test_c_round�s6
��
����"�zCWhitebox.test_c_roundcCs�tj}tjdk}|�t|d�jdgd�|�t|d�jdd�|�t|d�jg�|�t|d�jd�|r7dnd}|�t|d�jd	|�dS)
Nr�r�z=10.10r'z<>=10.10r�r�r@z=%d.1)r�r�rFr^r%rCr)r�r�r9�maxsizerrr�
test_c_format�s
�zCWhitebox.test_c_formatcCsftj}tj}tj}|d�}|�|��d�|�t|jd�|�t|jdd�|�t|jd�|�|��d�|�t|jd�|�t|jdd�|�t|jd�|�|�	�d�|�t|j	d�|�t|j	dd�|�t|j	d�|��6}|d��t
�}|�||d��|d��	t
�}|�||d��d|j|<|�||d�j	t
�Wd�dS1s�wYdS)Nr�r�rz99999999999999999999999999.9�100000000000000000000000000Tz999.9)r�r�r�ryr3r�r^r%r�r�r�r*)r�r�r�ryrr|rrr�test_c_integral�s0
"�zCWhitebox.test_c_integralc	CsTtj}tj}tj}tj}tj}|�|d���d�|�t	t
|d�dd�|�t	|d�jdd�|�t	|d�jd	dd�|�t	|d
�j
|d�g�|�t	|d
�j
|d�|��|�t	|d
�j
|d�d�|�t	|d
�j
|d�td
�|���}|��|�t	|j|d�dd�|�t	|jd�|�t	|jd�|�t	|jdddd�|�t	|jdd	dd�|�t|�|d���d�|�|��d�d|j|<|�||d�jd�|�||jdd�|�|j|�|��d|j|<|�||d�jd�|�||jdd�|�|j|�d|j|<d|_|�|t
|d
�dd�Wd�dS1�s#wYdS)Nz9.99e10z99.9E+9r�r�rr'rrxr�r@z	1e-100000r�rfr�r��200Tri�)r�r�r�r�r�ryr3r�r^r%r�rbr�r�r�r�rpr�rvr�r.r�r*r�r!rCr"r()r�r�r�r�r�ryr|rrr�test_c_funcs�s^����


$�zCWhitebox.test_c_funcscCs�tj}tj}|d�}dD]}t||�}|jt|dd�|jt|ddd�qdD]}t||�}|jt|dd�|jt|ddd�q'|jt|jdgd�|jt|jigd�|�t|jgg�|jt|jdgd�|jt|jigd�|�t|jgg�|jt|jdgd�|jt|jigd�|�t|jgg�|jt|j	dddd�|jt|j	ddddd�|jt|j
dgdd�|jt|j
dgdd	�|�t|j
dgg�|�}|jt|jdddd
�|jt|jdddd
�|jt|jdddd
�dS)N�10001111111)
rLr~r�rr�r�rtr�r�r�rbr�r�rru)r�rdr^r�r4r�r3r�r�r�r�r�r~r�r�r�)�mod)r�r�r+r r^r%r�r�r�r�r�r:)r�r�r+rr%�funcr|rrr�test_va_args_exceptions9s:

z!CWhitebox.test_va_args_exceptionscCsL|�tjjtjtjBtjBtjBtjB�|�tj	jtjtjBtjB�dSr)
r3r�r�rr$rr r"r6r�r�rrr�test_c_context_templateses����z"CWhitebox.test_c_context_templatesc&stj}tj}tj}tj}tj}tj}tj}tj}tj	}	tj
}
tj}tj}tj
}
tj}�fdd�}|��}��||jv�|��|j��D]}d|j|<qE|j��D]}��|�qR|��|j��D]	\}}��|�qc��|j�|����|j�d�d���|j�dd�d���t|jjddd���t|j�t|j��t�|j�}t�|j�}|j� �}|�!�||_"��|j|�|��|
|_#��|j|�|�!�|j��}d||<||_|||j�|��|j��}d||<||_|||j�|tj|	tj$|
tj%|tj&|tj'|tj(|tj)|tj*|tji	}tj+tj,tj-tj.tj
tj/tj0g}tt1t�}t2|�D]�}t2|�D]�}t3D]�}t4�5t1t|�}t4�5t1t|�}t4�6dd�}t4�6d	d
�}t4�6d
d�}t4�6d
d�} t4�6d
d�}!t4�6d
d�}"||||||!| t7|�t7|�d�}��|j8|���|j9|���|j:|���|j;|���|j<|!���|j=| �d
}#|D]	}$|#||$O}#�q���|j"|#�d
}#|D]	}$|#||$O}#�qLj�|j#|#��q>�q:�q4|D]}%|%|_"��|j"|@�|||j��q�|D]}%|%|_#��|j#|@�|||j��q�dS)
Ncs4|D]}||kr��||�q��||�qdSr)r!r�)r|�signal_dictr�r�rr�assertIsExclusivelySet�s
�z<CWhitebox.test_c_signal_dict.<locals>.assertIsExclusivelySetTrrxr�r�r'i���rr�r�)>r�r+r�r�r�r�r�r�r�r�r�r�r6rr$rir!r*r�r��valuesr�r�rCr
r�r3r^r%r�r��	getsizeofr�r"rrrrr!r"r rrrrrrrrr,rkr�r!�sampler�r�r(r)rJrMr�r\)&r�r+r�r�r�r�r�r�r�r�r�r�r6rr$rRr|rpr�rr�
IntSignals�IntCond�limr�r�rRrCr*r(rrr\r��crr�rr'rr�r�test_c_signal_dictqs�


��

����zCWhitebox.test_c_signal_dictcs�tj�zddlm}Wnty|�d�Ynwdd�}d�fdd�	}d	|gd
��d	d�}d|gd
��d	d�}d|gd
��dd�}|dkrP|�t|d|d�|�t|d|d�|�t|d|d�dS)NrrFrHcSsd�dd�|D��S)Nr�cSrIrrJrrrrrrLzJCWhitebox.test_invalid_override.<locals>.make_grouping.<locals>.<listcomp>)rMrNrrrrP�sz6CWhitebox.test_invalid_override.<locals>.make_groupingrlcs�|��||�Sr)rCrRrrrrU�z0CWhitebox.test_invalid_override.<locals>.get_fmtr2)�r\rrX�xxxxxrWrV�yyyyy�rdrrn)r�r�rorGrprqr^r)r�rGrPrU�invalid_grouping�invalid_dot�invalid_seprrr�test_invalid_override�s4�
�
�
�
�zCWhitebox.test_invalid_overridecCs�tj}tj}tj}|��D}d|j|<dtj}|�|||�dtjd}|�|||�dtj}|�|||�dtjd}|�|||�Wd�dS1sSwYdS)NTz0e%dr�z1e%d)r�r�ryr�r*r�rFr^r�rrr�test_exact_conversions


"�zCWhitebox.test_exact_conversioncCs�tj}tj}tj}tj}tj}|���}d|j|<d|j|<d|j|<ddtjf}|�	t
|�|��d�|�|||�ddtjf}|�||j|�|�|||�ddtjdf}|�	t
|�|��d�|�|||�ddtjdf}|�||j|�|�|||�ddtjdf}|�t
|j|�|�t
||�ddtjdf}|�t
|j|�|�t
||�d}|�	t
||��d	�d
}|�	t
||��d	�d}|�	t
||��d�Wd�dS1s�wYdS)
NTr�rz
-0E+999999)rr�r�z-0E-1000007r�rbr()r�r�ra)r�r�raz-sNaN1)r�r�ryr�r�r�r*r�rFr3r.r�r^rP)r�r�ryr�r�r�r|rrrr�test_from_tuple4sD


"�zCWhitebox.test_from_tuplecCs�tj}tjdk}|�|d���d�|r.|dd���}|dd���}|�||d�dS|dd���}|dd���}|�||d	�dS)
Nr�rr�r�i�r�����r�)r�r�rFr��
__sizeof__r3)r�r�r9rrxrrr�test_sizeofds
zCWhitebox.test_sizeofcsztj}Gdd�dt�}Gdd�dt�}Gdd�dt��G�fdd�dt�}|||fD]}|�|�|d	��|�d	��q*dS)
Nc@seZdZdd�Zdd�ZdS)z<CWhitebox.test_internal_use_of_overridden_methods.<locals>.XcSr.�Nr�rr�rrrrgwr/zMCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.as_integer_ratiocS�|Srrr�rrrr�yr/zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.X.__abs__N�r�rNrOrgr�rrrr�Xvsrmc@r})z<CWhitebox.test_internal_use_of_overridden_methods.<locals>.YcS�
dgdS�Nr�r�rr�rrrr�}r�zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Y.__abs__N)r�rNrOr�rrrr�Y|r�rpc@r})z<CWhitebox.test_internal_use_of_overridden_methods.<locals>.IcSrnrorr�rrr�
bit_length�r�zGCWhitebox.test_internal_use_of_overridden_methods.<locals>.I.bit_lengthN)r�rNrOrqrrrr�I�r�rrcs eZdZ�fdd�Zdd�ZdS)z<CWhitebox.test_internal_use_of_overridden_methods.<locals>.Zcs�d��d�fSrjrr��rrrrrg�r[zMCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.as_integer_ratiocSrkrrr�rrrr��r/zDCWhitebox.test_internal_use_of_overridden_methods.<locals>.Z.__abs__Nrlrrsrr�Z�srtgfffffFY@)r�r�r�rr3r�)r�r�rmrprtr#rrsr�'test_internal_use_of_overridden_methodsrs��z1CWhitebox.test_internal_use_of_overridden_methods�aixzEAIX: default ulimit: test is flaky because of extreme over-allocationT)�address�memoryzVASAN/MSAN sanitizer defaults to crashing instead of returning NULL for malloc failure.cCsZgd�}tj}tj}tj}|tjtjtjd�}||���|�|d���d�|�|d��	�d�|�|d��
�d�|�|d��
�d�|�|dd��
�d�|�|d	���d
�|�|d���d�|�|d���|d
��|�t
|d�d�d�|�|d�dd�|�|d�dd�|�|d�d|d��Wd�dS1s�wYdS)N)	rtr�r�r^r�r�r�r�r�)r(rJrMrr�r�r�r���l�9V�r��40E9z2.0E+5r�)r�r�i�rhz0.0025)r�r�r+ryrFrr�r3rLrr�r�r�r�)r��MaxContextSkipr�r+ry�
maxcontextrrr�test_maxcontext_exact_arith�s&
"�z%CWhitebox.test_maxcontext_exact_arithN)!r�rNrOrPr-r.r0r1r=r>r)r@rCrDrErGrIrKrOrPrZrcrdrerirur��skipIfr�r7rrr~rrrrr*�sFe
*&
;,

%0��r*ztest requires C versionc@r�)�
SignatureTestzFunction signaturesc
Cs�tt�D]f}|�d�rqtt|�}tt|�}|dks#|dks#t�|�rjt�|�}t�|�}t|j	�
��}dd�|j	�
�D�}|j||d|d�dd�|j	��D�}d	d�|j	�
�D�}	|d
krj|j||	d|d�qdS)Nr�r�r+cSsg|]	}|�d�s|�qS)r�r�rrrrr�s
�z5SignatureTest.test_inspect_module.<locals>.<listcomp>�parameter name mismatch in %s��msgcS�g|]}|j�qSr��kindrrrrr��cSs$g|]}|d�d�s|dj�qS)rr�r�)rr�rrrrr�s�r0�parameter kind mismatch in %s)r�rWrr r��inspect�
isfunction�	signaturer��
parametersr�r3rSr�)
r�r%�p_func�c_func�p_sig�c_sig�c_names�p_names�c_kind�p_kindrrr�test_inspect_module�s.


�

����z!SignatureTest.test_inspect_modulecstjj�tjj�tt�d�t�d�t�d�t�d�t�d�t�d�t�d�t�d�t�d�t�d�ddtjt��d�tt�d�t�d�t�d�t�d�t�d�t�d�t�d�ddtjt��d�i����fdd��dd	�������fd
d�}|d�|d
�dS)Nr�r�r�)r�r�rrxr�r�r�r|rLr9�numr�r)r$)r�r�r�r�r|rLr9r�r�r)r$csng}i}|j��D])\}}|dkrq	|j�kr!|��||�q	|j�kr/�||||<q	td��||fS)Nr�zunexpected parameter kind)r�r�r�r+r	)�moduler�r	�kwargs�name�param)�POS�POS_KWD�pdictrr�mkargs�s


z0SignatureTest.test_inspect_types.<locals>.mkargscSs(|dkrdS|dkrdS|dkrdS|S)zwThe C Context docstrings use 'x' in order to prevent confusion
               with the article 'a' in the descriptions.rr�rxr�r�r|r)rrrr�trsz,SignatureTest.test_inspect_types.<locals>.trc	s�tt|�}tt|�}t|�D]�}|�d�rqt||�}t||�}t�|�r�t�|�}t�|�}t|j	�
��}�fdd�|j	�
�D�}	�j|	|d|d�dd�|j	��D�}
dd�|j	��D�}��
|
d����
|d��|d	kr��j|d
d�|
d
d�d|d�n�jt|�t|
�d|d��t|�\}}
zt|d�|�|i|
��Wnty�td
|||
f��w�t|�\}}
zt|d�|�|i|
��Wqty�td
|||
f��wqdS)Nr�csg|]}�|��qSrrr)r�rrrrLzBSignatureTest.test_inspect_types.<locals>.doit.<locals>.<listcomp>r�r�cSr�rr�rrrrr r�cSr�rr�rrrrr!r�rr�r�r�r'zinvalid signature for %s: %s %s)r rWr�r�rr�r�r�r�r�r�r3rSr�r�r�r	)�ty�p_type�c_typer%r�r�r�r�r�r�r�r�r	�kwds)r�r�r�r�r�rrr�
sP







�������z.SignatureTest.test_inspect_types.<locals>.doitr�r+)	r��_ParameterKind�POSITIONAL_ONLY�POSITIONAL_OR_KEYWORDr�r�r�r�rW)r�r�r)r�r�r�r�r�r�r�test_inspect_types�sF
�
��
/z SignatureTest.test_inspect_typesN)r�rNrOrPr�r�rrrrr��sr�r�r�c
Cs�tt�tt�|dur|ntd�a|a|durt}nttg}t	�
t�D]6}d|vs/|�d�r0q$|�
d�\}}|dur@||vr@q$|fdd�}ttd||�ttd||�~~~~q$zVt|�|dur�dd	lm}	tjd}
tr}ttjd<tt||	d
�ttjd<tt|�|
tjd<Wtr�t�tt�t�tt�ts�t�dt�ttjdur�td��dStr�t�tt�t�tt�ts�t�dt�ttjdur�td��w)
z� Execute the tests.

    Runs all arithmetic tests if arith is True or if the "decimal" resource
    is enabled in regrtest.py
    Nrz.decTestrVcSs|�t|�Sr)r��	directory)r�r�rrrr
wsztest_main.<locals>.<lambda>�test_r)�IGNORE_EXCEPTION_DETAIL)�optionflagsz*C tests skipped: no module named _decimal.zGInternal error: unbalanced number of changes to sys.modules['decimal'].)r3r�rWrr r#�	all_testsrRrU�os�listdirr�rrr�r�doctestr�r�r�rr0�ORIGINAL_CONTEXT�warnings�warn�UserWarning�orig_sys_decimalr	)�arith�verbose�
todo_tests�debug�test_classes�filename�head�tail�testerr�r�rrr�	test_main\s\





�����
r�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�r�r�r�)NNNN)�rPrOr�r�r�r�r�rir�r�ro�test.supportrrrrrrrr	r
rr�test.support.import_helperr
rr!r�r�r7r�rWrr��
cfractionsr��
pfractionsrrhr�rCr�r/r�r�r�r�r�r�r�r�r�r,r&r�r�r�r�r�r�r,r�r�r�r3�TESTDATADIRr��argvr��__file__�path�dirname�curdir�testdir�sepr��isdirr�r*�hasattr�EXTRA_FUNCTIONALITY�
skipUnlessr)r�skip_if_extra_functionality�TestCaser7rRrUrXr�r�r�rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rJrKrLrgrhrir�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr*r�r��insertr��optparse�OptionParserr��
add_option�
parse_args�optr	�skipr�rrrr�<module>s�	$



������	�
��eYM)',-6Xo~
P>mU
����������������	�	�
�
�����
�
���������

7
�

Youez - 2016 - github.com/yon3zu
LinuXploit