Your IP : 216.73.216.213


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.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__cCsdstd��dS)NFz/__float__ should not be invoked for comparisons)�AssertionError)r
rrr�	__float__(szDummyFloat.__float__cCsdstd��dS)NFz-__sub__ should not be invoked for comparisons)r#)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.r4r/r3)r
rrrrr@szDummyRational.__lt__cCs|j|j|j|jkS)N)r.r4r/r3)r
rrrrr"CszDummyRational.__gt__cCs|j|j|j|jkS)N)r.r4r/r3)r
rrrrrFszDummyRational.__le__cCs|j|j|j|jkS)N)r.r4r/r3)r
rrrrr IszDummyRational.__ge__cCsdstd��dS)NFz__float__ should not be invoked)r#)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)rrrrr5Qsr5c@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����rArArArArAi��i�i����)ZassertWarnsRegex�DeprecationWarningr-�warnings�catch_warnings�filterwarnings�assertEqualr)r
rrr�testMiscVs&
+zGcdTest.testMiscN)r&r'r(rGrrrrr6Tsr6cCs|j|jfS)N)�	numerator�denominator)�rrrr�_componentsmsrKc@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)rF�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)rF�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)0Nrr7r9����
r;r:r?��	�	�	�ic�qzFraction(12, 0)r<g�?y@z3/2yy�?)rr7)r9r7)r9rWrA)rAr7rArA)rAr7rA)r7r7���ra)r7rX)r9r;�m+?�R)rbr7lm+?�R)rWr?���)rcrYi����)r]r^y�?@)rFrKrrV�ZeroDivisionError�assertRaisesr)r
rrr�testInit�s$%((1
zFractionTest.testInitcCs�|jd
ttd���|jdttd���|jdttd	���|jtttd
��|jtttd��|jtttd��dS)NrYrXg@rr7g��L�33f�g�������?�nan�infz-inf)rYrX)rr7g�)rgrh)rFrKrre�
ValueErrorr
�
OverflowError)r
rrr�testInitFromFloat�s	zFractionTest.testInitFromFloatcCs�|jdtttd����|jdtttd����|jdtttd	����|jtttd
��|jtttd��|jtttd��|jtttd
��dS)Nr[rZz1.1r9��z3.5e-2rr7z.000e20ri�snanrjz-inf)r[rZ)r9rn)rr7)rFrKrrrerkrl)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)?NrYr7�5rWrXz3/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: '.'�.)rYr7)rWrX)rWrX���)rwrX)rrrX)rsrY��)rxrYrw)rwr7)rWrY)r7rt)rur7����)ryr7)rr7)rr7)rFrKrrVrdrk)r
rrr�testFromString�sX








zFractionTest.testFromStringcCs�tdd�}|jdd�|jd
t|��|jtt|dd�|jtt|dd�|jdt|��d	|_d|_|jdt|��|j	td	d�|�dS)
Nr9rWrXr;rHr<rI��)r9rW)r9rW)r|rX)
rrrFrKre�AttributeError�setattrr3r4�assertNotEqual)r
rJrrr�
testImmutable�s		zFractionTest.testImmutablecCs�|jttjd�|jdttjd���d}|j|dfttj|���|jdttjd���|jdttjd���|jdttjd���|jdttjd
���|jtd�ttjd
���|jd ttjd���|jdttjd���d}||}|jtdtj|�|jtdtj|�|jt	dtj|�dS)!NrWy@rZr7l�{�C	rgg$@rYrXg@�l+?�Rg�J��-�Dr:��L�33f� g������	@g�zCannot convert inf to Fraction.z Cannot convert -inf to Fraction.zCannot convert nan to Fraction.y@@)rZr7)rr7g�)rZr7���)r�rXg�)r�r7lm+?�R)r�r�)
rerrrrFrKr
rVrlrk)r
Zbigintrjrirrr�
testFromFloat�s0%	%	

