Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/test_long.cpython-34.pyc

�
f f��@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 dd�Z!e"dkr�e!�ndS)�N)�support���F�lUU�*UU�*l�*UU�*UU
�cCsg|]
}|�qS�r)�.0�xrr�3/opt/alt/python34/lib64/python3.4/test/test_long.py�
<listcomp>s	rcCsg|]
}|�qSrr)r	r
rrrrs	cCsQtjjd}tjj|}d|>}ddd	ddd
ddg}|dkrXdS|dkrpt|�S|j�|}|dkr�||>n||?t|d|>@�B}|||d@7}|||k|kr�td��n|ddkr|ddtjjkst�|d|tjj	ks;t�t
jt|�|�S)z9
    Correctly-rounded integer-to-float conversion.

    rrrg�z%integer too large to convert to floatr������rr)
�sys�
float_info�mant_dig�max_exp�int_to_float�
bit_length�bool�
OverflowError�AssertionError�max�math�ldexp�float)�nZ	PRECISIONZ	SHIFT_MAXZQ_MAXZROUND_HALF_TO_EVEN_CORRECTION�shift�qrrrr's 
40 rcCso||Adk}t|�t|�}}|s>td��n|t|kr]td��n|j�|j�}|dkr�|d||ks�|dkr�|d||kr�|d7}nt|t�t}|t|d�>|t|d�>}}t||�\}}d||ksAd||krN|ddkrN|d7}nt	j
||�}|rk|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_OVERFLOWrrr�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�LongTestcCs9|j|d�|t}|td}d}d}ttj�td�dB}x�||kr�|d?d}t|||�}|jd|ko�tkn�||}||>}|d@r�|d|>dB}nttj�td�}qUW|j||ko|kn�tj�dkr5|}n|S)Nrrrg�?)Z
assertGreater�SHIFT�int�random�min�
assertTrue)�self�ndigitsZnbits_hiZnbits_lo�answerZnbitsr*�bitsrrr�getran{s&
#


#
zLongTest.getrancCsWd}x.t|�D] }|t>tjdt�B}qWtj�dkrS|}n|S)Nrg�?)�ranger.r0Zrandint�MASK)r4r5�irrr�getran2�s
zLongTest.getran2c
Cs|j}|jd|d|���t||�\}}||||}}||||}}	|||	d�|||d�|||d�|||||d�|dkr�|jd|ko�|knd�n&|j||ko�dknd�WdQXdS)	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%r2)
r3r
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)�listr8�	MAXDIGITS�KARATSUBA_CUTOFF�appendr7r@)r3�digits�lenxr
�lenyr<rrr�
test_division�s4

						zLongTest.test_divisionc	Cs	ttdd��ttttd��}|jtdtdg�dd�|D�}x�|D]�}d|>d}x�|D]�}||kr�q|n|jd|d|��Od|>d}||}d||>d|>d|>d}|j||�WdQXq|WqaWdS)	Nr��
�dcSsg|]}|t�qSr)r.)r	�digitrrrr�s	z+LongTest.test_karatsuba.<locals>.<listcomp>�abits�bbits)rCr8rE�extendr>r=)	r3rGr6rOr&rPr'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�WdQXx�tdt�D]�}d|}|jd|d|d|��y|||>|?|�|||||?�|||||>�|||@||?|>�|||@||d@�WdQXq8WdS)
Nr
rrrr�p2rrrrrr)r=r>r8r.)r3r
r?rrSrrr�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@�WdQXdS)Nr
r<)r=r>)r3r
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@�WdQXdS)Nr
r<�z)r=r>)r3r
r<rVr?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)�specialrTr8rDr7rUrW)r3r
rGrHrIr<rrr�test_bitop_identitiess



