HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //proc/thread-self/root/usr/local/lib/python3.7/test/__pycache__/test_fractions.cpython-37.pyc
B

��gl�@s�dZddlmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
m
Z
mZddlmZmZejZejZGdd�de�ZGd	d
�d
e�ZGdd�dej�ZGd
d�dej�Zdd�ZGdd�dej�Zedkr�e��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�//usr/local/lib/python3.7/test/test_fractions.py�__init__s
zDummyFloat.__init__cCs>t|tj�r|t�|j�|�St|t�r6||j|j�StSdS)N)r	�numbers�Rational�F�
from_floatrr�NotImplemented)r
�other�oprrr�_richcmps

zDummyFloat._richcmpcCs|�|tj�S)N)r�operator�eq)r
rrrr�__eq__"�zDummyFloat.__eq__cCs|�|tj�S)N)rr�le)r
rrrr�__le__#rzDummyFloat.__le__cCs|�|tj�S)N)rr�lt)r
rrrr�__lt__$rzDummyFloat.__lt__cCs|�|tj�S)N)rr�ge)r
rrrr�__ge__%rzDummyFloat.__ge__cCs|�|tj�S)N)rr�gt)r
rrrr�__gt__&rzDummyFloat.__gt__cCsdstd��dS)NFz/__float__ should not be invoked for comparisons)�AssertionError)r
rrr�	__float__)szDummyFloat.__float__cCsdstd��dS)NFz-__sub__ should not be invoked for comparisons)r%)r
rrrr�__sub__-szDummyFloat.__sub__N)�__name__�
__module__�__qualname__�__doc__rrrrr r"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$t�||�}|||_|||_dS)N)�math�gcd�num�den)r
r0r1�grrrr5s
zDummyRational.__init__cCs,t|tj�r$|j|jko"|j|jkStSdS)N)r	�	fractions�Fractionr0�
_numeratorr1�_denominatorr)r
rrrrr:szDummyRational.__eq__cCs|j|j|j|jkS)N)r0r6r1r5)r
rrrrr AszDummyRational.__lt__cCs|j|j|j|jkS)N)r0r6r1r5)r
rrrrr$DszDummyRational.__gt__cCs|j|j|j|jkS)N)r0r6r1r5)r
rrrrrGszDummyRational.__le__cCs|j|j|j|jkS)N)r0r6r1r5)r
rrrrr"JszDummyRational.__ge__cCsdstd��dS)NFz__float__ should not be invoked)r%)r
rrrr&OszDummyRational.__float__N)r(r)r*r+rrr r$rr"r&rrrrr-2sr-c@seZdZdZdS)�
DummyFractionz6Dummy Fraction subclass for copy and deepcopy testing.N)r(r)r*r+rrrrr7Rsr7c@seZdZdd�ZdS)�GcdTestc	Csd|�td��tdd�WdQRXt����.t�ddt�|�dtdd��|�dtdd��|�dtdd��|�dtdd��|�dtdd��|�dtdd��|�dtdd��|�dtdd��|�d	td
d��|�dtdd
��|�tdd�d�|�td
d�d�|�ttd
�td��td	��|�ttd
d�tdd��td	d��WdQRXdS)Nzfractions\.gcd��ignorer����i�����x�Ti�i����g^@g(@gU@�M�7i�)ZassertWarnsRegex�DeprecationWarningr/�warnings�catch_warnings�filterwarnings�assertEqualr)r
rrr�testMiscWs&zGcdTest.testMiscN)r(r)r*rHrrrrr8Usr8cCs|j|jfS)N)�	numerator�denominator)�rrrr�_componentsnsrLc@seZdZdd�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;d<�Z!d=S)>�FractionTestcCs$|�t|�t|��|�||�dS)z4Asserts that both the types and values are the same.N)rG�type)r
Zexpected�actualrrr�assertTypedEqualstszFractionTest.assertTypedEqualsc
OsVy|||�Wn2|k
r@}z|�|t|��Wdd}~XYnX|�d|j�dS)z@Asserts that callable(*args, **kwargs) raises exc_type(message).Nz
%s not raised)rG�strZfailr()r
�exc_type�message�callable�args�kwargs�errr�assertRaisesMessageys
"z FractionTest.assertRaisesMessagec	Cs�|�dtt���|�dttd���|�dtttdd����|�dttdd���|�dttdd���|�d	ttd
d
���|�dttdd
���|�dttdd���|�dttd���|�dtttdd�d���|�dttdtdd����|�dtttdd�tdd����|�tdtdd�|�ttd�|�ttd d�|�ttdd!�|�ttdd"�|�ttddd�dS)#N)rr9)r<r9r<)r<�rY)r;r9r;r9)r9r9���)r9���
)r<r=r=)lm+?�Rr9lm+?�R)rYrA�)i����r\r[i�����	)i�	i�	�ic�qzFraction(12, 0)r>ry�?@z3/2yy�?)rGrLrrX�ZeroDivisionError�assertRaisesr)r
rrr�testInit�s&"
zFractionTest.testInitcCsv|�dttd���|�dttd���|�dttd���|�tttd��|�tttd��|�tttd	��dS)
N)r\r[g@)rr9g�)l�L�33flg�������?�nan�infz-inf)rGrLrrc�
ValueErrorr
�
OverflowError)r
rrr�testInitFromFloat�szFractionTest.testInitFromFloatcCs�|�dtttd����|�dtttd����|�dtttd����|�tttd��|�tttd��|�tttd	��|�tttd
��dS)N)r^r]z1.1)r<��z3.5e-2)rr9z.000e20re�snanrfz-inf)rGrLrrrcrgrh)r
rrr�testInitFromDecimal�sz FractionTest.testInitFromDecimalcCs�|�dttd���|�dttd���|�dttd���|�dttd���|�dttd	���|�d
ttd���|�dttd
���|�dttd���|�dttd���|�dttd���|�dttd���|�dttd���|�dttd���|�dttd���|�tdtd�|�tdtd�|�tdtd �|�td!td"�|�td#td$�|�td%td&�|�td'td(�|�td)td*�|�td+td,�|�td-td.�dS)/N)r\r9�5)rYr[z3/2z 
  +3/2)���r[z-3/2  )�
