Your IP : 216.73.216.52


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



��Yf5��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZmZm
Z
mZed�Zed�Zeed�Zejed�Zejeed�d	�Zejje�p
ejZejjed
�ZGdd�de�ZGd
d�de�ZGdd�dej �Z!eGdd�dej ��Z"dZ#e$e%e#��Z&dZ'e$e%e'��Z(dZ)e$e%e)��Z*dZ+e$e%e+��Z,eGdd�dej ��Z-Gdd�dej �Z.Gdd�dej �Z/Gdd�dej �Z0e
j1Gdd �d ej ��Z2Gd!d"�d"ej �Z3ej4Z5ej6Z7Gd#d$�d$ej �Z8e9d%kr�ej:�dS)&�N)�support)�isinf�isnan�copysign�ldexp�inf�nan�
__getformat__zrequires __getformat__�
__setformat__zrequires __setformat__zformatfloat_testcases.txtc@seZdZdS)�
FloatSubclassN)�__name__�
__module__�__qualname__�rr�4/opt/alt/python35/lib64/python3.5/test/test_float.pyrsrc@seZdZdS)�OtherFloatSubclassN)rr
rrrrrrsrc@s�eZdZdd�Zdd�Zdd�Zdd�Zejd	d
d�dd
��Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zejdd��Zejdd��ZdS)�GeneralFloatCasescCs�|jtd�d�|jtd�d�|jtd�d�|jttd�|jttd�|jttd�|jttd�|jttd	�|jttd
�|jttd�|jttd�|jttd
�|jttd�|jttd�|jtti�|jtdti�|jttd�|jttd�|jttd�|jtd�d�|jtd�d�tddd�tddd�dS)Ng��Q�	@i:g�s@z  3.14  z	  0x3.1  z  -0x3.p-1  z  +0x3.p-1  z++3.14z+-3.14z-+3.14z--3.14z.nanz+.inf�.z-.z
not 'dict'u�z-1.7d29z3D-14u  ٣.١٤  u
 3.14 �.�1i��1)�assertEqual�float�assertRaises�
ValueError�	TypeError�assertRaisesRegex�UnicodeEncodeError)�selfrrr�
test_float$s.zGeneralFloatCases.test_floatcs&Gdd�dt��Gdd�dt�}Gdd�dt�}tt�fdd�||tg}yd	d
lm�Wntk
r�YnX|j�fdd��xw|D]o}|d�}|jt|���E|j	t
|�d
�|jtd��t
|d��WdQRXWdQRXq�WdS)Nc@seZdZdS)zAGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomStrN)rr
rrrrr�	CustomStrCsr c@seZdZdS)zCGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomBytesN)rr
rrrrr�CustomBytesDsr!c@seZdZdS)zGGeneralFloatCases.test_non_numeric_input_types.<locals>.CustomByteArrayN)rr
rrrrr�CustomByteArrayEsr"cs�|j��S)N)�decode)�b)r rr�<lambda>Jsz@GeneralFloatCases.test_non_numeric_input_types.<locals>.<lambda>r)�arraycs
�d|�S)N�Br)r$)r&rrr%Tss 3.14  g��Q�	@zcould not convert�A�sAAAAAAAAAAAAAAAA)
�str�bytes�	bytearray�
memoryviewr&�ImportError�appendZsubTest�typerrrr)rr!r"Z	factories�f�xr)r r&r�test_non_numeric_input_types@s(	

z.GeneralFloatCases.test_non_numeric_input_typescCs�|jttd�dd��d�|jttd�dd��d�|jttd�dd��d�|jttd�dd��d�|jttd�dd��d�dS)	Ns12.3��gffffff@s12.3s12.3 s12.3As12.34)rrr-)rrrr�test_float_memoryview]s
&&&&z'GeneralFloatCases.test_float_memoryviewcsz�fdd�}|d�|d�|d�|d�|d�|d�|d	�|d
�|d�|d�dS)
NcsT�jtdd|f��}t|�WdQRX�jt|j�d|f�dS)N�msgz	float(%r)z%could not convert string to float: %r)rrrrr*Z	exception)�s�cm)rrr�checkesz3GeneralFloatCases.test_error_message.<locals>.check�½u123½z  123 456  s  123 456  u٣١٤!z123z123 245z123245s123s123�r)rr:r)rr�test_error_messageds








z$GeneralFloatCases.test_error_message�
LC_NUMERICZfr_FRZde_DEcCs�ddl}|j�ddks/|jd�|jtd�d�|jtd�d�|jtd�d�|jtd	�d
�|jtd�d�|jtd
�d�|jtd�d�|jtd�d�|jtd�d�|jttd�|jttd�|jttd�|jttd�|jttd�|jttd�|jtd�d�|jtd�d�dS) NrZ
decimal_point�,zdecimal_point is not ","z  3.14  g��Q�	@z+3.14  z-3.14  z.14  g�Q���?z3.  g@z3.e3  gp�@z3.2e3  g�@z2.5e-1  g�?z5e-1g�?z  3,14  z	  +3,14  z	  -3,14  z	  0x3.1  z  -0x3.p-1  z  +0x3.p-1  z
  25.e-1  g@z
  .25e-1  g�������?g��Q�	�)�locale�
