Your IP : 216.73.216.213


Current Path : /opt/alt/python36/lib64/python3.6/test/__pycache__/
Upload File :
Current File : //opt/alt/python36/lib64/python3.6/test/__pycache__/test_fractions.cpython-36.opt-1.pyc

3

� f�g�@s�dZddlmZddlmZddlZddlZddlZddlZddl	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�Zedkr�e
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 FractionscCst|t�std��||_dS)Nz-DummyFloat can only be initialized from float)�
isinstance�float�	TypeError�value)�selfr�r�8/opt/alt/python36/lib64/python3.6/test/test_fractions.py�__init__s
zDummyFloat.__init__cCs>t|tj�r|tj|j�|�St|t�r6||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__rrrrrsrc@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�
DummyRationalzATest comparison of Fraction with a naive rational implementation.cCs$tj||�}|||_|||_dS)N)�math�gcd�num�den)r
r-r.�grrrr4s
zDummyRational.__init__cCs,t|tj�r$|j|jko"|j|jkStSdS)N)r	�	fractions�Fractionr-�
_numeratorr.�_denominatorr)r
rrrrr9szDummyRational.__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*1sr*c@seZdZdZdS)�
DummyFractionz6Dummy Fraction subclass for copy and deepcopy testing.N)r%r&r'r(rrrrr4Qsr4c@seZdZdd�ZdS)�GcdTestcCsd|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'rFrrrrr5Tsr5cCs|j|jfS)N)�	numerator�denominator)�rrrr�_componentsmsrJc@s�eZdZdd�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)<�FractionTestcCs$|jt|�t|��|j||�dS)z4Asserts that both the types and values are the same.N)rE�type)r
ZexpectedZactualrrr�assertTypedEqualssszFractionTest.assertTypedEqualscOsVy|||�Wn2|k
r@}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�|jttddd�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&"
zFractionTest.testInitcCsv|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�szFractionTest.testInitFromFloatcCs�|jdtttd����|jdtttd����|jdtttd	����|jtttd
��|jtttd��|jtttd��|jtttd
��dS)NrZrYz1.1r8��z3.5e-2rr6z.000e20rh�snanriz-inf)rZrY)r8rm)rr6)rErJrrrdrjrk)r
rrr�testInitFromDecimal�sz FractionTest.testInitFromDecimalcCs�|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�sXzFractionTest.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
���|jdttjd���|jdttjd���d}||}|jtdtj|�|jtdtj|�|jt	dtj|�dS) NrVy@rYr6l�{�C	rgg$@rXrWg@�l+?�Rg�J��-�Dr9��L�33f� g������	@g�z(cannot convert Infinity to integer ratioz#cannot convert NaN to integer ratioy@@)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 integer ratioriz-infz#cannot convert NaN to integer ratiorhrny@@l�7�3M�e')	rdrrZfrom_decimalrErrUrkrj)r
rrr�testFromDecimals(zFractionTest.testFromDecimalcCs�td�}|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|�q�WdS)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�testConversions:s"(zFractionTest.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�	testRoundRs
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�testArithmeticYs4"""""  zFractionTest.testArithmeticcCs2|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�testMixedArithmeticvs^
z FractionTest.testMixedArithmeticcCs<|jttjtdd�td��|jttjtd�tdd��dS)NrVrZz	3.1415926)rdrr�addrr)r
rrr�testMixingWithDecimal�s

z"FractionTest.testMixingWithDecimalcCs�|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�szFractionTest.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�s8z)FractionTest.testComparisonsDummyRationalcCs�td�}tdd�}|j||k�|j||kp2||k�|j||k�|j||koV||k�|j||k�|j||kpz||k�|j||k�|j||ko�||k�dS)Ng�?g@r6rVgUUUUUU�?)rrr�r�)r
�x�yrrr�testComparisonsDummyFloat�s
z&FractionTest.testComparisonsDummyFloatcCs4|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�szFractionTest.testMixedLesscCs4|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�testMixedLessEqualszFractionTest.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.testBigFloatComparisonscCs|jtd�td	�k�|jttjtd
�td��|jttjtd�td
��tdd�}tdd�}tdd�}|j||k�|j||k�|j||k�|j||k�x\tj	tjtjtj
fD]D}|jt|||�|jt|||�|jt|||�|jt|||�q�WdS)NrYr9rVr�g�?gg�������?lm+?�Rlm+?�Rlm+?�Rlm+?�Rlm+?�Rlm+?�R)r�rr�rdrrr!rr�rr)r
r�r��wrrrr�testBigComplexComparisonss


z&FractionTest.testBigComplexComparisonscCs|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-szFractionTest.testMixedEqualcCsp|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;sz FractionTest.testStringificationcCs�tjj}tjj}|jtd�ttdd���|jtdd�ttdd���|jttd��ttd	���|j|ttd|���|jttd
��td�j	��dS)Ng@rXrWrY�2r9r6lm+?�Rlm+?�Rr@r@)
�sys�	hash_info�modulusrirE�hashrr~r
�__hash__)r
ZhmodZhinfrrr�testHashDs zFractionTest.testHashc	Cs�td�}d|dddddf\}}}}}}}xVt||�tdd	�kr~|}|||d}}|||d}}|||}||7}q*W|jtj|�dS)
NrVrr6�rYr[r�� iʚ;)r�absr�r+Zpi)	r
Zthree�lasts�t�s�nZna�dZdarrr�testApproximatePiOs zFractionTest.testApproximatePicCs�td�}ddtd�dddf\}}}}}}xZt||�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 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_picklejs

z&FractionTest.test_copy_deepcopy_picklecCs tdd�}|jtt|dd�dS)Nrqr8�arY)rrdr|r})r
rIrrr�
test_slotsus
zFractionTest.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>s2