Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/test_fractions.cpython-34.pyc

�
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__cCsdstd��dS)NFz/__float__ should not be invoked for comparisons)�AssertionError)rrrr�	__float__'szDummyFloat.__float__cCsdstd��dS)NFz-__sub__ should not be invoked for comparisons)r$)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.r4r/r3)rrrrrr?szDummyRational.__lt__cCs|j|j|j|jkS)N)r.r4r/r3)rrrrrr#BszDummyRational.__gt__cCs|j|j|j|jkS)N)r.r4r/r3)rrrrrrEszDummyRational.__le__cCs|j|j|j|jkS)N)r.r4r/r3)rrrrrr!HszDummyRational.__ge__cCsdstd��dS)NFz__float__ should not be invoked)r$)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*rrrrr5Psr5c@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@rrrrr6Ssr6cCs|j|jfS)N)�	numerator�denominator)�rrrr�_componentsbsrDc@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)0Nrr7r8����
r:r9�M��	�	�	�ic�qzFraction(12, 0)r;g�?y@z3/2yy�?)rr7)r8r7)r8rPr>)r>r7r>r>)r>r7r>)r7r7���r[)r7rQ)r8r:�m+?�R)r\r7lm+?�R)rPrT���)r]rRi����)rWrXy�?@)r?rDrrO�ZeroDivisionError�assertRaisesr)rrrr�testInitws$%((1
zFractionTest.testInitcCs�|jd
ttd���|jdttd���|jdttd	���|jtttd
��|jtttd��|jtttd��dS)NrRrQg@rr7g��L�33f�g�������?�nan�infz-inf)rRrQ)rr7g�)rarb)r?rDrr_�
ValueErrorr�
OverflowError)rrrr�testInitFromFloat�s	zFractionTest.testInitFromFloatcCs�|jdtttd����|jdtttd����|jdtttd	����|jtttd
��|jtttd��|jtttd��|jtttd
��dS)NrUrSz1.1r8��z3.5e-2rr7z.000e20rc�snanrdz-inf)rUrS)r8rh)rr7)r?rDrrr_rerf)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)?NrRr7�5rPrQz3/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: '.'�.)rRr7)rPrQ)rPrQ���)rqrQ)rlrQ)rmrR��)rrrRrq)rqr7)rPrR)r7rn)ror7����)rsr7)rr7)rr7)r?rDrrOr^re)rrrr�testFromString�sX








zFractionTest.testFromStringcCs�tdd�}|jdd�|jd
t|��|jtt|dd�|jtt|dd�|jdt|��d	|_d|_|jdt|��|j	td	d�|�dS)
Nr8rPrQr:rAr;rB��)r8rP)r8rP)rvrQ)
rrr?rDr_�AttributeError�setattrr3r4�assertNotEqual)rrCrrr�
testImmutable�s		zFractionTest.testImmutablecCs�|jttjd�|jdttjd���d}|j|dfttj|���|jdttjd���|jdttjd���|jdttjd���|jdttjd
���|jtd�ttjd
���|jd ttjd���|jdttjd���d}||}|jtdtj|�|jtdtj|�|jt	dtj|�dS)!NrPy@rSr7l�{�C	rgg$@rRrQg@�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@@)rSr7)rr7g�)rSr7���)r~rQg�)r{r7lm+?�R)r|r})
r_rrrr?rDrrOrfre)rZbigintrdrcrrr�
testFromFloat�s0%	%	

