Your IP : 216.73.217.129


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_long.cpython-35.opt-1.pyc



��Yf���@s�ddlZddlmZddlZddlZddlZddlZejjZ	de	Z
e
dZdZdZ
ddde
e
d?ddgZd	Zx3ede	�D]!Zejed�ed>Zq�W[ed
d�eD�dd�eD�7ZejjZejjZejjZejjZdedeedZd
d�Zdd�ZGdd�dej�Z e!dkr�ej"�dS)�N)�support���F�lUU�*UU�*l�*UU�*UU
�cCsg|]
}|�qS�r)�.0�xrr�3/opt/alt/python35/lib64/python3.5/test/test_long.py�
<listcomp>s	rcCsg|]
}|�qSrr)r	r
rrrrs	cCs�tjjd}tjj|}d|>}dddddd	ddg}|dkrXdS|dkrpt|�S|j�|}|dkr�||>n||?t|d
|>@�B}|||d@7}|||k|kr�td��tj	t
|�|�S)z9
    Correctly-rounded integer-to-float conversion.

    rrrg�z%integer too large to convert to float������rr)�sys�
float_info�mant_dig�max_exp�int_to_float�
bit_length�bool�
OverflowError�math�ldexp�float)�nZ	PRECISIONZ	SHIFT_MAXZQ_MAXZROUND_HALF_TO_EVEN_CORRECTION�shift�qrrrr's
4
rcCsc||Adk}t|�t|�}}|s;td��|t|krWtd��|j�|j�}|dkr�|d||ks�|dkr�|d||kr�|d7}t|t�t}|t|d�>|t|d�>}}t||�\}}d||ks8d||krB|ddkrB|d7}t	j
||�}|r_|S|S)z-Correctly-rounded true division for integers.rzdivision by zeroz)int/int too large to represent as a floatrr)�abs�ZeroDivisionError�DBL_MIN_OVERFLOWrr�max�DBL_MIN_EXP�DBL_MANT_DIG�divmodrr)�a�bZnegative�d�expr�r�resultrrr�truedivUs A
(0
r+c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zejdd ��Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.d/�Zejd0d1��Zd2d3�Zd4d5�Zd6d7�Zd8d9�Z d:d;�Z!d<d=�Z"d>d?�Z#d@S)A�LongTestcCs3|j|d�|t}|td}d}d}ttj�td�dB}x�||kr�|d?d}t|||�}|jd|ko�tkn�||}||>}|d@r�|d|>dB}ttj�td�}qUW|j||ko|kn�tj�dkr/|}|S)Nrrrg�?)Z
assertGreater�SHIFT�int�random�min�
assertTrue)�self�ndigitsZnbits_hiZnbits_lo�answerZnbitsr)�bitsrrr�getran{s&
#


#zLongTest.getrancCsTd}x.t|�D] }|t>tjdt�B}qWtj�dkrP|}|S)Nrg�?)�ranger-r/Zrandint�MASK)r3r4�irrr�getran2�szLongTest.getran2c
Cs|j}|jd|d|���t||�\}}||||}}||||}}	|||	d�|||d�|||d�|||||d�|dkr�|jd|ko�|knd�n&|j||ko�dknd�WdQRXdS)	Nr
�yzmultiplication does not commutez(divmod returns different quotient than /z#divmod returns different mod than %zx != q*y + r after divmodrzbad mod from divmod)�assertEqual�subTestr$r1)
r2r
r;�eqrr)Zq2Zr2ZpabZpbarrr�check_division�s	)zLongTest.check_divisioncCs[ttdtd��ttttd��}|jtd�xS|D]K}|j|�}x3|D]+}|j|�p|d}|j||�qdWqHW|jdd�|jdd�|jdd	�|jd
d�|jdd
�|jdd�|jdd�|jdd�|jdd�|jdd�|jdd�|jdd�dS)Nr��l!Us/w��3alZW��3al+Q@{�d��B]Ol�Nl�O�Ol�Nl�t�e�o%g�q�Cgx<l�&�ghrsGlQ5��K�4+�o�-bklC�4+�o�-bkl��.#w�flD�&I-�Xl�Z��nSu9bl�c�v��
��<�Ilrd�FBu�'�pl�PhbIi|�$l1�m�{Wqi���8l�s~5^Fi�y�+l'H�
<{�Cl`<{�Cl�ED_5(�Nl�o�ybal=2zz6l�9�t�m)�listr7�	MAXDIGITS�KARATSUBA_CUTOFF�appendr6r?)r2�digits�lenxr
�lenyr;rrr�
test_division�s4

						zLongTest.test_divisionc	Csttdd��ttttd��}|jtdtdg�dd�|D�}x�|D]�}d|>d}x�|D]}||kr�q||jd|d|��Od|>d}||}d||>d|>d|>d}|j||�WdQRXq|WqaWdS)	Nr��
�dcSsg|]}|t�qSr)r-)r	�digitrrrr�s	z+LongTest.test_karatsuba.<locals>.<listcomp>�abits�bbits)rBr7rD�extendr=r<)	r2rFr5rNr%rOr&r
r;rrr�test_karatsuba�s


zLongTest.test_karatsubacCs�|j}|jd|��
||d@d�||dB|�||dA|�||d@|�||dBd	�||d
A|�|||�|||@|�|||B|�|||Ad�|||@d�|||Bd�|||Ad�||d|�|||d�WdQRXx�tdt�D]�}d|}|jd|d|d|��y|||>|?|�|||||?�|||||>�|||@||?|>�|||@||d@�WdQRXq9WdS)
Nr
rrrr�p2rrrrrr)r<r=r7r-)r2r
r>rrRrrr�check_bitop_identities_1�s2	
z!LongTest.check_bitop_identities_1cCs
|j}|jd|d|���|||@||@�|||B||B�|||A||A�|||A|A|�|||@||B�|||B||@�|||A||B||@@�|||A||@||@B�|||A||B||B@�WdQRXdS)Nr
r;)r<r=)r2r
r;r>rrr�check_bitop_identities_2s	z!LongTest.check_bitop_identities_2cCs�|j}|jd|d|d|���|||@|@|||@@�|||B|B|||BB�|||A|A|||AA�||||B@||@||@B�||||@B||B||B@�WdQRXdS)Nr
r;�z)r<r=)r2r
r;rUr>rrr�check_bitop_identities_3s	!z!LongTest.check_bitop_identities_3cCs�xtD]}|j|�qWtdtd�}x~|D]v}|j|�}|j|�xQ|D]I}|j|�}|j||�|j|||j||d��qaWq8WdS)Nrr)�specialrSr7rCr6rTrV)r2r
rFrGrHr;rrr�test_bitop_identitiess



zLongTest.test_bitop_identitiesc	Cs�g}d}|dkr&d|}}x2|rZt||�\}}|jt|��q)W|j�|pqdg}dd|�dddddd	d
di|d	jdd
�|D��S)Nrr�-rZ0b�Z0orK��Z0xcss|]}d|VqdS)Z0123456789abcdefNr)r	r9rrr�	<genexpr>1sz'LongTest.slow_format.<locals>.<genexpr>)r$rEr.�reverse�join)r2r
�baserF�signr)rrr�slow_format%s	
-zLongTest.slow_formatcCs�x�dtfdtfdtfdtfdtffD]�\}}||�}|jd|d|j��'|j||�}|j||�WdQRX|jd|��|jt	|d�|�WdQRXq4WdS)	NrrZrKr\r
�mapper�gotr)
�bin�oct�str�repr�hexr=�__name__rbr<r.)r2r
r`rcrd�expectedrrr�check_format_13s@zLongTest.check_format_1cCssxtD]}|j|�qWxNtd�D]@}x7tdtd�D]"}|j|�}|j|�qEWq+WdS)NrKr)rWrlr7rCr6)r2r
r9rGrrr�test_format<s
zLongTest.test_formatc
Cs�dd,d-fdddd.fg}x�|D]�\}}x�d/D]y}xpd0D]h}|||}|}|dkr�|tk	r�|}y|jt|�|�WqKtk
r�YqKXqKWq>Wq+W|jttd�|jttd
�|jttd�|jttd�|jttdd�|jttdd�|jtdd�d�|jtdd�d�|jtdd�d�|jtdd�d�|jtdd�d�|jtdd�d�|jtdd�d�|jtd d�d�|jtdd�d�|jtd!d�d�|jtd"d�d�|jtd#d�d�|jttd$d�|jttd%d�d1d3d4d6d9d;d<d>dAdBdDg}x$|D]}	|jttd+|	�q�WdS)EN�1�0�rKrLr[�+rY� �	�  		  Z123LZ123lZ0Lz-37LZ0x32Lr\Z1L���+Z000rZ0o123�SZ0x123i#Z0b100rz	 0O123   z 0X123  z 0B100 z+0z-0Z00Z08z-012395i�r�r�?Z42Z00000000000000000000l F�x:^VlDG��d�r���Y�|g�O�s&YR5I)r[rqrY)r[rrrsrtis���li���lli�li�l����ll����lll����ll����l����lll����)�
ValueErrorr<r.�assertRaises)
r2ZLL�s�vra�prefixZssZvvZ
invalid_basesr`rrr�	test_longDsN




zLongTest.test_longcCsYGdd�d�}|jtt|��Gdd�d�}|jt|��d�dS)Nc@seZdZdd�ZdS)z*LongTest.test_conversion.<locals>.JustLongcSsdS)N�*r)r2rrr�__long__}sz3LongTest.test_conversion.<locals>.JustLong.__long__N)rj�
__module__�__qualname__r�rrrr�JustLong{sr�c@s(eZdZdd�Zdd�ZdS)z+LongTest.test_conversion.<locals>.LongTrunccSsdS)Nr�r)r2rrrr��sz4LongTest.test_conversion.<locals>.LongTrunc.__long__cSsdS)Ni�r)r2rrr�	__trunc__�sz5LongTest.test_conversion.<locals>.LongTrunc.__trunc__N)rjr�r�r�r�rrrr�	LongTrunc�sr�i�)r|�	TypeErrorr.r<)r2r�r�rrr�test_conversionyszLongTest.test_conversioncCs�yt|�}Wntk
r*d}YnXyt|�}Wntk
rUd}YnXdj|||�}|j|||�dS)N�overflowzAError in conversion of integer {} to float.  Got {}, expected {}.)rrr�formatr<)r2rZactualrk�msgrrr�check_float_conversion�s

zLongTest.check_float_conversionc
Csddddddddd d"d#d%g}x<|D]4}|jt|�|�|jt|�|�q1Wxtd&d'd(d)d*d+d,gD]W\}}xHtd�D]:}|jttd|d-|��d|d.|�q�Wq�Wx�d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>gD]W\}}xHtd�D]:}|jttd|d?|��d|d@|�q0WqWtt�}dt}||d}|jt|�t�|jt|d�t�|jt|d�t�|jtt|�|jtd|�t�|jtt|�|jtt|d�|jtt|�|jtt|d�|jttd|d�|jttd|�|jtt||�x�td�D]z}d|dBd}d|dD}|jtt|��|�d|dF}d|dG}|jtt|��|�q�W|d||d|d||d|d||dd|dd|||g}|j|�xJtdHd�D]9}x0tdId�D]}|j	d|d|�q�Wq�Wx)|D]!}	|j
|	�|j
|	�q�WdS)JNrrr�5rA�6rrJ�r
rZr�	rK���
r@r\rL�ll����ll����ll����lllll����ll����lll)rr)rr)rAr)rr)rJr)r�r�)r
rZll)rr)rr)rr)rAr)rr)rJr)r�rZ)r
rZ)rZrZ)r�rZ)rKrZ)r�r�)r�r�)r�r�)r@r\)rr\lllllllll���i����)r<rr7r.�DBL_MAX�DBL_MAX_EXPr|rrPrEr�)
r2Zexact_valuesr
r;�pZint_dbl_maxZ	top_powerZhalfwayZtest_values�valuerrr�test_float_conversion�sl		
(<<
 
!

zLongTest.test_float_conversionc$Csx*d3D]"}|jtt|��|�qWdd}d4}|}d|d	|d
|dti}x�dd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/g$D]}|jtt||�q�W|jt|�t|�d0�dS)5N�@��?�Z12345�xri0u�huge�mhuge�shugerzfloat(huge)zfloat(mhuge)z
complex(huge)zcomplex(mhuge)zcomplex(huge, 1)zcomplex(mhuge, 1)zcomplex(1, huge)zcomplex(1, mhuge)z	1. + hugez	huge + 1.z
1. + mhugez
mhuge + 1.z	1. - hugez	huge - 1.z
1. - mhugez
mhuge - 1.z	1. * hugez	huge * 1.z
1. * mhugez
mhuge * 1.z
1. // hugez
huge // 1.z1. // mhugezmhuge // 1.z	1. / hugez	huge / 1.z
1. / mhugez
mhuge / 1.z
1. ** hugez
huge ** 1.z1. ** mhugezmhuge ** 1.zmath.sin(huge)zmath.sin(mhuge)zmath.sqrt(huge)zmath.sqrt(mhuge)z(float(shuge) should not equal int(shuge)����)r�r�r�r�r�l�)r<rr.rr|r�evalZassertNotEqual)r2r
r�r�r��	namespace�testrrr�test_float_overflow�s*
 
	zLongTest.test_float_overflowcCs�tjtj�}xyttd��dddgD]X}d|}tj|�}|j||�||}tj|�}|j||�q2Wx:dD]2}|jttj|�|jttj|�q�WdS)NrKrLi�i'rrrl��e���r)r�rr)	r�log10�erBr7ZassertAlmostEqual�logr|r{)r2ZLOG10Er(r�r�rkr�Zbadrrr�	test_logs�s&


zLongTest.test_logsc

sH|j}G�fdd�d��ddddddd	g}x]dD]U}|j|d|d||d|dt|d�t|�t|d�g�qDW|jdddtjttj�g�td	�}|jdddd|d||dg�|jdd�|D��x,|D]$}�|�}x|D]}�|�}||k||k}|jd|d|d|���||k||k}	|||	�|||k|dk�|||k|dk�|||k|dk�|||k|dk�|||k|dk�|||k|dk�WdQRXq5WqWdS)NcsjeZdZdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)z)LongTest.test_mixed_compares.<locals>.Ratc	Sst|t�r$||_d|_n�t|t�r�tjt|��\}}d}d}xJ|r�tj||�}t|�}||>|B}||8}||8}q]W|dkr�||>}d}n|}d|>}|dkr�|}||_||_nt	d|��dS)Nr�rzcan't deal with %r)
�
isinstancer.rr'rrZfrexprrr�)	r2r��fr�ZCHUNK�toprMrr'rrr�__init__s0		

			z2LongTest.test_mixed_compares.<locals>.Rat.__init__csPt|��s�|�}|j|j|j|j}}||k||kS)N)r�rr')r2�otherr
r;)�Ratrr�_cmp__Bs!z0LongTest.test_mixed_compares.<locals>.Rat._cmp__cSs|j|�dkS)Nr)r�)r2r�rrr�__eq__Gsz0LongTest.test_mixed_compares.<locals>.Rat.__eq__cSs|j|�dkS)Nr)r�)r2r�rrr�__ge__Isz0LongTest.test_mixed_compares.<locals>.Rat.__ge__cSs|j|�dkS)Nr)r�)r2r�rrr�__gt__Ksz0LongTest.test_mixed_compares.<locals>.Rat.__gt__cSs|j|�dkS)Nr)r�)r2r�rrr�__le__Msz0LongTest.test_mixed_compares.<locals>.Rat.__le__cSs|j|�dkS)Nr)r�)r2r�rrr�__lt__Osz0LongTest.test_mixed_compares.<locals>.Rat.__lt__N)
rjr�r�r�r�r�r�r�r�r�r)r�rrr�s(r�rg����MbP?g�G�z��?g�?g�?g@��x�DgZb���tig@�0�2r�g333333�?rri NcSsg|]
}|�qSrr)r	r
rrrr]s	z0LongTest.test_mixed_compares.<locals>.<listcomp>r
r;�Rcmp��B�C�@C)r�r�r�l6 )r<rPr.r�maxsizerr=)
r2r>Zcases�tr
ZRxr;ZRyr�Zxycmpr)r�r�test_mixed_comparess0	9
%.(*


zLongTest.test_mixed_comparescCs|jtdd�d�|jtdd�d�|jtdd�d�|jtd8d�d�|jtdd�d	�|jtd9d�d
�|jtdd�d�|jtd:d�d
�|jtdd
�d	�|jtd;d
�d
�|jtdd�d�|jtd<d�d�|jtdd�d�|jtdd�d�|jtdd�d�|jtd=d�d�|jtdd�d�|jtd>d�d�|jtdd�d�|jtd?d�d�|jtd@d�d�|jtdAd�d�|jttdd�d�d�|jttdd�d�d�|jttdd�d�d�|jttdd�d�d�|jtdd�d �|jtdBd�d!�|jtdd�d"�|jtdCd�d#�|jtdd$�d"�|jtdDd$�d#�|jtdd%�d&�|jtdEd%�d#�|jtdd'�d(�|jtdFd'�d#�|jttdd)�|jttdd*�x�d+d,�ttd-�td.�d�D�d/d,�ttd0�td1�d�D�D]�}|d2kr-|jttd3|�|jttd|�|jttdG|�|jttdH|�|jttdJ|�q-Wx\d6D]T}xKd3ddKd5dLd7dMgD].}|jt||�tt|�|��q�Wq�WdS)NNi�[r'Z	123456789rrYrnz-1z-3z  1z -1z+3z +1z 3rrz 1rAr
�3�Xi�Z4d2z-4d2Z8xz     4d2z    -4d2Zber\ZBEz-bez-BEr&Z11z-11Z10011010010z-10011010010z-bz bz 10011010010z+bz+10011010010z1.3z+ccSsg|]}t|��qSr)�chr)r	r
rrrr�s	z+LongTest.test__format__.<locals>.<listcomp>r%rUcSsg|]}t|��qSr)r�)r	r
rrrr�s	�A�ZzbcdoxXeEfFgGn%rrrLzeEfFgG%i��Irrrrri.���i.���i.������r�r�i.���i.���i.���i.���rlll����ri����i.�i�)r<r�r.r|r{r7�ordr)r2Zformat_specr�rrr�test__format__msd""##,1
"zLongTest.test__format__cCsO|jtttd��|jtttd��|jtttd��dS)N�infz-inf�nan)r|rr.rr{)r2rrr�test_nan_inf�szLongTest.test_nan_infcCs(d}|}|j||d�|j||d�|j||d�|j||d�|jd|d�|jd|d�|jd|d�|jd|d�|jd||d?|d�|jd||d?|d�|jd||d?|d�|jd||d?|d �|j||d>d�|jd||d�d	|d
|i}x<ddd
dddddgD]}|jtt||�q�WxFddddddgD],}t||�}|j|dd|�q�Wx*ddgD]}|jtt||�qWdS)!Nri@�g�?gi�gԄ@g�?i@Br�r�zfloat(huge)zfloat(mhuge)zhuge / 1zhuge / 2z	huge / -1z	huge / -2zmhuge / 100zmhuge / 200z1 / hugez2 / hugez	-1 / hugez	-2 / hugez100 / mhugez200 / mhugezexpected underflow to 0 from %rzhuge / 0z	mhuge / 0lk
g�g�gԄ�gԄ�)r<r|rr�r)r2r�r�r�r�Z	underflowr*Zzerorrr�test_true_division�s8    	zLongTest.test_true_divisionTcCs�|r/tt|�t|��dtkr/dSytt||��}Wn/tk
rbd}Yntk
ryd}YnXyt||�}Wn/tk
r�d}Yntk
r�d}YnX|j||dj||||��dS)z�Verify that the result of a/b is correctly rounded, by
        comparing it with a pure Python implementation of correctly
        rounded division.  b should be nonzero.rNr�Zzerodivisionz7Incorrectly rounded division {}/{}: expected {}, got {})	r!rr#rhr+rrr<r�)r2r%r&Z
skip_smallrkrdrrr�
check_truediv�s 	+





zLongTest.check_truedivcCsw|jdd�|jd&d�|jdd�|jdd'�|jdd�|jd(dtd�|jdddtt�|jd*d
�|jd,d.�dtttttf}x�|D]�}x�t|d|d�D]l}|jddt|d�ddt|d��|jddt|d�ddt|d��q�Wq�Wx}dddddd/d0d1d2d3d4d6gD]Q}xHtd7d�D]7}|j|t||�|j|t||�q�Wq�WxDtd�D]6}|jdtddd8d|dtd�q�W|jdd�|jdd�xLtd�D]>}|jd|dd|�|jd|d|d�qJWxtddddd d!dd"dd9d:d;d<d=d>d@gD]<}x3tdAd�D]"}|jdt|||�q�Wq�Wx'tdBd#�D]}|j|dC�qWx�dDdEdFgD]�}x�td�D]v}tjd|�}tj|d|d�}	|j||	�|j||	�|j||	�|j||	�qPWq=Wx�td%�D]�}
tjd�}tjdd�}tjd|�}
tjdd|�}|j|
|�|j|
|�|j|
|�|j|
|�q�WdS)GN�{ri�rAi�i90riNFrLí�r
�Qri0&iCr�rJ�i3	�)r�rK���i�
l�E,J_l�J�bi�rrZr\� rpi4i'i8���r�ige~lld�i@l90l�(km�1'}XbCK';+s�Q�0�,�52pHR�!l{���u�0h��9*sgJ<�,�}�xFnlatz$��h�Y�1Qjg9i�^�lv.52%�jSXv�rr���i��i���lP�Dg�J�+�!V��!GN11�?�K^Sel��P�Dg�J�+�!V��!GN11�?�K^Sei����l latz$��h�Y�1Qjg9i�^�lv.52%�jSXv�rrr�i��i���lP�Dg�J�+�!V��!GN11�?�K^Sel��P�Dg�J�+�!V��!GN11�?�K^Sei����i��lHld(	lDG��d�r���Y�|g�O�s&YR5Il�3qvN�h�iKa��K�P�"�q����!��a�0mvK0<tI	D�[��7�fj�wld:,"�P�S�^
g�2�$�({P_R�U��vD9�{�)P�Anf�YD8�5PgH�#�q�EgS�d27�}��W>�Y��y�{A\<	�z�kZ� �p�+�*�eX9��E��i�/�\;��:�8bG�((ema!� �6�o�}Zs'%COd�
�YP]��[BT�vWL?F�Ch_"!�x"'��j�j�4�x�o�CD<Y#!*�vYyv�#�e�JU>�+i[�9*-Jc+`�S;?lcy)	r�r�r#r"r7r!r r/�	randrange)r2�basesr`r(�mrr9�Mr%r&�_Za_bitsZb_bitsr
r;rrr�$test_correctly_rounded_true_division�sf	
3;!! !$z-LongTest.test_correctly_rounded_true_divisioncCs;xtdd�D]�}|j||d�|j||d�|j||d�|j||d�|j||d@�|j||dB�|j||dA�|j||�|j||d�|j|tt|���|j||d>d?t|��qWd	}|j||d�|jd|d�dS)
NrJirrrrr�rl)r7�assertIsr.rg)r2r9rrr�test_small_intsPs%zLongTest.test_small_intscCsBd}x�tdd�D]�}|j�}|j|tt|�jd���|dkr�|jd|dt|�ko�d|kn�n|j|d�|dkr|j|dtj	tj
t|��tj
d�|��qW|jdj�d�|jdj�d�|jdj�d�|jdj�d�|jdj�d�x�dddd	d
ddd
dddgD]�}d|}|j|dj�|�|jd|j�|�|j|j�|d�|j|j�|d�|j|dj�|d�|j|dj�|d�q�WdS)Ng�����|�=i�z-0brrrrArr\r�ryr��!rz�@��i��rr)r7rr<�lenre�lstripr1rrZfloorr�)r2Ztinyr
�kr9r%rrr�test_bit_lengthbs.%8/.
zLongTest.test_bit_lengthc(Csyddddddddddddddd	dd
dddddddd
dddddddddddddddi}xztd:dd�D]f}x]|j�D]O\}}t||d;�}||}|j||�|jt|�t�q�Wq�W|jtd<d=�d>�|jtd?d@�dA�|jtdBdC�dD�|jtdEdF�d�|jtdGdH�d�|jtdIdJ�d�|jtddK�d�|jtddL�d�|jtddM�d�|jtddN�d�|jtddO�d�|jtddP�d�|jtddQ�d�|jtddR�d�|jtddS�d �|jtd!dT�d"�|jtd#dU�d$�|jtd%dV�d&�|jtd%dW�d'�|jtd%dX�d(�|jtd%dY�d)�|jtd%dZ�d*�|jtd%d[�d+�|jtd%d\�d,�|jtd%d]�d-�|jtd%d^�d.�|jtd%d_�d/�|jtd%d`�d�|jtd%da�d�|jtd%db�d�xbtdd�D]Q}td|d1dc�}d|d2}|j||�|jt|�t�q�Wxrtd�D]d}x[td�D]M}	tjddd3�}
t|
|�}|j||
�|jt|�t�qnWq[Wx'dmD]}|jtd6|�d6�q�WxXtd�D]J}	tjdnd3�}
t|
�}|j||
�|jt|�t�q�Wdo}x$|D]}
|j	t
td|
�qUWdS)pNrrrrArrJr�rKr
rZr�r�r�r�r@rrpr\r���i�r��rL�3r��1r��i,iԡi�i��i��l!l!l�~!l�!l�!l`!l!l'�!lz+lv|ol,Gxi�iF�i��i'ryrzi{��brian�@�i����rij���ri8���ik���ri����i���ri����i���ri���rrrrrrrrrrrrr�r�rrr�r�r�i����i����i����i����i����i����i�i���r�i���l���l��������DG��d�r���Y�|g�O�s&YR5I)r�r�r�r�r�r�i���)r�r�r�)r7�items�roundr<r��typer.r/r�r|r�)r2Z	test_dict�offsetr�r~rdrkZexpectrr9r
Zhuge_nZ
bad_exponentsr�rrr�
test_round�sx$6$


zLongTest.test_roundc"s
d�fdd�}ddddd6dd7d
d8dd9dd	dd
dd:dd;dddddddd<dddd=dd>d i}||d!d"d#�ddddd?dd@d
dAddBdd	dd
d$dCd%dDddddd&dddEd'dd(dFd)dGd*i}||d+d"d#�ddddd	ddddddddddd,dd-dd.i
}||d!d"d�ddddd	ddddddd&dddd'dd-dd/i
}||d+d"d��jtdjdd!d"d��jtdjdd!d"d#��jtdjdd+d"d��jtdjdd+d"d#��jtdHjd0d!d"d��jtdIjd0d+d"d��jdjdd!�d1��jdjd2d!�d3��jdjd2d!�d4��jdJjd2d!d"d#�d5��jtdjdd!�dS)KNFcs�x�|j�D]~\}}y,�j|jt|�|d|�|�Wq
tk
r�}z#tdj|||��|�WYdd}~Xq
Xq
WdS)N�signedz7failed to convert {0} with byteorder={1} and signed={2})r�r<�to_bytesr��	Exception�AssertionErrorr�)�tests�	byteorderr�r�rk�err)r2rr�check�sz%LongTest.test_to_bytes.<locals>.checkrsrss��s�r�s��s�ss��s��s�s�si�s�i�s��i��s��is�i�s��bigr�Ts�s�ss�s��s�s��littles�s��ssr�rJsss�����ri����i����i���i���i���i���i��i��ri����i����i���i���i���i���i��i��rrr)r|rrr<)r2r�tests1�tests2�tests3�tests4r)r2r�
test_to_bytes�s�
zLongTest.test_to_bytesc
*s�d�fdd�}dddddddd	d
d	dd@ddAd
dBddCddDddddddEddFddddddddGdd d!dHd#dIi}||d%d&d'�dddddddd	d
dddJddKd
dLddMddNddd(dd)dOddPddd
dddd*dQd+d d,dRd-dSi}||d.d&d'�dddddd	dddddddddddddd d/d"i}||d%d&d�dddddd	ddddddd
dddd*ddd d0d"i}||d.d&d�Gd1d2�d2t�}�jt|jdd%��|��j|jdd%�d	��jt|jdd%d&d��|��j|jdd%d&d�d	��jt|jdd.��|��j|jdd.�d	��jt|jdd.d&d��|��j|jdd.d&d�d	��jtjdddgd%d&d'�dT��jtjdUd%d&d'�dV��jtjtd!�d%d&d'�dW��jtjtd!�d%d&d'�dX��jtjtjd3d!�d%d&d'�dY��jtjtd!�d%d&d'�dZ��jt	tjdgd%��jt	tjdgd4��jt	tjdgd5��jt
tjd6d%��jt
tjd7d%��jt
tjdd%��jt
tjdd%d'��jt
|jd6d%��jt
|jd7d%��jt
|jdd%��jt
tjdd%d'�Gd8d9�d9t�}|jdd%�}�jt|�|��j|d:�Gd;d<�d<t�}	|	jdd%�}�jt|�|	��j|d	��jt|d=d>�d?�dS)[NFcs�x�|j�D]x\}}y&�jtj||d|�|�Wq
tk
r�}z#tdj|||��|�WYdd}~Xq
Xq
WdS)Nr�z9failed to convert {0} with byteorder={1!r} and signed={2})r�r<r.�
from_bytesrrr�)rrr�r�rkr)r2rrr2sz'LongTest.test_from_bytes.<locals>.checkr
rsssrss�s��s�rs�r�s�rss�s�r	s�r
s�ss�i�s�i�s��i��s�is�i�rr�Ts�s�s�s��s�s�rssc@seZdZdS)z'LongTest.test_from_bytes.<locals>.myintN)rjr�r�rrrr�myint�sr�Bzbigzlittler[�c@seZdZdd�ZdS)z(LongTest.test_from_bytes.<locals>.myint2cSstj||d�S)Nr)r.�__new__)�clsr�rrrr�sz0LongTest.test_from_bytes.<locals>.myint2.__new__N)rjr�r�rrrrr�myint2�srrc@seZdZdd�ZdS)z(LongTest.test_from_bytes.<locals>.myint3cSs
d|_dS)N�bar)�foo)r2r�rrrr��sz1LongTest.test_from_bytes.<locals>.myint3.__init__N)rjr�r�r�rrrr�myint3�srrZnonerrri����i����i���i���i���i���i��i��rri����i����i���i���i���i���i��i��i��)r	rri��i��i��i��i��)r.r�r�rr<�	bytearray�array�
memoryviewr|r{r��getattr)
r2rrrrrrrr9rr)r2r�test_from_bytes1s�
"""""%"zLongTest.test_from_bytescscGdd�dt���fdd�td�D�}x'tt|�D]}|j|d�qEWdS)Nc@seZdZddd�ZdS)z<LongTest.test_access_to_nonexistent_digit_0.<locals>.IntegerrcSstj||�}d|_|S)Nr)r.rr)rr�r2rrrr�s	zDLongTest.test_access_to_nonexistent_digit_0.<locals>.Integer.__new__N)rjr�r�rrrrr�Integer�sr"csg|]}�d��qS)rr)r	r9)r"rrr�s	z?LongTest.test_access_to_nonexistent_digit_0.<locals>.<listcomp>i�r)r.r7�mapr<)r2Zintegersrr)r"r�"test_access_to_nonexistent_digit_0�sz+LongTest.test_access_to_nonexistent_digit_0cCsZxSdD]K}xBdD]:}|jt||>�t�|jt||?�t�qWqWdS)NTFrr)TF)rr)r<r�r.)r2r�rrrr�test_shift_bool�s

zLongTest.test_shift_boolN)$rjr�r�r6r:r?rIrQrSrTrVrXrbrlrmr�r�r�rZrequires_IEEE_754r�r�r�r�r�r�r�r�r�r�r�r�rr!r$r%rrrrr,ss>'
		5F\B"\"Jc�r,�__main__)#Zunittestr�rrr/rr�int_info�bits_per_digitr-ZBASEr8rDrCrWrRr7r9rErr!r�rr��min_expr"rr#r rr+ZTestCaser,rj�mainrrrr�<module>s>

(.����n