zLongTest.test_bitop_identitiescCs�g}d}|dkr)d|}}nx2|r]t||�\}}|jt|��q,W|j�|ptdg}dd|�idd6dd6dd	6d
d6|djdd
�|D��S)Nrr�-Z0brZ0o��rLZ0x�css|]}d|VqdS)Z0123456789abcdefNr)r	r:rrr�	<genexpr>1sz'LongTest.slow_format.<locals>.<genexpr>)r%rFr/�reverse�join)r3r
�baserG�signr*rrr�slow_format%s	
1zLongTest.slow_formatcCs�x�dtfdtfdtfdtfdtffD]�\}}||�}|jd|d|j��'|j||�}|j||�WdQX|jd|��|jt	|d�|�WdQXq4WdS)	Nrr[rLr]r
�mapper�gotr)
�bin�oct�str�repr�hexr>�__name__rcr=r/)r3r
rardre�expectedrrr�check_format_13s@zLongTest.check_format_1cCssxtD]}|j|�qWxNtd�D]@}x7tdtd�D]"}|j|�}|j|�qEWq+WdS)NrLr)rXrmr8rDr7)r3r
r:rHrrr�test_format<s
zLongTest.test_formatc
Cs�dd,d-fdddd.fg}x�|D]�\}}x�d/D]|}xsd0D]k}|||}|}|dkr�|tk	r�|}ny|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�rLrMr\�+rZ� �	�  		  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\rrrZ)r\rsrtruis���li���lli�li�l����ll����lll����ll����l����lll����)�
ValueErrorr=r/�assertRaises)
r3ZLL�s�vrb�prefixZssZvvZ
invalid_basesrarrr�	test_longDsN





zLongTest.test_longcCsYGdd�d�}|jtt|��Gdd�d�}|jt|��d�dS)Nc@seZdZdd�ZdS)z*LongTest.test_conversion.<locals>.JustLongcSsdS)N�*r)r3rrr�__long__}sz3LongTest.test_conversion.<locals>.JustLong.__long__N)rk�
__module__�__qualname__r�rrrr�JustLong{sr�c@s(eZdZdd�Zdd�ZdS)z+LongTest.test_conversion.<locals>.LongTrunccSsdS)Nr�r)r3rrrr��sz4LongTest.test_conversion.<locals>.LongTrunc.__long__cSsdS)Ni�r)r3rrr�	__trunc__�sz5LongTest.test_conversion.<locals>.LongTrunc.__trunc__N)rkr�r�r�r�rrrr�	LongTrunc�sr�i�)r}�	TypeErrorr/r=)r3r�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=)r3rZactualrl�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�5rB�6rrK�r
r[r�	rL���
rAr]rM�ll����ll����ll����lllll����ll����lll)rr)rr)rBr)rr)rKr)r�r�)r
r[ll)rr)rr)rr)rBr)rr)rKr)r�r[)r
r[)r[r[)r�r[)rLr[)r�r�)r�r�)r�r�)rAr])rr]lllllllll���i����)r=rr8r/�DBL_MAX�DBL_MAX_EXPr}rrQrFr�)
r3Zexact_valuesr
r<�pZint_dbl_maxZ	top_powerZhalfwayZtest_values�valuerrr�test_float_conversion�sl		
(<<
 
!

zLongTest.test_float_conversionc$Csx*d3D]"}|jtt|��|�qWdd}d4}|}i|d6|d	6|d
6td6}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)r3r
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)NrLrMi�i'rrrl��e���r)r�rr)	r�log10�erCr8ZassertAlmostEqual�logr}r|)r3ZLOG10Er)r�r�rlr�Zbadrrr�	test_logs�s&


zLongTest.test_logsc

sG|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�WdQXq5WqWdS)NcsveZdZdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)z)LongTest.test_mixed_compares.<locals>.Ratc	Ss�t|t�r$||_d|_nvt|t�r�tjt|��\}}|dks|d|koqdkns|t�d}d}x�|rtj	||�}t|�}||?dks�t�||>|B}||8}d|ko�dkns�t�||8}q�W|dkr,||>}d}n|}d|>}|dkrS|}n||_||_t|�t|�|ks�t�nt
d|��dS)Nrrg�?g�?�gzcan't deal with %r)�
isinstancer/rr(rrZfrexpr rrr�)	r3r��fr�ZCHUNK�toprNrr(rrr�__init__s6	.	
"
	
		%z2LongTest.test_mixed_compares.<locals>.Rat.__init__csSt|��s�|�}n|j|j|j|j}}||k||kS)N)r�rr()r3�otherr