r[z    013/02 
  )�r\z 3.2 )i�r\z -3.2 )rnr9z -3. )rYr\z .6 )r9i5z32.e-5)i@Br9z1E+06)i���r9z-1.23e4)rr9z .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: '.'�.)rGrLrrXrbrg)r
rrr�testFromString�sXzFractionTest.testFromStringcCs�tdd�}|�dd�|�dt|��|�tt|dd�|�tt|dd	�|�dt|��d
|_d|_|�dt|��|�	td
d�|�dS)Nr<rYr[r=)r<rYrIr>rJ��)rtr[)
rrrGrLrc�AttributeError�setattrr5r6�assertNotEqual)r
rKrrr�
testImmutable�s
zFractionTest.testImmutablecCs*|�ttjd�|�dtt�d���d}|�|dftt�|���|�dtt�d���|�dtt�d���|�d	tt�d
���|�dtt�d���|�td
�tt�d���|�dtt�d���|�dtt�d���d}||}|�tdtj|�|�tdtj|�|�t	dtj|�dS)Ny@@)r]r9r]l�{�C	r9)rr9g�g$@)���r[g�)ll+?�Rr9g�J��-�Dlm+?�R)l�L�33fl g������	@g�z(cannot convert Infinity to integer ratioz#cannot convert NaN to integer ratio)
rcrrrrGrLr
rXrhrg)r
Zbigintrfrerrr�
testFromFloat�s0
zFractionTest.testFromFloatcCs|�ttjd�|�tdd�t�d��|�td�t�td���|�tdd�t�td���|�tdd�t�td	���|�td
�t�td���|�dtdd�t�td
���|�tdtjtd��|�tdtjtd��|�tdtjtd��|�tdtjtd��dS)Ny@@r]r9rz-0r\z0.5i�z5e-3i�Z5e3l�7�3M�e'z 0.999999999999999999999999999999z(cannot convert Infinity to integer ratiorfz-infz#cannot convert NaN to integer ratiorerk)	rcrrZfrom_decimalrGrrXrhrg)r
rrr�testFromDecimals(zFractionTest.testFromDecimalcCs�td�}|�|�d�tdd��|�|�d�tdd��|�|�d�tdd��|�|�d�tdd��|�td	d
��d�td��|�td	d
��d
�tdd
��|�td��d�td��x"dD]}|�tdtd�j|�q�WdS)Nz3.1415926535897932i'icrai�����piM�j��rj�dr9�e�fr)rr;z$max_denominator should be at least 1)rrGZlimit_denominatorrXrg)r
Zrpi�irrr�testLimitDenominator-s
z!FractionTest.testLimitDenominatorcCsr|�dt�tdd���|�dt�tdd���|�dt�tdd���|�dt�tdd���|�dt�tdd���|�dttdd���|�dttdd���|�dttd	d���|�dttd
d���|�dttdd���|�dt	tdd���|�d
t	tdd���|�dt
tdd���|�tt
td��|�
dt
ttd�td����|�dttdd���dS)Nr;i����r]r9r^rZi����rryi�i����FTrYr[g�������?A�22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222227gUUUUUU�?A�33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331y�������?)rPr.�truncrZfloorZceil�int�roundrG�boolr
rcrh�assertAlmostEqual�complex)r
rrr�testConversions;s"zFractionTest.testConversionscCsrtjGdd�d��}tj�|�|d�}t|�}|�|j|�|�t|�d�|d�}t|�}|�t|�d�dS)Nc@s8eZdZdZdd�Zdd�Zedd��Zdd	�ZeZ	d
S)z=FractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValuer9cSs
||_dS)N)r)r
rrrrrZszFFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__init__cSs
t|j�S)N)r�r)r
rrr�__bool__]szFFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__bool__cSs|S)Nr)r
rrrrI`szGFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.numeratorcSstd��dS)Nz&Avoid comparisons in Fraction.__bool__)r%)r
rrrrreszDFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__eq__N)
r(r)r*rJrr��propertyrIrr rrrr�CustomValueVsr�r9TrF)	�	functools�total_orderingrr�registerrZassertIsrIr�)r
r�rIrKrrr�testBoolGuarateesBoolReturnSsz(FractionTest.testBoolGuarateesBoolReturncCs�|�td�ttd�d��|�td�ttd�d��|�td�ttd�d��|�tdd�ttd	d
�d��|�tdd�ttdd
�d��dS)
Ni8���ij���rZi�����r;r]i�rr9i��)rPrr�)r
rrr�	testRoundws
zFractionTest.testRoundcCs<|�tdd�tdd�tdd��|�tdd�tdd�tdd��|�tdd�tdd�tdd��|�tdd�tdd�tdd��|�dtdd�tdd��|�d	td	d�td��|�tdd
�tdd
�td
d��|�tdd
�tdd
�td
��|�td
d�tdd
�td��|�dtd�tdd��|�tdd�tdd�
�ttd�tdd��}|�|jd�|�|jd�tdd�d}|�|tdd��|�|jd�|�|jd�tdd�d}|�|tdd��|�|jd�|�|jd�tdd�d}|�|tdd��|�|jd�|�|jd�dS)Nr9r[r]r\rn�rtr_lm+?�RrYi������g@r;rrZ)	rGrrP�powr��real�imagrIrJ)r
�z�prrr�testArithmetic~s4"""""  zFractionTest.testArithmeticcCs2|�tdd�tdd�d�|�dtdd�d�|�dtdd�d�|�tdd�dtdd��|�ddtdd��|�ddtdd��|�tdd�tdd�d�|�d	tdd�d�|�d
tdd�d�|�tdd�dtdd��|�ddtdd��|�d
dtdd��|�tdd�tdd�d�|�dtdd�d�|�dtdd�d�|�tdd�dtdd��|�ddtdd��|�ddtdd��|�tdd�tdd�d�|�dtdd�d�|�dtdd�d�|�tdd�dtdd��|�ddtdd��|�ddtdd��|�dtdd�d�|�dtdd�d�|�ddtdd��|�ddtdd��|�ddtdd��|�tdd�tdd�d�|�dtdd�d�|�tdd�dtdd��|�ddtdd��|�tdd�tdd�d�|�tdd�tdd�d�|�dtdd�d�|�dtdd�d�|�ddtdd��tdtdd��}|�d|j�|�d|j�|�tdd�dtdd��|�ddtdd��|�ddtdd��|�ddtdd��|�tt	jtdd�d�dS)Nr^r]r9g�������?g�?y�������?y�?i����g�������y�������r_g�������?y�������?g�������?y�������?g$@y$@rlm+?�Rl�d�&O�!grrZr[rtr;g@g�?)
rPrr�r�r�rGr�rcrbr)r
r�rrr�testMixedArithmetic�s^
z FractionTest.testMixedArithmeticcCs<|�ttjtdd�td��|�ttjtd�tdd��dS)NrYr^z	3.1415926)rcrr�addrr)r
rrr�testMixingWithDecimal�s

z"FractionTest.testMixingWithDecimalcCs�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�dS)Nr9r[rY)�
assertTruer�assertFalse)r
rrr�testComparisons�szFractionTest.testComparisonscCs�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�|�tdd�tdd�k�dS)Nr9r[rYrtr<)r�rr-r�)r
rrr�testComparisonsDummyRational�s8z)FractionTest.testComparisonsDummyRationalcCs�td�}tdd�}|�||k�|�||kp2||k�|�||k�|�||koV||k�|�||k�|�||kpz||k�|�||k�|�||ko�||k�dS)NgUUUUUU�?r9rY)rrr�r�)r
�x�yrrr�testComparisonsDummyFloats
z&FractionTest.testComparisonsDummyFloatcCs4|�dtdd�k�|�dtdd�k�|�tdd�dk�|�tdd�dk�|�tdd�dk�|�tdd�dk�|�dtdd�k�|�dtdd�k�|�td	�tdd�k�|�td
�tdd�k�|�td
�tdd�k�|�tdd�td	�k�|�tdd�td
�k�|�tdd�td
�k�dS)Nr[r\rtrYr9g333333�?g�������?g�?rfz-infrr]rernr<�r>�i����)r�rr�r
)r
rrr�
testMixedLessszFractionTest.testMixedLesscCs4|�dtdd�k�|�dtdd�k�|�tdd�dk�|�tdd�dk�|�dtdd�k�|�dtdd�k�|�tdd�dk�|�tdd�dk�|�td	�tdd�k�|�td
�tdd�k�|�td
�tdd�k�|�tdd�td	�k�|�tdd�td
�k�|�tdd�td
�k�dS)Ng�?r9r[g333333�?g�������?rtrYr\rfz-infrr]rernr<r�r>r�i����)r�rr�r
)r
rrr�testMixedLessEqual%szFractionTest.testMixedLessEqualcCs�|�td�td�k�|�dttt�d�d��k�|�dtt�d�d�k�|�dtt�d�d�k�|�dtt�d�d�k�|�dtt�d�d�k�dS)Nlm+?�Rg�J��-�Dr9)r�rr
r.r�r�)r
rrr�testBigFloatComparisons6s z$FractionTest.testBigFloatComparisonscCs|�td�td�k�|�ttjtd�td��|�ttjtd�td��tdd�}tdd�}tdd�}|�||k�|�||k�|�||k�|�||k�x\tj	tjtjtj
fD]D}|�t|||�|�t|||�|�t|||�|�t|||�q�WdS)Nlm+?�RrYr�g�?gg�������?)r�rr�rcrrr#rr�rr!)r
r�r��wrrrr�testBigComplexComparisons@s


z&FractionTest.testBigComplexComparisonscCs|�dtdd�k�|�dtdd�k�|�tdd�dk�|�tdd�dk�|�dtdd�k�|�dtdd�k�|�tdd�dk�|�tdd�dk�|�tdd�td	�k�|�td	�tdd
�k�|�tdd�td�k�|�td�tdd�k�dS)
Ng�?r9r[g333333�?g�������?rtrYr\rer<rfz-inf)r�rr�r
)r
rrr�testMixedEqualRszFractionTest.testMixedEqualcCsp|�dttdd���|�dttd���|�dttdd���|�d	ttdd���|�d
ttdd���dS)NzFraction(7, 3)r<rYz Fraction(6283185307, 2000000000)z3.1415926535z#Fraction(-1, 100000000000000000000)r9l���� F�x:^Vz7/3�7)rG�reprrrQ)r
rrr�testStringification`sz FractionTest.testStringificationcCs�tjj}tjj}|�td�ttdd���|�tdd�ttdd���|�ttd��ttd���|�|ttd|���|�ttd��td��	��dS)	Ng@r\r[r]�2lm+?�Rr9r;)
�sys�	hash_info�modulusrfrG�hashrrwr
�__hash__)r
ZhmodZhinfrrr�testHashis zFractionTest.testHashc	Cs�td�}d|dddddf\}}}}}}}xVt||�tdd�kr~|}|||d}}|||d}}|||}||7}q*W|�tj|�dS)NrYrr9�iʚ;r�� )r�absr�r.Zpi)	r
Zthree�lasts�t�s�nZna�d�darrr�testApproximatePits zFractionTest.testApproximatePicCs�td�}ddtd�dddf\}}}}}}xZt||�tdd�kr�|}|d7}|||d9}|||9}|d9}||||7}q*W|�t�d�|�dS)Nr9riʚ;r[r;)rr�r�r.Zcos)r
r�r�r�r�Zfactr0�signrrr�testApproximateCos1�s z FractionTest.testApproximateCos1cCs�tdd�}tdd�}|�|tt|���|�t|�tt|���|�t|�tt|���|�t|�tt|���|�t|�tt|���|�	|t|��|�	|t|��dS)Nror<)
rr7rGrr�idrrrwrP)r
rKZdrrrr�test_copy_deepcopy_pickle�s

z&FractionTest.test_copy_deepcopy_picklecCs tdd�}|�tt|dd�dS)Nror<�ar])rrcrurv)r
rKrrr�
test_slots�s
zFractionTest.test_slotsN)"r(r)r*rPrXrdrrirlrrrxrzr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrMrs<

5$: 
	
rM�__main__)r+�decimalrZtest.supportrr.rrr3r�r�ZunittestrDrr�picklerrr4rr/�objectrr-r7ZTestCaser8rLrMr(�mainrrrr�<module>s4  1