localeconvZskipTestrrrr�assertAlmostEqual)rr?rrr�test_float_with_comma{s(
z'GeneralFloatCases.test_float_with_commacCs�Gdd�dt�}Gdd�dt�}Gdd�dt�}Gdd�dt�}Gd	d
�d
t�}|jt|��d�|jt|��d�|jt|d��d�|jtt|d
��|jt|d��d�Gdd�d�}|jttj|��Gdd�d�}|jt|��d�|jt	t|���t
�|jt|��d�|jt	t|���t�dS)Nc@seZdZdd�ZdS)z4GeneralFloatCases.test_floatconversion.<locals>.Foo1cSsdS)NgE@r)rrrr�	__float__�sz>GeneralFloatCases.test_floatconversion.<locals>.Foo1.__float__N)rr
rrCrrrr�Foo1�srDc@seZdZdd�ZdS)z4GeneralFloatCases.test_floatconversion.<locals>.Foo2cSsdS)NgE@r)rrrrrC�sz>GeneralFloatCases.test_floatconversion.<locals>.Foo2.__float__N)rr
rrCrrrr�Foo2�srEc@s+eZdZddd�Zdd�ZdS)z4GeneralFloatCases.test_floatconversion.<locals>.Foo3gcSstj|d|�S)N�)r�__new__)�cls�valuerrrrG�sz<GeneralFloatCases.test_floatconversion.<locals>.Foo3.__new__cSs|S)Nr)rrrrrC�sz>GeneralFloatCases.test_floatconversion.<locals>.Foo3.__float__N)rr
rrGrCrrrr�Foo3�srJc@seZdZdd�ZdS)z4GeneralFloatCases.test_floatconversion.<locals>.Foo4cSsdS)N�*r)rrrrrC�sz>GeneralFloatCases.test_floatconversion.<locals>.Foo4.__float__N)rr
rrCrrrr�Foo4�srLc@seZdZdd�ZdS)z6GeneralFloatCases.test_floatconversion.<locals>.FooStrcSstt|��dS)Nr4)rr*)rrrrrC�sz@GeneralFloatCases.test_floatconversion.<locals>.FooStr.__float__N)rr
rrCrrrr�FooStr�srMgE@�rK�8g"@c@seZdZdd�ZdS)z4GeneralFloatCases.test_floatconversion.<locals>.Foo5cSsdS)N�r)rrrrrC�sz>GeneralFloatCases.test_floatconversion.<locals>.Foo5.__float__N)rr
rrCrrrr�Foo5�srQc@seZdZdd�ZdS)z1GeneralFloatCases.test_floatconversion.<locals>.FcSs
td�S)NgE@)r)rrrrrC�sz;GeneralFloatCases.test_floatconversion.<locals>.F.__float__N)rr
rrCrrrr�F�srR)�objectrr*rArr�timeZsleep�assertIsr0rr)rrDrErJrLrMrQrRrrr�test_floatconversion�s"z&GeneralFloatCases.test_floatconversioncCs\|jdj��|jdj��|jtd�j��|jtd�j��dS)Ng�������?g�?rr)ZassertFalse�
is_integer�
assertTruer)rrrr�test_is_integer�sz!GeneralFloatCases.test_is_integercCsx6dddd!gD]"\}}|j|j�|�qWxktd
�D]]}tj�}|dtjd"d�9}|j�\}}|jt|�j|�|�qFWtj}|j|dd�|td�j���|j|d
d	�|td�j���|j|dd	�|td�j���|j|dd�|td�j���|j|d#d�|td$�j���|j|d%d�|td&�j���|j	t
td�j�|j	t
td�j�|j	ttd�j�dS)'N��?���rr4�'@�rFi'�
�d�g@g�?l�L�33�l@g������@i4gh�@rz-infr�r[r\)rZrc������rer\)rdrf�rr4)r]rg�r_rF)r^rhi����l�����L�33�g�������i���gh��)r�as_integer_ratio�range�randomZrandintr�__truediv__�	fractionsZFractionr�
OverflowErrorr)rr1Zratio�i�n�d�Rrrr�test_floatasratio�s6#	z#GeneralFloatCases.test_floatasratiocCs�ttddtf}x�|D]�}|j||g�|j||f�|j||h�|j||di�|j|gj|�dd|�|j||�qWxA|D]9}|j|g|gkd||f�|j|f|fkd||f�|j|h|hkd||f�|j|di|dikd||f�|g|f|h|dif\}}}}|j||kd	|�|j||kd
|�|j||kd|�|j||kd|�q�WdS)
Ngg�?r4z[].count('%r') != 1z[%r] != [%r]z(%r,) != (%r,)z{%r} != {%r}z{%r : None} != {%r : None}z[%r] not equal to itselfz(%r,) not equal to itselfz{%r} not equal to itselfz{%r : None} not equal to itself)�INF�NAN�assertInr�countrX)rZfloatsr1�l�tr8rqrrr�test_float_containment�s&
#
&&&-z(GeneralFloatCases.test_float_containmentcCs2|j|td|�f|td|�f�dS)Ng�?)rr)r�ar$rrr�assertEqualAndEqualSignsz)GeneralFloatCases.assertEqualAndEqualSigncCs9tj}|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d	�|j|d
d�d�|j|d
d�d�|j|dd�d�|j|dd�d�|j|dd�d�dS)Ng�?gg0��.�++g�g0��.�+�g�g�g�g�g0��.�+�g�g0��.�+�g�g�g�g�g�g�g�g�g�)�operator�modr|)rr~rrr�test_float_mods	z GeneralFloatCases.test_float_modcCs�
x
ttjfD]n
}|jt|tt���|jt|dt���|jt|dt���|jt|d
t���|jt|dt���|jt|dt���|jt|dt���|jt|dt���|jt|tt���|jt|tt���|jt|tt���|jt|td���|jt|td���|jt|td���|jt|td���|jt|td���|jt|td���|jt|tt���|jt|dd�|jt|dd�|jt|dd�|jt|dd�|jt|dd�|jt|dd�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dt�d�|j|d t�d�|j|dt�d�|j|dd!�d�|j|dd"�d�|j|dd#�d�|j|dd$�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dt�d�|j|dt�d�|j|td�d�|j|d%d�d�|j|d&d�d�|j|d'd�d�|j|d(d�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|td�d�|j|td�d�|j|td)�d�|j|d*d+�d�|j|d,d-�d�|j|d.d/�d�|j|d0d1�d�|j|dd2�d�|j|dd3�d�|j|dd4�d�|j|dd5�d�|j|td6�d�|j|td7�d�|j	t
|d8d9��t�|j	t
|d:d��t�|j	t
|d;d<��t�|j	t
|d=d��t�|j	t
|d>d?��t�|j	t
|d@d��t�|j|dAt�t�|j|dBt�t�|j|dt�t�|j|dt�t�|j|tt�d�|j|dCt�d�|j|dt�d�|j|tt�d�|j|dDt�d�|j|dEt�d�|j|dt�d�|j|dt�d�|j|tt�t�|j|dFt�t�|j|dt�t�|j|tt�t�|j|tdG�dH�|j|tdI�d�|j|tdJ�d�|j|td�t�|j|td�t�|j|td�t�|j|td�t�|j|td�t�|j|td�t�|j|tdK�d�|j|tdL�d�|j|tdM�d�|j|dNdO�d�|j|dPdQ�dR�|j|dSdT�d�|j|dUd�d�|j|dVd�dW�|j|dXd�d�|j|dYdZ�d�|j|d[d\�d]�|j|d^d_�d�|j|d`d�d�|j|dad�db�|j|dcd�d�|j|ddd�d�|j|dde�d�|j|ddf�d�|j|dd�d�|j|dd�d�|j|dd�d�|j|ddg�d�|j|dd�d�|j|dhdi�d�|j|djd�d�|j|dkdl�d�|j	t
|dmdn��t�|j|dodp�dq�|j|ddr�d�|j|dds�d�|j|ddt�d�|j|dud�d�|j	t
|dvd	��t�|j|dwd
�dx�|j|dd�d�|j|dd	�d�|j|dd
�d�qWdS)yNg@g�?g�?gg�?g@g}Ô%�I�Tg@�@gB�@gD�@g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g�g}Ô%�I��g�g}Ô%�I��g�g�g@��g�gB��g�gD��g�g@��gB��gD��g�g�g�g�)�powr}rXrrtrur�ZeroDivisionErrorr|rr0�complex)rZpow_oprrr�test_float_powsz GeneralFloatCases.test_float_powN)rr
rrr3r6r<rZrun_with_localerBrVrYrsrzr|�requires_IEEE_754rr�rrrrr"s!/!rc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�FormatFunctionsTestCasecCs+dtjd�dtjd�i|_dS)N�doubler)rr	�save_formats)rrrr�setUp�szFormatFunctionsTestCase.setUpcCs2tjd|jd�tjd|jd�dS)Nr�r)rr
r�)rrrr�tearDown�sz FormatFunctionsTestCase.tearDowncCst|jtjd�dddg�|jtjd�dddg�|jttjd�|jttjd�dS)Nr��unknownzIEEE, big-endianzIEEE, little-endianr�chickenr4)rvrr	rrr)rrrr�test_getformat�sz&FormatFunctionsTestCase.test_getformatcCs�x�dD]�}tj|d�|j|dkrL|jttj|d�na|j|dkr{|jttj|d�n2|jttj|d�|jttj|d�|jttj|d�qW|jttjdd�dS)Nr�rr�zIEEE, big-endianzIEEE, little-endianr�)r�r)rr
r�rr)rryrrr�test_setformat�s 




z&FormatFunctionsTestCase.test_setformatN)rr
rr�r�r�r�rrrrr��sr�s�s�s�s�c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�UnknownFormatTestCasecCsKdtjd�dtjd�i|_tjdd�tjdd�dS)Nr�rr�)rr	r�r
)rrrrr�szUnknownFormatTestCase.setUpcCs2tjd|jd�tjd|jd�dS)Nr�r)rr
r�)rrrrr�$szUnknownFormatTestCase.tearDowncCsXxQdtfdtfdtfdtfgD]%\}}|jttj||�q+WdS)Nz>dz<d)�
BE_DOUBLE_INF�
BE_DOUBLE_NAN�
LE_DOUBLE_INF�
LE_DOUBLE_NANrr�struct�unpack)r�fmt�datarrr� test_double_specials_dont_unpack(s
		z6UnknownFormatTestCase.test_double_specials_dont_unpackcCsXxQdtfdtfdtfdtfgD]%\}}|jttj||�q+WdS)Nz>fz<f)�BE_FLOAT_INF�BE_FLOAT_NAN�LE_FLOAT_INF�LE_FLOAT_NANrrr�r�)rr�r�rrr�test_float_specials_dont_unpack/s
		z5UnknownFormatTestCase.test_float_specials_dont_unpackN)rr
rr�r�r�r�rrrrr�sr�c@s:eZdZejdd��Zejdd��ZdS)�IEEEFormatTestCasecCsOxHdtfdtfdtfdtfgD]\}}tj||�q+WdS)Nz>dz<d)r�r�r�r�r�r�)rr�r�rrr�test_double_specials_do_unpack>s
		z1IEEEFormatTestCase.test_double_specials_do_unpackcCsOxHdtfdtfdtfdtfgD]\}}tj||�q+WdS)Nz>fz<f)r�r�r�r�r�r�)rr�r�rrr�test_float_specials_do_unpackFs
		z0IEEEFormatTestCase.test_float_specials_do_unpackN)rr
rrr�r�r�rrrrr�<sr�c@s=eZdZdd�Zejdd��Zdd�ZdS)�FormatTestCasecCs|jtdd�d�|jtdd�d�|jtdd�d�|jtdd�d�d)}|jt|d�t|��|jt|d�t|��|jt|d�t|��|jt|d
�t|��|jtdd�d�|jtd*d�d�|jtdd�d�|jtd+d�d�|jtdd�d�|jtd,d�d�|jtd-d�d�|jttdd�xdd�ttd�td�d�D�dd�ttd�td �d�D�D]�}|d!kr|jttd|�|jttd|�|jttd.|�|jttd"|�|jttd/|�|jttd#|�|jttd0|�qW|jttd�d$�|jttd%�d&�|jttd�d'�|jttd%�d(�dS)1Ngr1z0.000000rPz0.0g{�G�z�?z0.01�grag@�-�>�2g�?z1.000000z	-1.000000z fz	 1.000000z+fz	+1.000000�%z-100.000000%g@r8cSsg|]}t|��qSr)�chr)�.0r2rrr�
<listcomp>ts	z.FormatTestCase.test_format.<locals>.<listcomp>r{�zr4cSsg|]}t|��qSr)r�)r�r2rrrr�us	�A�ZzeEfFgGn%g}Ô%�I�Tg0��.�++rrRrurrtg%I�$I�,@g�g�g�g�g�g}Ô%�I��g0��.�+�)	r�formatr*rrrj�ordrurt)rr2Zformat_specrrr�test_formatPs>,1zFormatTestCase.test_formatcCs�tt���}x�|D]�}|jd�r.q|j�}|sCqttj|jd��\}}|j�\}}|j|t|�|�|j|t|�d|�qWWdQRXdS)Nz--z->r�)	�open�format_testfile�
startswith�strip�mapr*�splitrr)rZtestfile�lineZlhsZrhsr��argrrr�test_format_testfile�s
!z#FormatTestCase.test_format_testfilecCsO|jtdd�d�|jtdd�d�|jtdd�d�dS)Ngw��/�^@z.4z123.5g
ףp=J�@z	1.235e+03g������@z	1.235e+04)rr�)rrrr�test_issue5864�szFormatTestCase.test_issue5864N)rr
rr�rr�r�r�rrrrr�Ns5r�c@sLeZdZdd�Zejeedd�dkd�dd��Zd	S)
�ReprTestCasecCs�ttjjtjjt�dd��}x[|D]S}|j�}|s2|jd�r]q2t|�}|j	|tt
|���q2W|j�dS)Nrzfloating_points.txt�#)r��os�path�joinr��__file__r�r��evalr�repr�close)rZfloats_filer��vrrr�	test_repr�s
 zReprTestCase.test_repr�float_repr_stylerP�shortz.applies only when using short float repr stylecCs�ddddddddd	d
ddd
ddddddddddddg}x�|D]�}d|}|j|tt|���|j|tt|���|jtt|��tt|���|jtt|��tt|���qXWdS)Nz0.0z1.0z0.01z0.02z0.03z0.04z0.05z
1.23456789z10.0z100.0z1000000000000000.0z9999999999999990.0z1e+16z1e+17z0.001z0.001001z0.00010000000000001z0.0001z9.999999999999e-05z1e-05z8.72293771110361e+25z7.47005307342313e+26z2.86438000439698e+28z8.89142905246179e+28z3.08578087079232e+35r�)rr�rr*)rZtest_stringsr8Znegsrrr�test_short_repr�s>
	

(zReprTestCase.test_short_reprN)	rr
rr��unittest�
skipUnless�getattr�sysr�rrrrr��sr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zeje	e
d	d
�dkd�d
d��Zeje	e
d	d
�dkd�dd��Zdd�Z
dd�ZdS)�
RoundTestCasecCs�|jttt�|jttt�|jttt�|jtttd�|jtttd�|jtttd�|jttdd�dS)Ngg�?zceci n'est pas un integery�?g�)rrn�roundrtrrur)rrrr�test_inf_nan�szRoundTestCase.test_inf_nancCsx�dddddddgD]j}|jtd	|�d	�|jtd|�d�|jtd
|�d
�|jtd|�d�qW|jtdd
�d�|jtd
d�d
�|jtdd�d�|jtdd�d�|jtdd�d�dS)NiDiEi�rF�r4� ragw��/�^@g�u�<�7~g�g��P.5�_i,i3go���!	@i4i5gS��i;g�ili���lllgw��/�^�gw��/�^�go���!	�go���!	�)rr�)rrprrr�test_large_n�s"zRoundTestCase.test_large_ncCs�x�dd
dddddgD]j}|jtd|�d	�|jtd|�d�|jtd
|�d	�|jtd|�d	�qWdS)Ni4i5i�r4rFr�ragw��/�^@gg�u�<�7~g�i���i���ip���li�li�li�l����ll����gw��/�^�g�)rr�)rrprrr�test_small_n�s
"zRoundTestCase.test_small_ncCs0|jttdd�|jttdd�dS)Ng3t�<{�i4gv;w0�B�i���gv;w0�B�i���)rrnr�)rrrr�
test_overflow�szRoundTestCase.test_overflowr�rPr�z.applies only when using short float repr stylecCs�|jtdd�d�|jtdd�d�|jtdd�d�|jtdd�d�|jtd	d�d�|jtd
d�d�|jtdd�d�|jtd
d�d�|jtdd�d�|jtdd�d�dS)NgCr4g�������B�g9@g4@g�A@gD@g�F@g�K@gN@g@P@g�R@gT@g@U@g�W@gY@���r�r�r�r�r�r�r�)rr�)rrrr�test_previous_round_bugs�sz&RoundTestCase.test_previous_round_bugscCsOx�td�D]�}|d}|jtt|d��t|d��|jtt|d��t|d��|jtt|d��t|d��|jtt|d	��t|d
��q
Wx�tddd
�D]�}|d}|jtt|d��t|d��|jtt|d��t|d��|jtt|d��t|d��|jtt|d	��t|d
��q�Wx�td�D]�}tj�}|jtt|d��t|d��|jtt|d��t|d��|jtt|d��t|d��|jtt|d	��t|d
��q�WdS)Ni�g@�@z.0frz.1fr4z.2frFz.3fr�rbi�r`)rjrrr�r�rk)rror2rrr�test_matches_float_formats$
(((,
(((,(((z'RoundTestCase.test_matches_float_formatcs9�fdd�}x ddddddd	d
ddd
dgD]�}d|dd�}d|dd�}||td�||td�||td�||td�||td�||td�||td�||td�||td�||td�||td�||td�q=WdS)NcsG�j||||�|dd�}�jt||�||�dS)Nr4)rr�)r�rI�expected)rrr�test*sz0RoundTestCase.test_format_specials.<locals>.testz%ez%fz%gz%.0ez%.6fz%.20gz%#ez%#fz%#gz%#.20ez%#.15fz%#.3gz%+r4z% rz-infrz+infz+nanz infz nan)rtru)rr�r�ZpfmtZsfmtr)rr�test_format_specials's"z"RoundTestCase.test_format_specialscCs�xRtd�tdd�tddd�fD]&}|j|d�|j|t�q+WxRtd�tdd�tddd�fD]&}|j|d�|j|t�q�WdS)Ng�G�z��?Zndigitsr4g{�G�z�?rF)r�rZassertIsInstance�int)rr2rrr�test_None_ndigitsEs11zRoundTestCase.test_None_ndigitsN)rr
rr�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s	r�c@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zej	e
edd�d
kd�dd��ZdS)�
InfNanTestcCs�|jttd���|jttd���|jttd���|jttd���|jttd���|jttd���|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd	��d�|jttd
��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd
�|jttd�|jttd�|jttd�|jttd�|jttd�|jttd�|jttd�|jttd�|jttd�|jttd�|jttd�|jttd�|jttd�dS)Nrz+infz-infZinfinityz	+infinityz	-infinityrtz+Infz-iNF�Infinityz	+iNfInItYz	-INFINITY�infoz+infoz-info�inz+inz-inZinfinitz+Infinz-INFIZ	infinitysz++Infz-+infz
+-infinityz
--Infinity)rXrrrr�r*rr)rrrr�test_inf_from_strQsLzInfNanTest.test_inf_from_strcCs\|jtd�d�|jtd�d�|jtd�d�|jtd	�d�dS)
Ng�u�<�7~rz-infg�g�u�<�7�g�g�g�u�<�7�g�)rr�r*)rrrr�test_inf_as_str~szInfNanTest.test_inf_as_strcCs	|jttd���|jttd���|jttd���|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd��d�|jttd�|jttd�|jttd	�|jttd
�|jttd�|jttd�|jttd
�|jttd�|jttd�|jttd�dS)Nrz+nanz-nanruz+NAnz-NaNZnanaz+nanaz-nanaZnaz+naz-naz++nanz-+NANz+-NaNz--nAn)rXrrrr�r*rr)rrrr�test_nan_from_str�s,zInfNanTest.test_nan_from_strcCs\|jtd�d�|jtd�d�|jtd
�d�|jtd
�d�dS)Ng�u�<�7~rrg�g��g�u�<�7�g�g��g�g��g�u�<�7�g�g��)rr�r*)rrrr�test_nan_as_str�szInfNanTest.test_nan_as_strcCsB|jtdtd��d�|jtdtd��d�dS)Ng�?rz-infg�)rrr)rrrr�test_inf_signs�szInfNanTest.test_inf_signsr�rPr�z.applies only when using short float repr stylecCsB|jtdtd��d�|jtdtd��d�dS)Ng�?rz-nang�)rrr)rrrr�test_nan_signs�szInfNanTest.test_nan_signsN)
rr
rr�r�r�r�r�r�r�r�r�r�rrrrr�Ps-r�c@s�eZdZed�Zed�Zed�Zed�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�ZdS)�HexFloatTestCasez0x.fffffffffffff8p+1024z	0x1p-1022z0x0.0000000000001p-1022z0x0.0000000000001p0cCs�t|�st|�r7t|�t|�krqdSn:||krq|dksmtd|�td|�krqdS|jd||f�dS)Ngg�?z%r not identical to %r)rr�fail)rr2�yrrr�	identical�s6zHexFloatTestCase.identicalcCs�|j|jtdd��|j|jtdd	��|j|jtdd
��|j|jdtdd�tdd��dS)Ng�?i�i2�4g@i�i�i���i���i���)r��MINr�TINY�EPS�MAX)rrrr�	test_ends�szHexFloatTestCase.test_endsc3Cs�ddddddddd	d
ddd
ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3g3}xJ|D]B}yt|�}Wntk
r�Yq�X|jd4||f�q�WdS)5NZinfiz-Infinitz++infz-+Infz--nanz+-NaNZsnanZNaNsZnnaZanZnfZnfinityZinityZiinityZ0xnanrP� zx1.0p0z0xX1.0p0z	+ 0x1.0p0z	- 0x1.0p0z0 x1.0p0z0x 1.0p0z	0x1 2.0p0z	+0x1 .0p0z0x1. 0p0z
-0x1.0 1p0z	-0x1.0 p0z
+0x1.0p +0z	0x1.0p -0z0x1.0p 0z
+0x1.0p+ 0z
-0x1.0p- 0z
++0x1.0p-0z	--0x1.0p0z
+-0x1.0p+0z	-+0x1.0p0z	0x1.0p++0z
+0x1.0p+-0z
-0x1.0p-+0z	0x1.0p--0z0x1.0.p0z0x.p0z0x1,p0Z0x1pau0x1p0u0x1p0u0x1p0u	0x1.0p0z
0x1p0 
 0x2p0z0x1p0 0x1p0z>Expected float.fromhex(%r) to raise ValueError; got %r instead)�fromHexrr�)rZinvalid_inputsr2�resultrrr�test_invalid_inputs�st	

	z$HexFloatTestCase.test_invalid_inputscCs�dtfdtfdtfdddg}d