zFractionTest.testFromFloatcCs�|jttjd�|jtdd�tjd��|jtd�tjtd���|jtdd�tjtd���|jtdd	�tjtd
���|jtd�tjtd���|jdtdd�tjtddd
���|jtdtjtd��|jtdtjtd��|jtdtjtd��|jtdtjtd��dS)NrWy@rZr7rz-0rYz0.5i�z5e-3i�Z5e3�z0.�9z$Cannot convert Infinity to Fraction.rjz%Cannot convert -Infinity to Fraction.z-infzCannot convert NaN to Fraction.riz Cannot convert sNaN to Fraction.roy@@l�7�3M�e')	rerrZfrom_decimalrFrrVrlrk)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��rn�dr7�e�frz$max_denominator should be at least 1i����rA)rrA)rrFZlimit_denominatorrVrk)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)&Nr7r[rZrXrrYr;r9FTrWg�������?�2i��7g@�3�1yrAi����rai����rAi����rAi����rAi����rAr�rai�rAi����gUUUUUU�?y�������?)rNr,�truncrZfloorZceil�int�roundrF�boolr
rerl�assertAlmostEqual�complex)r
rrr�testConversions9s""""""!	2zFractionTest.testConversionscCs�|jtd�ttd
�d��|jtd�ttd�d��|jtd�ttd�d��|jtdd�ttdd
�d��|jtdd�ttdd
�d��dS)Nrn�rX�r��r7rZr;r��i8���ij���rai8���i���rarArai�rai��)rNrr�)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)Nr7rXrZrYrWr�r|r\r:r9��g@rrwlm+?�Rlm+?�Ri����rwrArArArArararAra)	rFrrN�powr��real�imagrHrI)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)2Nr[rZr7g�������?g�?yr\g�������?g�������?g$@rr:r_gr�rXr|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�!ray�������?y�?rAraray�?y�?ra)
rNrr�r�r�rFr�rerdr)r
r�rrr�testMixedArithmeticus^&&&&&&&&&&&&&z FractionTest.testMixedArithmeticcCsT|jttjtdd�td��|jttjtd�tdd��dS)NrWr[z	3.1415926)rerr�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)Nr7rXrW)�
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)Nr7rXrWr|r9)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@r7rWgUUUUUU�?)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)NrXrYr|rWr7g333333�?g�������?g�?rjz-infrrZrir9�r<��Yrwi����)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�?r7rXg333333�?g�������?r|rWrYrjz-infrrZrir9r�r<r�r�rwi����)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)NrZr:g�J��-�Dr7lm+?�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)NrZr:rWr�g�?gg�������?lm+?�Rlm+?�Rlm+?�Rlm+?�Rlm+?�Rlm+?�R)r�rr�rerrr!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�?r7rXg333333�?g�������?r|rWrYrir9rjz-inf)r�rr�r
)r
rrr�testMixedEqual,s"""zFractionTest.testMixedEqualcCs�|jdttdd���|jdttd���|jdttdd
���|jd
ttdd���|jdttdd���dS)NzFraction(7, 3)r9rWz Fraction(6283185307, 2000000000)z3.1415926535z#Fraction(-1, 100000000000000000000)r7rZ�z7/3r�l F�x:^Vl���� F�x:^V)rF�reprrrO)r
rrr�testStringification:s		z FractionTest.testStringificationcCs�tjj}tjj}|jtd�ttdd���|jtd�ttd	���|jttd
��ttd���|j|ttd|���|jttd��td
�j	��dS)Ng@rYrXrZ�2r:r7l +�O��tC3�y+v�l +�O��tC3�y+v�lm+?�Rlm+?�RrArA)
�sys�	hash_info�modulusrjrF�hashrrr
�__hash__)r
ZhmodZhinfrrr�testHashCs%"(zFractionTest.testHashc	Cs�td�}d|dddddf\}}}}}}}xkt||�tdd	�kr�|}|||d}}|||d}}|||}||7}q?W|jtj|�dS)
NrWrr7�rZr\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)Nr7rrZr\rXiʚ;rA)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)Nrrr9)
rr5rFrr�idrrrrN)r
rJZdrrrr�test_copy_deepcopy_pickleis""""z&FractionTest.test_copy_deepcopy_picklecCs,tdd�}|jtt|dd�dS)Nrrr9�arZ)rrer}r~)r
rJrrr�
test_slotstszFractionTest.test_slotsN)!r&r'r(rNrVrfrrmrprzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrLqs:

5: 
	
rL�__main__)r)�decimalrZtest.supportrr,rrr1r�ZunittestrCrr�picklerrr2rr-�objectrr+r5ZTestCaser6rKrLr&�mainrrrr�<module>s.		  ��