Your IP : 216.73.217.32


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



��Yf]g�@sUdZddlmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZm
Z
ddlmZmZejZejZGdd�de�ZGd	d
�d
e�ZGdd�dej�ZGd
d�de
j�Zdd�ZGdd�de
j�ZedkrQe
j�dS)zTests for Lib/fractions.py.�)�Decimal)�requires_IEEE_754N)�copy�deepcopy)�dumps�loadsc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZeZ
dS)�
DummyFloatz8Dummy float class for testing comparisons with FractionscCs(t|t�std��||_dS)Nz-DummyFloat can only be initialized from float)�
isinstance�float�	TypeError�value)�selfr�r�8/opt/alt/python35/lib64/python3.5/test/test_fractions.py�__init__szDummyFloat.__init__cCsUt|tj�r+|tj|j�|�St|t�rM||j|j�StSdS)N)r	�numbersZRational�F�
from_floatrr�NotImplemented)r
�other�oprrr�_richcmps
zDummyFloat._richcmpcCs|j|tj�S)N)r�operator�eq)r
rrrr�__eq__!szDummyFloat.__eq__cCs|j|tj�S)N)rr�le)r
rrrr�__le__"szDummyFloat.__le__cCs|j|tj�S)N)rr�lt)r
rrrr�__lt__#szDummyFloat.__lt__cCs|j|tj�S)N)rr�ge)r
rrrr�__ge__$szDummyFloat.__ge__cCs|j|tj�S)N)rr�gt)r
rrrr�__gt__%szDummyFloat.__gt__cCsdS)Nr)r
rrr�	__float__(szDummyFloat.__float__cCsdS)Nr)r
rrrr�__sub__,szDummyFloat.__sub__N)�__name__�
__module__�__qualname__�__doc__rrrrrr r"r#r$�__rsub__rrrrrsrc@sjeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�
DummyRationalzATest comparison of Fraction with a naive rational implementation.cCs0tj||�}|||_|||_dS)N)�math�gcd�num�den)r
r-r.�grrrr4s
zDummyRational.__init__cCs<t|tj�r4|j|jko3|j|jkStSdS)N)r	�	fractions�Fractionr-�
_numeratorr.�_denominatorr)r
rrrrr9szDummyRational.__eq__cCs|j|j|j|jkS)N)r-r3r.r2)r
rrrrr@szDummyRational.__lt__cCs|j|j|j|jkS)N)r-r3r.r2)r
rrrrr"CszDummyRational.__gt__cCs|j|j|j|jkS)N)r-r3r.r2)r
rrrrrFszDummyRational.__le__cCs|j|j|j|jkS)N)r-r3r.r2)r
rrrrr IszDummyRational.__ge__cCsdS)Nr)r
rrrr#NszDummyRational.__float__N)r%r&r'r(rrrr"rr r#rrrrr*1sr*c@seZdZdZdS)�
DummyFractionz6Dummy Fraction subclass for copy and deepcopy testing.N)r%r&r'r(rrrrr4Qsr4c@seZdZdd�ZdS)�GcdTestcCs�|jtd��tdd�WdQRXtj���tjddt�|jdtdd��|jdtdd��|jdtdd��|jdtdd��|jdtdd��|jdtdd��|jdtdd��|jdtdd��|jdtd	d
��|jdtd
d��|jtdd
�d�|jtd	d
�d�|jttd	�td
��td��|jttd	d�td
d��tdd��WdQRXdS)Nzfractions\.gcd��ignorer�����x�Tg^@g(@gU@�M�7i����r@r@r@r@r@i��i�i����)ZassertWarnsRegex�DeprecationWarningr,�warnings�catch_warnings�filterwarnings�assertEqualr)r
rrr�testMiscVs&
+zGcdTest.testMiscN)r%r&r'rFrrrrr5Tsr5cCs|j|jfS)N)�	numerator�denominator)�rrrr�_componentsmsrJc@sreZdZdd�Zdd�Zdd�Zedd��Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Z d;S)<�FractionTestcCs0|jt|�t|��|j||�dS)z4Asserts that both the types and values are the same.N)rE�type)r
ZexpectedZactualrrr�assertTypedEqualssszFractionTest.assertTypedEqualscOsgy|||�Wn;|k
rN}z|j|t|��WYdd}~XnX|jd|j�dS)z@Asserts that callable(*args, **kwargs) raises exc_type(message).Nz
%s not raised)rE�strZfailr%)r
�exc_type�message�callable�args�kwargs�errr�assertRaisesMessagexs
)z FractionTest.assertRaisesMessagecCs|jdtt���|jdttd���|jdtttdd����|jdttdd���|jd ttdd!���|jd"ttd#d$���|jd%ttdd���|jd&ttdd���|jd(ttd)���|jd*tttdd�d���|jd,ttdtd-d����|jd.tttdd�tdd����|jtdtdd�|jttd/�|jttdd�|jttdd�|jttdd�dS)0Nrr6r8����
r:r9r>��	�	�	�ic�qzFraction(12, 0)r;g�?y@z3/2yy�?)rr6)r8r6)r8rVr@)r@r6r@r@)r@r6r@)r6r6���r`)r6rW)r8r:�m+?�R)rar6lm+?�R)rVr>���)rbrXi����)r\r]y�?@)rErJrrU�ZeroDivisionError�assertRaisesr)r
rrr�testInit�s$%((1
zFractionTest.testInitcCs�|jd
ttd���|jdttd���|jdttd	���|jtttd
��|jtttd��|jtttd��dS)NrXrWg@rr6g��L�33f�g�������?�nan�infz-inf)rXrW)rr6g�)rfrg)rErJrrd�
ValueErrorr
�
OverflowError)r
rrr�testInitFromFloat�s	zFractionTest.testInitFromFloatcCs�|jdtttd����|jdtttd����|jdtttd	����|jtttd
��|jtttd��|jtttd��|jtttd
��dS)NrZrYz1.1r8��z3.5e-2rr6z.000e20rh�snanriz-inf)rZrY)r8rm)rr6)rErJrrrdrjrk)r
rrr�testInitFromDecimal�s			z FractionTest.testInitFromDecimalcCsh|jd-ttd���|jd.ttd���|jd/ttd���|jd1ttd���|jd2ttd
���|jd3ttd���|jd5ttd
���|jd7ttd���|jd8ttd���|jd9ttd���|jd:ttd���|jd<ttd���|jd=ttd���|jd>ttd���|jtdtd�|jtdtd�|jtdtd�|jtdtd �|jtd!td"�|jtd#td$�|jtd%td&�|jtd'td(�|jtd)td*�|jtd+td,�dS)?NrXr6�5rVrWz3/2z 
  +3/2z-3/2  �
z    013/02 
  �z 3.2 z -3.2 z -3. z .6 �5z32.e-5�@Bz1E+06i0z-1.23e4rz .0e+0	z-0.000e0zFraction(3, 0)z3/0z"Invalid literal for Fraction: '3/'z3/z"Invalid literal for Fraction: '/2'z/2z$Invalid literal for Fraction: '3 /2'z3 /2z$Invalid literal for Fraction: '3/+2'z3/+2z%Invalid literal for Fraction: '+ 3/2'z+ 3/2z#Invalid literal for Fraction: '3a2'Z3a2z%Invalid literal for Fraction: '3/7.2'z3/7.2z%Invalid literal for Fraction: '3.2/7'z3.2/7z!Invalid literal for Fraction: '.'�.)rXr6)rVrW)rVrW���)rvrW)rqrW)rrrX��)rwrXrv)rvr6)rVrX)r6rs)rtr6����)rxr6)rr6)rr6)rErJrrUrcrj)r
rrr�testFromString�sX








zFractionTest.testFromStringcCs�tdd�}|jdd�|jd
t|��|jtt|dd�|jtt|dd�|jdt|��d	|_d|_|jdt|��|j	td	d�|�dS)
Nr8rVrWr:rGr;rH��)r8rV)r8rV)r{rW)
rrrErJrd�AttributeError�setattrr2r3�assertNotEqual)r
rIrrr�
testImmutable�s		zFractionTest.testImmutablecCs�|jttjd�|jdttjd���d}|j|dfttj|���|jdttjd���|jdttjd���|jdttjd���|jdttjd
���|jtd�ttjd
���|jd ttjd���|jdttjd���d}||}|jtdtj|�|jtdtj|�|jt	dtj|�dS)!NrVy@rYr6l�{�C	rgg$@rXrWg@�l+?�Rg�J��-�Dr9��L�33f� g������	@g�zCannot convert inf to Fraction.z Cannot convert -inf to Fraction.zCannot convert nan to Fraction.y@@)rYr6)rr6g�)rYr6���)r�rWg�)r�r6lm+?�R)r�r�)
rdrrrrErJr
rUrkrj)r
Zbigintrirhrrr�
testFromFloat�s0%	%	

zFractionTest.testFromFloatcCs�|jttjd�|jtdd�tjd��|jtd�tjtd���|jtdd�tjtd���|jtdd	�tjtd
���|jtd�tjtd���|jdtdd�tjtddd
���|jtdtjtd��|jtdtjtd��|jtdtjtd��|jtdtjtd��dS)NrVy@rYr6rz-0rXz0.5i�z5e-3i�Z5e3�z0.�9z$Cannot convert Infinity to Fraction.riz%Cannot convert -Infinity to Fraction.z-infzCannot convert NaN to Fraction.rhz Cannot convert sNaN to Fraction.rny@@l�7�3M�e')	rdrrZfrom_decimalrErrUrkrj)r
rrr�testFromDecimals("%((%zFractionTest.testFromDecimalcCsAtd�}|j|jd�tdd��|j|jd�tdd��|j|jd�tdd��|j|jd�tdd��|jtdd	�jd
�td��|jtdd	�jd�td
d��|jtd�jd�td��x-dD]%}|jtdtd�j|�qWdS)Nz3.1415926535897932i'icr_�piM�j��rm�dr6�e�frz$max_denominator should be at least 1i����r@)rr@)rrEZlimit_denominatorrUrj)r
Zrpi�irrr�testLimitDenominator+s"#""(+%
z!FractionTest.testLimitDenominatorcCs!|jdtjtdd���|jdtjtdd���|jdtjtdd���|jdtjtdd���|jdtjtdd���|jdttdd���|jdttdd���|jdttdd���|jd ttd!d���|jd"ttd#d���|jd	t	tdd���|jd
t	tdd���|jdt
tdd���|jtt
td
dd��|j
d$t
ttd
dd�tddd����|jd%ttdd���dS)&Nr6rZrYrWrrXr:r8FTrVg�������?�2i��7g@�3�1yr@i����r`i����r@i����r@i����r@i����r@r�r`i�r@i����gUUUUUU�?y�������?)rMr+�truncrZfloorZceil�int�roundrE�boolr
rdrk�assertAlmostEqual�complex)r
rrr�testConversions9s""""""!	2zFractionTest.testConversionscCs�|jtd�ttd
�d��|jtd�ttd�d��|jtd�ttd�d��|jtdd�ttdd
�d��|jtdd�ttdd
�d��dS)Nrm�rW�r��r6rYr:r��i8���ij���r`i8���i���r`r@r`i�r`i��)rMrr�)r
rrr�	testRoundQs
%%%+zFractionTest.testRoundcCs|jtdd�tdd�tdd��|jtdd�tdd�tdd��|jtdd�tdd�tdd��|jtdd�tdd�tdd��|jdtdd�tdd��|jdtdd�td��|jtdd�tdd�tdd��|jtdd�tdd�td��|jtdd�tdd�td��|jd
td�tdd��|jtdd�tdd�
�ttd�tdd��}|j|jd�|j|jd�tdd�d}|j|tdd��|j|jd�|j|jd�tdd�d}|j|tdd��|j|jd�|j|jd�tdd�d}|j|tdd��|j|jd�|j|jd�dS)Nr6rWrYrXrVr�r{r[r9r8��g@rrvlm+?�Rlm+?�Ri����rvr@r@r@r@r`r`r@r`)	rErrM�powr��real�imagrGrH)r
�z�prrr�testArithmeticXs4////&#/,,##zFractionTest.testArithmeticcCs�|jtdd�tdd�d�|jdtdd�d�|jdtdd�d�|jtdd�dtdd��|jddtdd��|jddtdd��|jtdd�tdd�d�|jdtdd�d�|jdtdd�d�|jtdd�dtdd��|jddtdd��|jddtdd��|jtdd�tdd�d�|jd	tdd�d�|jdtdd�d �|jtdd�dtdd��|jd	dtdd��|jd!d"tdd��|jtdd�tdd�d�|jd	tdd�d�|jd#tdd�d$�|jtdd�dtdd��|jd
dtdd��|jd%d&tdd��|jdtdd�d�|jdtdd�d�|jddtdd��|jd'd(tdd��|jddtdd��|jtdd�tdd�d�|jd	tdd�d�|jtdd�dtdd��|jddtdd��|jtdd�tdd�d)�|jtdd�tdd�d�|jd	tdd�d�|jd*tdd�d+�|jddtdd��td,tdd��}|jd|j�|jd|j�|jtdd�dtd-d��|jddtdd��|jddtd.d��|jd/d0tdd��|jtt	jtdd�d1�dS)2NrZrYr6g�������?g�?yr[g�������?g�������?g$@rr9r^gr�rWr{g@g�?y�������?y�?y�������?y�?i����g�������g�������y�������y�?y�������?y�?y�������?y�?y�������?y�?y�������?y�?y$@y�?lm+?�Rl�d�&O�!r`y�������?y�?r@r`r`y�?y�?r`)
rMrr�r�r�rEr�rdrcr)r
r�rrr�testMixedArithmeticus^&&&&&&&&&&&&&z FractionTest.testMixedArithmeticcCsT|jttjtdd�td��|jttjtd�tdd��dS)NrVrZz	3.1415926)rdrr�addrr)r
rrr�testMixingWithDecimal�sz"FractionTest.testMixingWithDecimalcCsQ|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�dS)Nr6rWrV)�
assertTruer�assertFalse)r
rrr�testComparisons�s%%%%%%%%zFractionTest.testComparisonscCs|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�|jtdd�tdd�k�dS)Nr6rWrVr{r8)r�rr*r�)r
rrr�testComparisonsDummyRational�s8%%%%%%%%%%%%%%%%%%%%%%%%%%%z)FractionTest.testComparisonsDummyRationalcCs�td�}tdd�}|j||k�|j||kpI||k�|j||k�|j||ko{||k�|j||k�|j||kp�||k�|j||k�|j||ko�||k�dS)Ng�?g@r6rVgUUUUUU�?)rrr�r�)r
�x�yrrr�testComparisonsDummyFloat�sz&FractionTest.testComparisonsDummyFloatcCs�|jdtdd�k�|jdtdd�k�|jtdd�dk�|jtdd�dk�|jtdd�dk�|jtdd�dk�|jdtdd�k�|jdtdd�k�|jtd	�tdd�k�|jtd
�tdd�k�|jtd
�tdd�k�|jtdd�td	�k�|jtdd�td
�k�|jtdd�td
�k�dS)NrWrXr{rVr6g333333�?g�������?g�?riz-infrrYrhr8�r;��Yrvi����)r�rr�r
)r
rrr�
testMixedLess�s"""""zFractionTest.testMixedLesscCs�|jdtdd�k�|jdtdd�k�|jtdd�dk�|jtdd�dk�|jdtdd�k�|jdtdd�k�|jtdd�dk�|jtdd�dk�|jtd	�tdd�k�|jtd
�tdd�k�|jtd
�tdd�k�|jtdd�td	�k�|jtdd�td
�k�|jtdd�td
�k�dS)Ng�?r6rWg333333�?g�������?r{rVrXriz-infrrYrhr8r�r;r�r�rvi����)r�rr�r
)r
rrr�testMixedLessEqual�s"""""zFractionTest.testMixedLessEqualcCs�|jtd�td�k�|jdtttjd�d��k�|jdttjd�d�k�|jdttjd�d�k�|jdttjd�d�k�|jdttjd�d�k�dS)NrYr9g�J��-�Dr6lm+?�Rlm+?�R)r�rr
r+r�r�)r
rrr�testBigFloatComparisonss,&&&z$FractionTest.testBigFloatComparisonscCsg|jtd�td	�k�|jttjtd
�td��|jttjtd�td
��tdd�}tdd�}tdd�}|j||k�|j||k�|j||k�|j||k�x~tj	tjtjtj
fD]^}|jt|||�|jt|||�|jt|||�|jt|||�qWdS)NrYr9rVr�g�?gg�������?lm+?�Rlm+?�Rlm+?�Rlm+?�Rlm+?�Rlm+?�R)r�rr�rdrrr!rr�rr)r
r�r��wrrrr�testBigComplexComparisonss%%%z&FractionTest.testBigComplexComparisonscCsl|jdtdd�k�|jdtdd�k�|jtdd�dk�|jtdd�dk�|jdtdd�k�|jdtdd�k�|jtdd�dk�|jtdd�dk�|jtdd�td	�k�|jtd	�tdd
�k�|jtdd�td�k�|jtd�tdd�k�dS)
Ng�?r6rWg333333�?g�������?r{rVrXrhr8riz-inf)r�rr�r
)r
rrr�testMixedEqual,s"""zFractionTest.testMixedEqualcCs�|jdttdd���|jdttd���|jdttdd
���|jd
ttdd���|jdttdd���dS)NzFraction(7, 3)r8rVz Fraction(6283185307, 2000000000)z3.1415926535z#Fraction(-1, 100000000000000000000)r6rY�z7/3r�l F�x:^Vl���� F�x:^V)rE�reprrrN)r
rrr�testStringification:s		z FractionTest.testStringificationcCs�tjj}tjj}|jtd�ttdd���|jtd�ttd	���|jttd
��ttd���|j|ttd|���|jttd��td
�j	��dS)Ng@rXrWrY�2r9r6l +�O��tC3�y+v�l +�O��tC3�y+v�lm+?�Rlm+?�Rr@r@)
�sys�	hash_info�modulusrirE�hashrr~r
�__hash__)r
ZhmodZhinfrrr�testHashCs%"(zFractionTest.testHashc	Cs�td�}d|dddddf\}}}}}}}xkt||�tdd	�kr�|}|||d}}|||d}}|||}||7}q?W|jtj|�dS)
NrVrr6�rYr[r�� iʚ;)r�absr�r+Zpi)	r
Zthree�lasts�t�s�nZna�dZdarrr�testApproximatePiNs0"zFractionTest.testApproximatePicCs�td�}ddtd�dddf\}}}}}}xot||�tdd�kr�|}|d7}|||d9}|||9}|d9}||||7}q?W|jtjd�|�dS)Nr6rrYr[rWiʚ;r@)rr�r�r+Zcos)r
r�r�r�r�Zfactr-Zsignrrr�testApproximateCos1[s0"

z FractionTest.testApproximateCos1cCs�tdd�}tdd�}|j|tt|���|jt|�tt|���|jt|�tt|���|jt|�tt|���|jt|�tt|���|j	|t|��|j	|t|��dS)Nrqr8)
rr4rErr�idrrr~rM)r
rIZdrrrr�test_copy_deepcopy_pickleis""""z&FractionTest.test_copy_deepcopy_picklecCs,tdd�}|jtt|dd�dS)Nrqr8�arY)rrdr|r})r
rIrrr�
test_slotstszFractionTest.test_slotsN)!r%r&r'rMrUrerrlroryrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrKqs:

5: 
	
rK�__main__)r(�decimalrZtest.supportrr+rrr0r�ZunittestrBrr�picklerrr1rr,�objectrr*r4ZTestCaser5rJrKr%�mainrrrr�<module>s.		  ��