ddd
ddddg}xZ|D]R\}}xC|D];}x2|D]*}t|||�}|j||�qpWqcWqPWdS)Nrz	-Infinityr�1.0��?�-0x.2g�?�-0.0grPr��	�
z
 	���
)r�r����)r�r���)r�r�)rtrur�r�)rZvalue_pairsZ
whitespaceZinpr�Zlead�trailZgotrrr�test_whitespaces&	
			

z HexFloatTestCase.test_whitespacecCsG|j}|j}|j}|j}|jtd�t�|jtd�t�|jtd�t�|jtd�t�|jtd�t�|jtd�t�|jtd�t�|jtd�t�|jtd	�t�|jtd
�t�|jtd�t�|jtd�t�|jtd
�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd�d�|jtd �d�|jtd!�d�|jtd"�d�|jtd#�d�|jtd$�d�|jtd%�d�|jtd&�d�|jtd'�d�|jtd(�d�|jtd)�d�|jtd*�d+�|jtd,�d+�|jtd-�d+�|jtd.�d+�|jtd/�d0�|jtd1�d0�|jtd2�d0�|jtd3�d0�|jtd4�d0�|jtd5�d0�|jtd6�d0�|jtd7�d0�td8�}|jtd9�|�|jtd:�|�|jtd;�|�|jtd<�|�|jtd=�|�|jtd>�|�|jtd?�|�|jtd@�|�|jtdA�|�|jtdB�|�|jtd8�|�|jtdC�|�|jtdD�|�|jtdE�|�|jtdF�|�|jtdG�|�|jtdH�|�|jtdI�|�|jtdJ�|�|jtdK�|�|jtdL�|�|jtdM�|�|jtdN�|�|jtdO�|�|jtdP�|�|jtdQ�|�|jtdR�|�|jtdS�|�|jtdT�|�|jtdU�|�|jtdV�|�|jtdW�|�|jt	tdX�|jt	tdY�|jt	tdZ�|jt	td[�|jt	td\�|jt	td]�|jt	td^�|jt	td_�|jt	td`�|jt	tda�|jt	tdb�|jt	tdc�|jt	tdd�|jt	tde�|jt	tdf�|jt	tdg�|jt	tdh�|jt	tdi�|jt	tdj�|jtdk�|�|jtdl�|�|jtdm�|�|jtdn�do�|jtdp�do�|jtdq�d�|jtdr�do�|jtds�d�|jtdt�do�|jtdu�do�|jtdv�d�|jtdw�d�|jtdx�do�|jtdy�d�|jtdz�d�|jtd{�d	�|jtd|�do�|jtd}�d
�|jtd~�do�|jtd�do�|jtd��d�|jtd��d�|jtd��do�|jtd��d
�|jtd��d�|jtd��|�|jtd��|�|jtd��|�|jtd��do�|jtd��do�|jtd��|�|jtd��|�|jtd��|�|jtd��d�|�|jtd��d�|�|jtd��d�|�|jtd��d�|�|jtd��d�|�|jtd��d�|�|jtd��d�|�|jtd��d�|�|jtd��d�|�|jtd��d�|�|jtd��d�|�|jtd��d�|jtd��d�|jtd��|�|jtd��|�|jtd��|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��|d�|�|jtd��|d�|�|jtd��|d�|�|jtd��|d�|�|jtd��|d�|�|jtd��|d�|�|jtd��|d�|�|jtd��|d�|�|jtd��|d�|�|jtd��|d�|�|jtd��||�|jtd��||�|jtd��||�|jtd��||�|jtd��||�|jtd��||�|jtd��||�|jtd��|�|jtd��|�|jtd��|�|jtd��|�|jtd��|�|jtd��|�|jtd��|�|jtd��|�|jtd��|�|jtd��||�|jtd��||�|jtd��||�|jtd��||�|jtd��||�|jtd��||�|jtd��||�|jtd��|d�|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|d��|jtd��d|d��|jtd��d|d��|jtd��d|d��|jtd��d|d��|jtd��d|d��|jtd��d|d��|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|jtd��d�|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��d|�|jtd��dd�|�|jtd��dd�|�|jtd��dd�|�|jtd��dd�|�|jtd��dd�|�|jtd��dd�|�|jtd��dd�|�|jtd�dd�|�|jtd�dd�|�|jtd�dd�|�dS(Nrz+Infz-INFZiNfr�z	+INFINITYz	-infinityz	-iNFiNitYrz+NaNz-NaNz-nANrg�?z+1z1.z1.0z1.0p0Z01z01.Z0x1z0x1.z0x1.0z+0x1.0Z0x1p0Z0X1p0Z0X1P0Z0x1P0z0x1.p0z0x1.0p0z0x.1p4z0x.1p04z0x.1p004z0x1p+0z0x1P-0z+0x1p0Z0x01p0Z0x1p00z 0x1p0 z
 0x1p0z0x1p0 	Z0xap0g$@Z0xAp0Z0xaP0Z0xAP0Z0xbep0g�g@Z0xBep0Z0xbEp0z0XBE0P-4Z0xBEp0z0xB.Ep4z0x.BEp8z	0x.0BEp12z0x1.921fb54442d18p1z0x.006487ed5110b46p11z0x.00c90fdaa22168cp10z0x.01921fb54442d18p9z0x.03243f6a8885a3p8z0x.06487ed5110b46p7z0x.0c90fdaa22168cp6z0x.1921fb54442d18p5z0x.3243f6a8885a3p4z0x.6487ed5110b46p3z0x.c90fdaa22168cp2z0x3.243f6a8885a3p0z0x6.487ed5110b46p-1z0xc.90fdaa22168cp-2z0x19.21fb54442d18p-3z0x32.43f6a8885a3p-4z0x64.87ed5110b46p-5z0xc9.0fdaa22168cp-6z0x192.1fb54442d18p-7z0x324.3f6a8885a3p-8z0x648.7ed5110b46p-9z0xc90.fdaa22168cp-10z0x1921.fb54442d18p-11z0x1921fb54442d1.8p-47z0x3243f6a8885a3p-48z0x6487ed5110b46p-49z0xc90fdaa22168cp-50z0x1921fb54442d18p-51z0x3243f6a8885a30p-52z0x6487ed5110b460p-53z0xc90fdaa22168c0p-54z0x1921fb54442d180p-55z	-0x1p1024z	0x1p+1025z	+0X1p1030z
-0x1p+1100Z0X1p123456789123456789z+0X.8p+1025z+0x0.8p1025z-0x0.4p1026z	0X2p+1023z	0x2.p1023z-0x2.0p+1023z
+0X4p+1022z0x1.ffffffffffffffp+1023z-0X1.fffffffffffff9p1023z0X1.fffffffffffff8p1023z+0x3.fffffffffffffp1022z0x3fffffffffffffp+970Z0x10000000000000000p960z-0Xffffffffffffffffp960z+0x1.fffffffffffffp+1023z-0X1.fffffffffffff7p1023z$0X1.fffffffffffff7fffffffffffffp1023Z0x0p0gZ0x0p1000z	-0x0p1023Z0X0p1024z	-0x0p1025Z0X0p2000Z0x0p123456789123456789z-0X0p-0z
-0X0p-1000z	0x0p-1023z
-0X0p-1024z
-0x0p-1025z
-0x0p-1072z	0X0p-1073z
-0x0p-1074z	0x0p-1075z	0X0p-1076z
-0X0p-2000z-0x0p-123456789123456789z	0X1p-1075z
-0X1p-1075z-0x1p-123456789123456789z0x1.00000000000000001p-1075z-0x1.1p-1075z0x1.fffffffffffffffffp-1075z	0x1p-1076z	0X2p-1076z	0X3p-1076z	0x4p-1076z	0X5p-1076z	0X6p-1076rFz	0x7p-1076z	0X8p-1076z	0X9p-1076z	0xap-1076z	0Xbp-1076r�z	0xcp-1076z	0Xdp-1076z	0Xep-1076r5z	0xfp-1076z
0x10p-1076z
-0x1p-1076z
-0X2p-1076z
-0x3p-1076z
-0X4p-1076z
-0x5p-1076z
-0x6p-1076z
-0X7p-1076z
-0X8p-1076z
-0X9p-1076z
-0Xap-1076z
-0xbp-1076z
-0xcp-1076z
-0Xdp-1076z
-0xep-1076z
-0Xfp-1076z-0X10p-1076z0x0.ffffffffffffd6p-1022z0x0.ffffffffffffd8p-1022z0x0.ffffffffffffdap-1022z0x0.ffffffffffffdcp-1022z0x0.ffffffffffffdep-1022z0x0.ffffffffffffe0p-1022z0x0.ffffffffffffe2p-1022z0x0.ffffffffffffe4p-1022z0x0.ffffffffffffe6p-1022z0x0.ffffffffffffe8p-1022z0x0.ffffffffffffeap-1022z0x0.ffffffffffffecp-1022z0x0.ffffffffffffeep-1022z0x0.fffffffffffff0p-1022z0x0.fffffffffffff2p-1022z0x0.fffffffffffff4p-1022z0x0.fffffffffffff6p-1022z0x0.fffffffffffff8p-1022z0x0.fffffffffffffap-1022z0x0.fffffffffffffcp-1022z0x0.fffffffffffffep-1022z0x1.00000000000000p-1022z0x1.00000000000002p-1022z0x1.00000000000004p-1022z0x1.00000000000006p-1022z0x1.00000000000008p-1022z0x1.0000000000000ap-1022z0x1.0000000000000cp-1022z0x1.0000000000000ep-1022z0x1.00000000000010p-1022z0x1.00000000000012p-1022z0x1.00000000000014p-1022z0x1.00000000000016p-1022z0x1.00000000000018p-1022z0x0.fffffffffffff0p0z0x0.fffffffffffff1p0z0X0.fffffffffffff2p0z0x0.fffffffffffff3p0z0X0.fffffffffffff4p0z0X0.fffffffffffff5p0z0X0.fffffffffffff6p0z0x0.fffffffffffff7p0z0x0.fffffffffffff8p0z0X0.fffffffffffff9p0z0X0.fffffffffffffap0z0x0.fffffffffffffbp0z0X0.fffffffffffffcp0z0x0.fffffffffffffdp0z0X0.fffffffffffffep0z0x0.ffffffffffffffp0z0X1.00000000000000p0z0X1.00000000000001p0z0x1.00000000000002p0z0X1.00000000000003p0z0x1.00000000000004p0z0X1.00000000000005p0z0X1.00000000000006p0z0X1.00000000000007p0z(0x1.00000000000007ffffffffffffffffffffp0z0x1.00000000000008p0z&0x1.00000000000008000000000000000001p0r4z0X1.00000000000009p0z0x1.0000000000000ap0z0x1.0000000000000bp0z0X1.0000000000000cp0z0x1.0000000000000dp0z0x1.0000000000000ep0z0X1.0000000000000fp0z0x1.00000000000010p0z0X1.00000000000011p0z0x1.00000000000012p0z0X1.00000000000013p0z0X1.00000000000014p0z0x1.00000000000015p0z0x1.00000000000016p0z0X1.00000000000017p0z(0x1.00000000000017ffffffffffffffffffffp0z0x1.00000000000018p0z&0X1.00000000000018000000000000000001p0z0x1.00000000000019p0z0X1.0000000000001ap0z0X1.0000000000001bp0z0x1.0000000000001cp0z0x1.0000000000001dp0z0x1.0000000000001ep0z0X1.0000000000001fp0z0x1.00000000000020p0g�g�g�g�g�g�g�g�g�g�g�g�g�g����rrrr���rr���rr)
r�r�r�r�r�r�rtrurrn)rr�r�r�r�Zpirrr�
test_from_hex(s				zHexFloatTestCase.test_from_hexcCsdd�}xdtt|j|j|j|j|jdgD]4}|j|||��|j|||��q;Wddl}x�td�D]�}|jdd�}|j�}|j	dd	g�}y|t
||�}Wntk
r�Yq�X|j|tt
|���q�WdS)
NcSstt|��S)N)r��toHex)r2rrr�	roundtripFsz2HexFloatTestCase.test_roundtrip.<locals>.roundtripgri'i�g�?iP���g�)rurtr�r�r�r�rkrjZ	randrangeZchoicerrnr�r)rrr2rkro�e�mr8rrr�test_roundtripEs5
zHexFloatTestCase.test_roundtripcCs�Gdd�dt�}|jdj��}|jt|�|�|j|d�Gdd�dt�}|jdj��}|jt|�|�|j|d�|jt|dd�d	�dS)
Nc@seZdZdd�ZdS)z)HexFloatTestCase.test_subclass.<locals>.FcSstj||d�S)Nr4)rrG)rHrIrrrrG\sz1HexFloatTestCase.test_subclass.<locals>.F.__new__N)rr
rrGrrrrrR[srRg�?g@c@seZdZdd�ZdS)z*HexFloatTestCase.test_subclass.<locals>.F2cSs
d|_dS)N�bar)�foo)rrIrrr�__init__dsz3HexFloatTestCase.test_subclass.<locals>.F2.__init__N)rr
rrrrrr�F2csr
rZnoner
)r�fromhex�hexrUr0rr�)rrRr1r
rrr�
test_subclassZszHexFloatTestCase.test_subclassN)rr
rr�r�r�r�r�r�r�r�rrr	rrrrrr��s
@�r��__main__);rmZmathr}r�rkr�r�rTr�r�rrrrrrrtru�hasattrZhave_getformatr�Zrequires_getformatZrequires_setformatr��dirnamer��curdirZtest_dirr�r�rrZTestCaserr�r�r+�reversedr�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�rrr�r�mainrrrr�<module>s^"			��%K@vf		��