r<)�Ratrr�_cmp__Bs!z0LongTest.test_mixed_compares.<locals>.Rat._cmp__cSs|j|�dkS)Nr)r�)r3r�rrr�__eq__Gsz0LongTest.test_mixed_compares.<locals>.Rat.__eq__cSs|j|�dkS)Nr)r�)r3r�rrr�__ne__Isz0LongTest.test_mixed_compares.<locals>.Rat.__ne__cSs|j|�dkS)Nr)r�)r3r�rrr�__ge__Ksz0LongTest.test_mixed_compares.<locals>.Rat.__ge__cSs|j|�dkS)Nr)r�)r3r�rrr�__gt__Msz0LongTest.test_mixed_compares.<locals>.Rat.__gt__cSs|j|�dkS)Nr)r�)r3r�rrr�__le__Osz0LongTest.test_mixed_compares.<locals>.Rat.__le__cSs|j|�dkS)Nr)r�)r3r�rrr�__lt__Qsz0LongTest.test_mixed_compares.<locals>.Rat.__lt__N)rkr�r�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=rQr/r�maxsizerr>)
r3r?Zcases�tr
ZRxr<ZRyr�Zxycmpr)r�r�test_mixed_comparess0	;
%.(*


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-q-Wx\d6D]T}xKd3ddKd5dLd7dMgD].}|jt||�tt|�|��q�Wq�WdS)NNi�[r(Z	123456789rrZroz-1z-3z  1z -1z+3z +1z 3rsz 1rBr
�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&rVcSsg|]}t|��qSr)r�)r	r
rrrr�s	�A�ZzbcdoxXeEfFgGn%rrrMzeEfFgG%i��Irrrrri.���i.���i.������r�r�i.���i.���i.���i.���rlll����ri����i.�i�)r=r�r/r}r|r8�ordr)r3Zformat_specr�rrr�test__format__osd""##,1
"zLongTest.test__format__cCsO|jtttd��|jtttd��|jtttd��dS)N�infz-inf�nan)r}rr/rr|)r3rrr�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�i|d	6|d
6}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!)r3r�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 {})	rr r$rir,rr!r=r�)r3r&r'Z
skip_smallrlrerrr�
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�rBi�i90riNFrMí�r
�Qri0&iCr�rK�i3	�)r�rL���i�
l�E,J_l�J�bi�rr[r]� rqi4i'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#r8rr"r0�	randrange)r3�basesrar)�mrr:�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)
NrKirrrrr�rl)r8�assertIsr/rh)r3r:rrr�test_small_intsRs%zLongTest.test_small_intscCsEd}x�tdd�D]�}|j�}|j|tt|�jd���|dkr�|jd|dt|�ko�d|kn�n|j|d�|dkr|j|dtj	tj
t|��tj
d�|��qqW|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-0brrrrBrr]r�rzr��!r{�@��i��rr)r8rr=�lenrf�lstripr2r rZfloorr�)r3Ztinyr
�kr:r&rrr�test_bit_lengthds.%82.
zLongTest.test_bit_lengthcCs�idd6dd6dd6dd6dd6dd6dd6dd	6dd
6dd6dd6dd6dd
6dd6dd6dd6dd6dd6dd6dd6}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�q�WqoWx'dmD]}|jtd6|�d6�q�WxXtd�D]J}	tjdnd3�}
t|
�}|j||
�|jt|�t�qWdo}x$|D]}
|j	t
td|
�qiWdS)pNrrrrBrrKrLr�r
r[r�r�r�r�rArqrr]r���i�r��rM�3r��1r��i,iԡi�i��i��l!l!l�~!l�!l�!l`!l!l'�!lz+lv|ol,Gxi�iF�i��i'rzr{i{��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�N)r8�items�roundr=r��typer/r0r�r}r�)r3Z	test_dict�offsetr�rrerlZexpectrr:r
Zhuge_nZ
bad_exponentsr�rrr�
test_round�sx-?&


zLongTest.test_roundcs@d�fdd�}idd6dd6dd66d	d76dd86d
d96dd
6dd6dd:6dd;6dd6dd6dd6dd<6dd6dd=6dd>6}||d!d"d#�idd6dd6dd?6d	d@6ddA6ddB6dd
6d$d6d%dC6ddD6dd6d&d6d
d6d'dE6d(d6d)dF6d*dG6}||d+d"d#�i
dd6dd6dd
6dd6dd6dd6dd6d,d6d-d6d.d6}||d!d"d�i
dd6dd6dd
6dd6dd6d&d6d
d6d'd6d-d6d/d6}||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��	Exceptionrr�)�tests�	byteorderrr�rl�err)r3rr�check�sz%LongTest.test_to_bytes.<locals>.checksrsrs�s��s�r�s��ss�s��s��s�ss�i�s��i�s��i��s�is�i��bigrTs�s�ss�s��s�s��littles�s��ssr�rKsss�����ri����i����i���i���i���i���i��i��ri����i����i���i���i���i���i��i��rrr)r}rrr=)r3r�tests1�tests2�tests3�tests4r)r3r�
test_to_bytes�s�



zLongTest.test_to_bytescsxd�fdd�}idd6dd6dd6dd	6dd
6d8d6d9d6d:d6d;d6d<d6d
d6dd6d=d6d>d6dd6dd6dd6d?d6dd 6d@d"6dAd$6}||d%d&d'�idd6dd6dd6dd	6dd
6dBd6dCd6dDd6dEd6dFd6d
d6dd(6dGd)6dHd6dd6dd
6dd6dId*6dd+6dJd,6dKd-6}||d.d&d'�idd6dd6dd	6d
d6dd6dd6dd6dd6dd6dd6d!d/6}||d%d&d�idd6dd6dd	6d
d6dd6dd6dd
6dd6dd*6dd6d!d06}||d.d&d�Gd1d2�d2t�}�jt|jdd%��|��j|jd	d%�d��jt|jdd%d&d��|��j|jd	d%d&d�d��jt|jdd.��|��j|jd	d.�d��jt|jdd.d&d��|��j|jd	d.d&d�d��jtjdddgd%d&d'�dL��jtjdMd%d&d'�dN��jtjtd"�d%d&d'�dO��jtjtd"�d%d&d'�dP��jtjtjd3d"�d%d&d'�dQ��jtjtd"�d%d&d'�dR��jt	tjdgd%��jt	tjdgd4��jt	tjdgd5��jt
tjd6d%��jt
tjd7d%��jt
tjdd%��jt
tjdd%d'��jt
|jd6d%��jt
|jd7d%��jt
|jdd%��jt
tjdd%d'�dS)SNFcs�x�|j�D]x\}}y&�jtj||d|�|�Wq
tk
r�}z#tdj|||��|�WYdd}~Xq
Xq
WdS)Nrz9failed to convert {0} with byteorder={1!r} and signed={2})r�r=r/�
from_bytesrrr�)rrrr�rlr)r3rrr4sz'LongTest.test_from_bytes.<locals>.checkrrssrsss�s��rs�r�s�r	s�ss�r
s�rs�s�si�s�i�s�i��s��is�i�s�rrTs�s�s�s��s�s�r
ssc@seZdZdS)z'LongTest.test_from_bytes.<locals>.myintN)rkr�r�rrrr�myint�sr�BZbigZlittler\�rri����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�)r3rrrrrrr)r3r�test_from_bytes3s�



"""""%"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)N�foo)r/�__new__r)�clsr�r3rrrr�s	zDLongTest.test_access_to_nonexistent_digit_0.<locals>.Integer.__new__N)rkr�r�rrrrr�Integer�srcsg|]}�d��qS)rr)r	r:)rrrr�s	z?LongTest.test_access_to_nonexistent_digit_0.<locals>.<listcomp>i�r)r/r8�mapr=)r3Zintegersrr)rr�"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/)r3r�rrrr�test_shift_bool�s

zLongTest.test_shift_boolN)$rkr�r�r7r;r@rJrRrTrUrWrYrcrmrnr�r�r�rZrequires_IEEE_754r�r�r�r�r�r�r�r�r�r�r�rrrr!r"rrrrr-ss>'
		5F^B"\"Jc�r-cCstjt�dS)N)rZrun_unittestr-rrrr�	test_main�sr#�__main__)#Zunittestr�rrr0rr�int_info�bits_per_digitr.ZBASEr9rErDrXrSr8r:rFrrr�rr��min_expr#rr$r"rr,ZTestCaser-r#rkrrrr�<module>s@

(.����_