zFractionTest.testFromFloatcCs�|jttjd�|jtdd�tjd��|jtd�tjtd���|jtdd�tjtd���|jtdd	�tjtd
���|jtd�tjtd���|jdtdd�tjtddd
���|jtdtjtd��|jtdtjtd��|jtdtjtd��|jtdtjtd��dS)NrPy@rSr7rz-0rRz0.5i�z5e-3i�Z5e3�z0.�9z$Cannot convert Infinity to Fraction.rdz%Cannot convert -Infinity to Fraction.z-infzCannot convert NaN to Fraction.rcz Cannot convert sNaN to Fraction.riy@@l�7�3M�e')	r_rrZfrom_decimalr?rrOrfre)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'icrZ�piM�j��rh�dr7�e�frz$max_denominator should be at least 1i����r>)rr>)rr?Zlimit_denominatorrOre)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)&Nr7rUrSrQrrRr:r8FTrPg�������?�2i��7g@�3�1yr>i����r[i����r>i����r>i����r>i����r>r~r[i�r>i����gUUUUUU�?y�������?)rG�math�truncrZfloorZceil�int�roundr?�boolrr_rf�assertAlmostEqual�complex)rrrr�testConversions.s""""""!	2zFractionTest.testConversionscCs�|jtd�ttd
�d��|jtd�ttd�d��|jtd�ttd�d��|jtdd�ttdd
�d��|jtdd�ttdd
�d��dS)Nrh�rQ�r��r7rSr:r��i8���ij���r[i8���i���r[r>r[i�r[i��)rGrr�)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)Nr7rQrSrRrPr�rvrVr9r8��g@rrqlm+?�Rlm+?�Ri����rqr>)r?rrG�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)1NrUrSr7g�������?g�?yrVg�������?g�������?g$@rr9rYgr�rQrvg@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�?)rGrr�r�r�r?r�)rr�rrr�testMixedArithmetic^sZ&&&&&&&&&&&&&z FractionTest.testMixedArithmeticcCsT|jttjtdd�td��|jttjtd�tdd��dS)NrPrUz	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)Nr7rQrP)�
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)Nr7rQrPrvr8)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@r7rPgUUUUUU�?)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)NrQrRrvrPr7g333333�?g�������?g�?rdz-infrrSrcr8�r;��Yrqi����)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�?r7rQg333333�?g�������?rvrPrRrdz-infrrSrcr8r�r;r�r�rqi����)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)NrSr9g�J��-�Dr7lm+?�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)NrSr9rPr�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�?r7rQg333333�?g�������?rvrPrRrcr8rdz-inf)r�rr�r)rrrr�testMixedEquals"""zFractionTest.testMixedEqualcCs�|jdttdd���|jdttd���|jdttdd
���|jd
ttdd���|jdttdd���dS)NzFraction(7, 3)r8rPz Fraction(6283185307, 2000000000)z3.1415926535z#Fraction(-1, 100000000000000000000)r7rS�z7/3r�l F�x:^Vl���� F�x:^V)r?�reprrrH)rrrr�testStringification!s		z FractionTest.testStringificationcCs�tjj}tjj}|jtd�ttdd���|jtd�ttd	���|jttd
��ttd���|j|ttd|���|jttd��td
�j	��dS)Ng@rRrQrS�2r9r7l +�O��tC3�y+v�l +�O��tC3�y+v�lm+?�Rlm+?�Rr>r>)
�sys�	hash_info�modulusrdr?�hashrryr�__hash__)rZhmodZhinfrrr�testHash*s%"(zFractionTest.testHashc	Cs�td�}d|dddddf\}}}}}}}xkt||�tdd	�kr�|}|||d}}|||d}}|||}||7}q?W|jtj|�dS)
NrPrr7�rSrVr�� 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)Nr7rrSrVrQiʚ;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)Nrlr8)
rr5r?rr�idrrryrG)rrCZdrrrr�test_copy_deepcopy_picklePs""""z&FractionTest.test_copy_deepcopy_picklecCs,tdd�}|jtt|dd�dS)Nrlr8�arS)rr_rwrx)rrCrrr�
test_slots[szFractionTest.test_slotsN)!r'r(r)rGrOr`rrgrjrtrzrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrEfs:

58 
	
rEcCsttt�dS)N)rrEr6rrrr�	test_main`sr��__main__)r*�decimalrZtest.supportrrr�rrr1r�Zunittestrr�picklerrr2rr-�objectr	r,r5ZTestCaser6rDrEr�r'rrrr�<module>s,		  ��