Your IP : 216.73.216.213


Current Path : /opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/test/__pycache__/test_fractions.cpython-34.pyo

�
g fc�@s[dZddlmZddlmZmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZm
Z
ddlmZmZe	jZe	jZGdd�de�ZGd	d
�d
e�ZGdd�de	j�ZGd
d�dej�Zdd�ZGdd�dej�Zdd�ZedkrWe�ndS)zTests for Lib/fractions.py.�)�Decimal)�run_unittest�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��n||_dS)Nz-DummyFloat can only be initialized from float)�
isinstance�float�	TypeError�value)�selfr
�r�8/opt/alt/python34/lib64/python3.4/test/test_fractions.py�__init__szDummyFloat.__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)rrrrr�__eq__ szDummyFloat.__eq__cCs|j|tj�S)N)rr�le)rrrrr�__le__!szDummyFloat.__le__cCs|j|tj�S)N)rr�lt)rrrrr�__lt__"szDummyFloat.__lt__cCs|j|tj�S)N)rr�ge)rrrrr�__ge__#szDummyFloat.__ge__cCs|j|tj�S)N)rr�gt)rrrrr�__gt__$szDummyFloat.__gt__cCsdS)Nr)rrrr�	__float__'szDummyFloat.__float__cCsdS)Nr)rrrrr�__sub__+szDummyFloat.__sub__N)�__name__�
__module__�__qualname__�__doc__rrrrrr!r#r$r%�__rsub__rrrrr	sr	c@sjeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)�
DummyRationalzATest comparison of Fraction with a naive rational implementation.cCs-t||�}|||_|||_dS)N)�gcd�num�den)rr-r.�grrrr3s
zDummyRational.__init__cCs<t|tj�r4|j|jko3|j|jkStSdS)N)r
�	fractions�Fractionr-�
_numeratorr.�_denominatorr)rrrrrr8szDummyRational.__eq__cCs|j|j|j|jkS)N)r-r3r.r2)rrrrrr?szDummyRational.__lt__cCs|j|j|j|jkS)N)r-r3r.r2)rrrrrr#BszDummyRational.__gt__cCs|j|j|j|jkS)N)r-r3r.r2)rrrrrrEszDummyRational.__le__cCs|j|j|j|jkS)N)r-r3r.r2)rrrrrr!HszDummyRational.__ge__cCsdS)Nr)rrrrr$MszDummyRational.__float__N)r&r'r(r)rrrr#rr!r$rrrrr+0sr+c@seZdZdZdS)�
DummyFractionz6Dummy Fraction subclass for copy and deepcopy testing.N)r&r'r(r)rrrrr4Psr4c@seZdZdd�ZdS)�GcdTestcCs�|jdtdd��|jdtdd��|jd	td
d��|jdtdd��|jdtdd��|jdtdd��|jd
tdd��|jdtdd��|jdtdd��|jdtdd��dS)Nr������x�T���r=r=r=r=r=i��i�i����)�assertEqualr,)rrrr�testMiscUszGcdTest.testMiscN)r&r'r(r?rrrrr5Ssr5cCs|j|jfS)N)�	numerator�denominator)�rrrr�_componentsbsrCc@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)r>�type)rZexpectedZactualrrr�assertTypedEqualshszFractionTest.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)r>�strZfailr&)r�exc_type�message�callable�args�kwargs�errr�assertRaisesMessagems
)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)0Nrr6r7����
r9r8�M��	�	�	�ic�qzFraction(12, 0)r:g�?y@z3/2yy�?)rr6)r7r6)r7rOr=)r=r6r=r=)r=r6r=)r6r6���rZ)r6rP)r7r9�m+?�R)r[r6lm+?�R)rOrS���)r\rQi����)rVrWy�?@)r>rCrrN�ZeroDivisionError�assertRaisesr)rrrr�testInitws$%((1
zFractionTest.testInitcCs�|jd
ttd���|jdttd���|jdttd	���|jtttd
��|jtttd��|jtttd��dS)NrQrPg@rr6g��L�33f�g�������?�nan�infz-inf)rQrP)rr6g�)r`ra)r>rCrr^�
ValueErrorr�
OverflowError)rrrr�testInitFromFloat�s	zFractionTest.testInitFromFloatcCs�|jdtttd����|jdtttd����|jdtttd	����|jtttd
��|jtttd��|jtttd��|jtttd
��dS)NrTrRz1.1r7��z3.5e-2rr6z.000e20rb�snanrcz-inf)rTrR)r7rg)rr6)r>rCrrr^rdre)rrrr�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)?NrQr6�5rOrPz3/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: '.'�.)rQr6)rOrP)rOrP���)rprP)rkrP)rlrQ��)rqrQrp)rpr6)rOrQ)r6rm)rnr6����)rrr6)rr6)rr6)r>rCrrNr]rd)rrrr�testFromString�sX








zFractionTest.testFromStringcCs�tdd�}|jdd�|jd
t|��|jtt|dd�|jtt|dd�|jdt|��d	|_d|_|jdt|��|j	td	d�|�dS)
Nr7rOrPr9r@r:rA��)r7rO)r7rO)rurP)
rrr>rCr^�AttributeError�setattrr2r3�assertNotEqual)rrBrrr�
testImmutable�s		zFractionTest.testImmutablecCs�|jttjd�|jdttjd���d}|j|dfttj|���|jdttjd���|jdttjd���|jdttjd���|jdttjd
���|jtd�ttjd
���|jd ttjd���|jdttjd���d}||}|jtdtj|�|jtdtj|�|jt	dtj|�dS)!NrOy@rRr6l�{�C	rgg$@rQrPg@�l+?�Rg�J��-�Dr8��L�33f� g������	@g�zCannot convert inf to Fraction.z Cannot convert -inf to Fraction.zCannot convert nan to Fraction.y@@)rRr6)rr6g�)rRr6���)r}rPg�)rzr6lm+?�R)r{r|)
r^rrrr>rCrrNrerd)rZbigintrcrbrrr�
testFromFloat�s0%	%	

zFractionTest.testFromFloatcCs�|jttjd�|jtdd�tjd��|jtd�tjtd���|jtdd�tjtd���|jtdd	�tjtd
���|jtd�tjtd���|jdtdd�tjtddd
���|jtdtjtd��|jtdtjtd��|jtdtjtd��|jtdtjtd��dS)NrOy@rRr6rz-0rQz0.5i�z5e-3i�Z5e3�z0.�9z$Cannot convert Infinity to Fraction.rcz%Cannot convert -Infinity to Fraction.z-infzCannot convert NaN to Fraction.rbz Cannot convert sNaN to Fraction.rhy@@l�7�3M�e')	r^rrZfrom_decimalr>rrNrerd)rrrr�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'icrY�piM�j��rg�dr6�e�frz$max_denominator should be at least 1i����r=)rr=)rr>Zlimit_denominatorrNrd)rZrpi�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)&Nr6rTrRrPrrQr9r7FTrOg�������?�2i��7g@�3�1yr=i����rZi����r=i����r=i����r=i����r=r}rZi�r=i����gUUUUUU�?y�������?)rF�math�truncrZfloorZceil�int�roundr>�boolrr^re�assertAlmostEqual�complex)rrrr�testConversions.s""""""!	2zFractionTest.testConversionscCs�|jtd�ttd
�d��|jtd�ttd�d��|jtd�ttd�d��|jtdd�ttdd
�d��|jtdd�ttdd
�d��dS)Nrg�rP�r�r6rRr9r��i8���ij���rZi8���i���rZr=rZi�rZi��)rFrr�)rrrr�	testRoundFs
%%%+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�dS)Nr6rPrRrQrOr�rurUr8r7��g@rrplm+?�Rlm+?�Ri����rpr=)r>rrF�powr��real�imag)r�zrrr�testArithmeticNs////&#/,,##zFractionTest.testArithmeticcCsy|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��dS)1NrTrRr6g�������?g�?yrUg�������?g�������?g$@rr8rXgr�rPrug@g�?y�������?y�?y�������?y�?i����g�������g�������y�������y�?y�������?y�?y�������?y�?y�������?y�?y�������?y�?y$@y�?lm+?�Rl�d�&O�!rZy�������?y�?r=rZrZy�?y�?)rFrr�r�r�r>r�)rr�rrr�testMixedArithmetic^sZ&&&&&&&&&&&&&z FractionTest.testMixedArithmeticcCsT|jttjtdd�td��|jttjtd�tdd��dS)NrOrTz	3.1415926)r^rr�addrr)rrrr�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)Nr6rPrO)�
assertTruer�assertFalse)rrrr�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)Nr6rPrOrur7)r�rr+r�)rrrr�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@r6rOgUUUUUU�?)r	rr�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)NrPrQrurOr6g333333�?g�������?g�?rcz-infrrRrbr7�r:��Yrpi����)r�rr�r)rrrr�
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�?r6rPg333333�?g�������?rurOrQrcz-infrrRrbr7r�r:r�r�rpi����)r�rr�r)rrrr�testMixedLessEqual�s"""""zFractionTest.testMixedLessEqualcCs�|jtd�td�k�|jdtttjd�d��k�|jdttjd�d�k�|jdttjd�d�k�|jdttjd�d�k�|jdttjd�d�k�dS)NrRr8g�J��-�Dr6lm+?�Rlm+?�R)r�rrr�r�r�)rrrr�testBigFloatComparisons�s,&&&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)NrRr8rOr�g�?gg�������?lm+?�Rlm+?�Rlm+?�Rlm+?�Rlm+?�Rlm+?�R)r�rr�r^rrr"rr�rr )rr�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�?r6rPg333333�?g�������?rurOrQrbr7rcz-inf)r�rr�r)rrrr�testMixedEquals"""zFractionTest.testMixedEqualcCs�|jdttdd���|jdttd���|jdttdd
���|jd
ttdd���|jdttdd���dS)NzFraction(7, 3)r7rOz Fraction(6283185307, 2000000000)z3.1415926535z#Fraction(-1, 100000000000000000000)r6rR�z7/3r�l F�x:^Vl���� F�x:^V)r>�reprrrG)rrrr�testStringification!s		z FractionTest.testStringificationcCs�tjj}tjj}|jtd�ttdd���|jtd�ttd	���|jttd
��ttd���|j|ttd|���|jttd��td
�j	��dS)Ng@rQrPrR�2r8r6l +�O��tC3�y+v�l +�O��tC3�y+v�lm+?�Rlm+?�Rr=r=)
�sys�	hash_info�modulusrcr>�hashrrxr�__hash__)rZhmodZhinfrrr�testHash*s%"(zFractionTest.testHashc	Cs�td�}d|dddddf\}}}}}}}xkt||�tdd	�kr�|}|||d}}|||d}}|||}||7}q?W|jtj|�dS)
NrOrr6�rRrUr�� iʚ;)r�absr�r�Zpi)	rZthree�lasts�t�s�nZna�dZdarrr�testApproximatePi5s0"zFractionTest.testApproximatePicCs�td�}ddtd�dddf\}}}}}}xot||�tdd�kr�|}|d7}|||d9}|||9}|d9}||||7}q?W|jtjd�|�dS)Nr6rrRrUrPiʚ;r=)rr�r�r�Zcos)rr�r�r�r�Zfactr-Zsignrrr�testApproximateCos1Bs0"

z FractionTest.testApproximateCos1cCs�tdd�}tdd�}|j|tt|���|jt|�tt|���|jt|�tt|���|jt|�tt|���|jt|�tt|���|j	|t|��|j	|t|��dS)Nrkr7)
rr4r>rr�idrrrxrF)rrBZdrrrr�test_copy_deepcopy_picklePs""""z&FractionTest.test_copy_deepcopy_picklecCs,tdd�}|jtt|dd�dS)Nrkr7�arR)rr^rvrw)rrBrrr�
test_slots[szFractionTest.test_slotsN)!r&r'r(rFrNr_rrfrirsryr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrDfs:

58 
	
rDcCsttt�dS)N)rrDr5rrrr�	test_main`sr��__main__)r)�decimalrZtest.supportrrr�rrr0r�Zunittestrr�picklerrr1rr,�objectr	r+r4ZTestCaser5rCrDr�r&rrrr�<module>s,		  ��