python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_fractions.cpython-311.opt-1.pyc

ePdZddlmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
m
Z
mZddlZddlmZmZejZGddeZGd	d
eZGddejZd
ZGddejZedkrejdSdS)zTests for Lib/fractions.py.)Decimal)requires_IEEE_754N)copydeepcopy)dumpsloadscLeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZeZ
dS)
DummyFloatz8Dummy float class for testing comparisons with Fractionsc\t|tstd||_dS)Nz-DummyFloat can only be initialized from float)
isinstancefloat	TypeErrorvalueselfrs  G/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_fractions.py__init__zDummyFloat.__init__s/%''	MKLLL


ct|tjr)|t|j|St|tr||j|jStSN)rnumbersRationalF
from_floatrr
NotImplemented)rotherops   r_richcmpzDummyFloat._richcmpseeW-..	"2all4:..666
z
*
*	"2dj%+...!!rcB||tjSr)roperatoreqrrs  r__eq__zDummyFloat.__eq__#DMM%$E$EErcB||tjSr)rr ler"s  r__le__zDummyFloat.__le__$r$rcB||tjSr)rr ltr"s  r__lt__zDummyFloat.__lt__%r$rcB||tjSr)rr ger"s  r__ge__zDummyFloat.__ge__&r$rcB||tjSr)rr gtr"s  r__gt__zDummyFloat.__gt__'r$rcdSrrs r	__float__zDummyFloat.__float__*rcdSrr2r"s  r__sub__zDummyFloat.__sub__.r5rN)__name__
__module____qualname____doc__rrr#r'r*r-r0r4r7__rsub__r2rrr
r
sBB
"""FEEEEEEEEEEEEEEHHHFFFHHHrr
c<eZdZdZdZdZdZdZdZdZ	dZ
d	S)

DummyRationalzATest comparison of Fraction with a naive rational implementation.cXtj||}||z|_||z|_dSr)mathgcdnumden)rrBrCgs    rrzDummyRational.__init__6s-HS#!8!8rct|tjr |j|jko|j|jkStSr)r	fractionsFractionrB
_numeratorrC_denominatorrr"s  rr#zDummyRational.__eq__;sCeY/00	"H 003H 22
4"!rcB|j|jz|j|jzkSrrBrIrCrHr"s  rr*zDummyRational.__lt__B!x%,,tx%:J/JJKrcB|j|jz|j|jzkSrrKr"s  rr0zDummyRational.__gt__ErLrcB|j|jz|j|jzkSrrKr"s  rr'zDummyRational.__le__H!x%,,5;K0KKLrcB|j|jz|j|jzkSrrKr"s  rr-zDummyRational.__ge__KrOrcdSrr2r3s rr4zDummyRational.__float__Pr5rN)r8r9r:r;rr#r*r0r'r-r4r2rrr>r>3sKK
"""LLLLLLMMMMMM
88888rr>ceZdZdZdS)
DummyFractionz6Dummy Fraction subclass for copy and deepcopy testing.N)r8r9r:r;r2rrrSrSSs@@@@rrSc|j|jfSr)	numeratordenominator)rs r_componentsrXWs
K''rceZdZdZdZdZdZedZdZ	dZ
dZd	Zd
Z
dZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&d$Z'd%S)&FractionTestc|t|t||||dS)z4Asserts that both the types and values are the same.N)assertEqualtyperexpectedactuals   rassertTypedEqualszFractionTest.assertTypedEquals]s@hf6666*****rc	||||ttt|ttt|dS)zBAsserts that both the types and values in the tuples are the same.N)assertTupleEqualassertListEquallistmapr]r^s   rassertTypedTupleEqualsz#FractionTest.assertTypedTupleEqualsbsXh///T#dH"5"566Sv=N=N8O8OPPPPPrc	||i||d|jzdS#|$r.}||t|Yd}~dSd}~wwxYw)z@Asserts that callable(*args, **kwargs) raises exc_type(message).z
%s not raisedN)failr8r\str)rexc_typemessagecallableargskwargses       rassertRaisesMessagez FractionTest.assertRaisesMessagegs	;Hd%f%%%
IIo(99:::::	.	.	.Wc!ff---------	.s)A#AAc|dtt|dttd|dtttdd|dttdd|dttdd|d	ttd
d
|dttdd
|dttdd|dttd|dtttddd|dttdtdd|dtttddtdd|tdtdd|ttd|ttd d|ttdd!|ttdd"|ttddddS)#Nr)rtrururw)rtrxrt)rtrt)rt
)rur})m+?Rrtr~)rwM)r{rz	)i	i	cqzFraction(12, 0)ry?@3/2yy?)r\rXrrqZeroDivisionErrorassertRaisesrr3s rtestInitzFractionTest.testInitqsQSS!1!1222QqTT!2!2333QqAwwZZ!8!8999+aAhh"7"7888+a2hh"7"7888Qr2YY!7!7888Qq"XX!6!6777+a2hh"7"7888k!F))&<&<===+a!Qnn"="=>>>+a1S!99oo">">???{1Qr1XXqc{{3K3K'L'LMMM  !24E!"B	+	+	+)Q111)Qq111)Q2...)Q2...)Q1a00000rc:|dttd|dttd|dttd|tttd|tttd|tttd	dS)
N)r{rz@rs)L33fl皙?naninf-inf)r\rXrr
ValueErrorr

OverflowErrorr3s rtestInitFromFloatzFractionTest.testInitFromFloatsQsVV!4!4555QtWW!5!5666>$QsVV,,	.	.	.	
*au666-E%LL999-E&MM:::::rc
|dtttd|dtttd|dtttd|t
ttd|t
ttd|tttd	|tttd
dS)N)rr|z1.1)ruz3.5e-2rsz.000e20rsnanrr)r\rXrrrrrr3s rtestInitFromDecimalz FractionTest.testInitFromDecimals$Qwu~~%6%677	9	9	9$Qwx'8'8%9%9::	<	<	<$Qwy'9'9%:%:;;	=	=	=	
*a888*a999-GENN;;;-GFOO<<<<<rc<|dttd|dttd|dttd|dttd|dttd	|d
ttd|dttd
|dttd|dttd|dttd|dttd|dttd|dttd|dttd|dttd|dttd|dttd |d!ttd"|d#ttd$|d#ttd%|td&td'|t
d(td)|t
d*td+|t
d,td-|t
d.td/|t
d0td1|t
d2td3|t
d4td5|t
d6td7|t
d8td9|t
d:td;|t
d<td=|t
d>td?|t
d@tdA|t
dBtdC|t
dDtdE|t
dFtdG|t
dHtdI|t
dJtdK|t
dLtdM|t
dNtdO|t
dPtdQ|t
dRtdS|t
dTtdUdV}|t
dW|zdXzt||t
dY|zdXztdZ|z|t
d[|zdXztd\|z|t
d]|zdXztd^|zdS)_N)r{rt5)rwrzrz 
  +3/2)rzz-3/2  )
rzz    013/02 
  )r{z 3.2 )ir{z -3.2 )rrtz -3. )rwr{z .6 )rti5z32.e-5)i@Brtz1E+06)irtz-1.23e4rsz .0e+0	z-0.000e0){rt1_2_3))kz1_2_3/3_2_1)iz3.14_15)rl@9Hz3.14_15e-1_0)edz1.01z1.0_1zFraction(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'3a2z%Invalid literal for Fraction: '3/7.2'z3/7.2z%Invalid literal for Fraction: '3.2/7'z3.2/7z!Invalid literal for Fraction: '.'.z!Invalid literal for Fraction: '_'_z"Invalid literal for Fraction: '_1'_1z$Invalid literal for Fraction: '1__2'1__2z"Invalid literal for Fraction: '/_'z/_z#Invalid literal for Fraction: '1_/'z1_/z#Invalid literal for Fraction: '_1/'z_1/z%Invalid literal for Fraction: '1__2/'z1__2/z#Invalid literal for Fraction: '1/_'z1/_z$Invalid literal for Fraction: '1/_1'z1/_1z&Invalid literal for Fraction: '1/1__2'z1/1__2z&Invalid literal for Fraction: '1._111'z1._111z&Invalid literal for Fraction: '1.1__1'z1.1__1z'Invalid literal for Fraction: '1.1e+_1'z1.1e+_1z)Invalid literal for Fraction: '1.1e+1__1'z	1.1e+1__1399999999999999999999999999999999999999999999999999_zInvalid literal for Fraction: ''z!Invalid literal for Fraction: '1/z1/z!Invalid literal for Fraction: '1.z1.z$Invalid literal for Fraction: '1.1+ez1.1+e)r\rXrrqrr)rvals  rtestFromStringzFractionTest.testFromStrings'QsVV!4!4555QuXX!6!6777Q{^^!<!<===+akk":":;;;+a0A.B.B"C"CDDD+ajj"9"9:::;q{{#;#;<<<+ajj"9"9:::QvYY!7!7888K($<$<==={1W::'>'>???k!I,,&?&?@@@Qz]]!;!;<<<Qz]]!;!;<<<;qzz#:#:;;;K-0@0@$A$ABBB{1Y<<'@'@AAA);q7H7H+I+IJJJ[6%;%;<<<[7%<%<===  /
u				
  <
t				
  <
t				
  >
v				
  >
v				
  ?
w				
  =
u				
  ?
w				
  ?
w				
  ;
s				
  ;
s				
  <
t				
  >
v				
  <
t				
  =
u				
  =
u				
  ?
w				
  =
u				
  >
v				
  @
x				
  @
x				
  @
x				
  A
y				
  C
{			  9C?#E
s				
  ;cACG
tcz				
  ;cACG
tcz				
  >DsJ
w}					rctdd}|dd|dt||t
t|dd|t
t|dd	|dt|d
|_d|_|dt||	td
d|dS)Nrurwrzr}rvrUrrV)rrz)
rrr\rXrAttributeErrorsetattrrHrIassertNotEqualrrWs  r
testImmutablezFractionTest.testImmutables
aGG	

1bQ000.'1k2FFF.'1mQGGGQ000Q000AaGGQ'''''rc|ttjd|dttdd}||dftt||dttd|dttd|d	ttd
|dttd|t
d
t
td|dttd|dt
tdd}||z
}|tdtj||tdtj||tdtj|dS)N@@)r|rtr|l{C	rtrsr$@)rzg)ll+?RrtJ-Dr~)rl g	@g(cannot convert Infinity to integer ratio#cannot convert NaN to integer ratio)
rrrrr\rXr
rqrr)rbigintrrs    r
testFromFloatzFractionTest.testFromFloat%sB)Q\4888+all2.>.>"?"?@@@$&!k!,,v2F2F&G&GHHHQ\\$-?-?!@!@AAA+all4.@.@"A"ABBB+all4.@.@"A"ABBB5$Q\\$%7%788	:	:	:vall4.@.@(A(ABBB=$Q\\#%6%677	9	9	9eALL$5$566777Ci  E
L#				
  E
L3$	 	 	 	
  =
L#					rcF|ttjd|tddtd|tdttd|tddttd|tddttd	|td
ttd|dtddz
ttd
|tdtjtd|tdtjtd|tdtjtd|tdtjtddS)Nrr|rtrz-0r{z0.5iz5e-3i5e3l73Me'z 0.999999999999999999999999999999rrrrrr)	rrrfrom_decimalr\rrqrrr3s rtestFromDecimalzFractionTest.testFromDecimalAs)Q^T:::2q1>>"#5#56661q~~gdmm<<===1b1>>'%..#A#ABBB1dQ^^GFOO%D%DEEE4!.."@"@AAAQq&\\)(@(@AA	C	C	C	
  E
NGENN	,	,	,	
  E
NGFOO	-	-	-	
  =
NGENN	,	,	,	
  =
NGFOO	-	-	-	-	-rc|tddd|tddd|tddd|tddddS)	Nrr)rzrw)ryrwirrs)r\ras_integer_ratior3s rtest_as_integer_ratioz"FractionTest.test_as_integer_ratioYs1a1133V<<<2q2244g>>>1b2244g>>>1a1133V<<<<<rctd}||dtdd||dtdd||dtdd||dtdd|td	d
dtd|td	d
d
tdd
|tddtddD]1}|tdtdj|2dS)Nz3.1415926535897932i'rripiMjrrrtrfr)rrxz$max_denominator should be at least 1)rr\limit_denominatorrqr)rrpiis   rtestLimitDenominatorz!FractionTest.testLimitDenominator_s$%%..u55qc{{CCC#//666$EEE..s33QsC[[AAA..s33QsC[[AAA366s;;QqTTBBB366s;;QsC[[III1//66!===	+	+A$$B!&
+
+
+
+	+	+rc|dtjtdd|dtjtdd|dtjtdd|dtjtdd|dtjtdd|dt
tdd|dttdd|dttd	d|dttd
d|dttdd|dttdd|d
ttdd|dttdd|ttt
d|
dttt
dt
d|dttdddS)Nrxir|rtrryrrrFTrwrzr22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222227gUUUUUU?33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333331?)rar@truncrfloorceilintroundr\boolr
rrassertAlmostEqualcomplexr3s rtestConversionszFractionTest.testConversionsmsr4:aRjj#9#9:::q$*Qr2YY"7"7888r4:aRjj#9#9:::r49QsBZZ#8#8999r49QsBZZ#8#8999r3qbzz??333q%"b		"2"2333q%"b		"2"2333r53#4#4555r52r#3#3444Qq!WW

...tAaGG}}---sE!Ar((OO444	
-K0@0@AAAu$Qs;'7'7[9I9I%J%JKK	M	M	M	
vwq2ww'7'788888rctdd}||tj|t|d|t
t|t
dS)Nrwrzrt)rassertIsInstancetypingSupportsIntr\rr])rfs  rtestSupportsIntzFractionTest.testSupportsIntsl
aGGa!3444Q###c!ffs+++++rcGfddttdd}||j||j||t
j|t|d|tt|tdS)NcXeZdZdZedZefdZfdZfdZdS):FractionTest.testIntGuaranteesIntReturn.<locals>.CustomIntz
            Subclass of int with just enough machinery to convince the Fraction
            constructor to produce something with CustomInt numerator and
            denominator.
            c|Srr2r3s rrUzDFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.numeratorsrcdSNrtr2)r	CustomInts rrVzFFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.denominators y||#rcTt|t|zSrrrrrs  r__mul__zBFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.__mul__s$ yTSZZ!7888rcTt|t|zSrrrs  r__floordiv__zGFractionTest.testIntGuaranteesIntReturn.<locals>.CustomInt.__floordiv__s$ yTc%jj!8999rN)	r8r9r:r;propertyrUrVrr)rsrrrs



X

$
$
$
$X
$
9
9
9
9
9
:
:
:
:
:
:
:rrrr{rz)	rrrrUrVrrr\r])rrrs  @rtestIntGuaranteesIntReturnz'FractionTest.testIntGuaranteesIntReturns
	:	:	:	:	:	:	:	:	:	:*
iimmYYq\\**ak9555amY777a!3444Q###c!ffs+++++rctjGdd}tj||d}t|}||j||t|d|d}t|}|t|ddS)Nc>eZdZdZdZdZedZdZeZ	dS)=FractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValuertc||_dSr)rrs  rrzFFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__init__s
"


rc*t|jSr)rrr3s r__bool__zFFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__bool__sDJ'''rc|Srr2r3s rrUzGFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.numerators	rc td)Nz&Avoid comparisons in Fraction.__bool__)AssertionErrorr"s  rr#zDFractionTest.testBoolGuarateesBoolReturn.<locals>.CustomValue.__eq__s$%MNNNrN)
r8r9r:rVrrrrUr#r*r2rrCustomValuerseK
#
#
#
(
(
(

X

O
O
OFFFrrrtTrF)		functoolstotal_orderingrrregisterrassertIsrUr)rrrUrWs    rtestBoolGuarateesBoolReturnz(FractionTest.testBoolGuarateesBoolReturns
	!							
"	!	(	!!+...KNN	
iLL

ak9---

d1ggt$$$KNN	
iLL

d1ggu%%%%%rc	z|tdttdd|tdttdd|tdttdd|tddttd	d
d|tddttdd
ddS)
Ni8ijryirxr|rrrti)rarrr3s r	testRoundzFractionTest.testRoundsqwwaggr(:(:;;;qwwaggr(:(:;;;quueAbEE2&6&6777qRyy%#sQ*?*?@@@qRyy%#sQ*?*?@@@@@rc
|tddtddtddz|tddtddtddz
|tddtddtddz|tddtddtdd	z|tdd	tddtddz|td
dtdd	tddz|dtd
dtddz|dtddtdz|tddtddtddz|tddtddtddz|tdtddfttddtdd|tdtddfttddtdd|tddtddtdz|tddtddtdz|dtd	tddz|tddtdd
t	tdtdd}||jd||jdtdddz}||tdd||jd||j	dtdddz}||tdd||jd||j	dtdddz}||td	d||jd	||j	ddS)Nrtrzr|r{rrrwrrryrr~rur@rxr)
r\rradivmodpowrrealimagrUrV)rzps   rtestArithmeticzFractionTest.testArithmetics1a!Ar((Qq!WW"45552rAaHHqAww$67771b1Q88a1gg#56661a!Aq''AaGG"34441a!Ar((Qq!WW"45553AaGGaAhh$6777q!Ar((a1gg"5666vq||qtt';<<<1a!Aq''AaGG"34441a!B((Qq!WW"4555!A$$!Q&1a!Aq''*B*BCCC!B%%1a)6!B((AaGG+D+DEEE1b1Q77add?3332q1Q77aee#3444sAaDDAaGGO4441a1Q77(+++"qAwwqvq)))###
b!HHMAaGG$$$a(((***
b!HHNAb!HH%%%b)))***
b!HHNAaGG$$$a(((*****rcZ|tddtddzdzdtdddzdz
z|tddtd	d
zdtdd	d
zz|d
tddfttddzdzdtdddzdz
|d	dzdztd	d
zdtdd	d
zz|dtdd	d
ztdd	d
zz|dtd	d	d
zfttdd	d
ztdd	d
z|d	dzdztddfttd	d
zdtdd	d
zdS)Nlb;efOpUmnP|}l~Jw5PHyT#/jei4Tr|#rtlP~cegrulrzrrwr{l_rr})rarrgrr3s rtestLargeArithmeticz FractionTest.testLargeArithmeticsT
CK
M
M
b"fQh!!AhBq$9$99	
	
	

	

a011
q#vgqMMAaCLL(	
	
	
	
##

DLNN
O
1RVAXx((!Hb"fQh*?*?@@		
	
	
	

#XIO
q#vgqMMQq!S&\\)	
	
	
	


aCLLAaCLL(	
	
	
	

!QV1Q3<<1af..	
	
	
	
##3hY"_
q1
2
2
41afWa==!Aq#v,,//	
	
	
	
	
rc
|tddtdddz|dtdddz|dtdddz|tdddtddz|ddtddz|ddtddz|tddtdddz
|d	tdddz
|d
tdddz
|tdddtddz
|ddtddz
|d
dtddz
|tddtdddz|dtdddz|dtdddz|tdddtddz|ddtddz|ddtddz|tddtdddz|dtdddz|dtdddz|tdddtddz|ddtddz|ddtddz|dtdddz|dtdddz|ddtddz|ddtddz|ddtddz|tddtdddz|dtdddz|tdddtddz|ddtddz|dtddtdz|tdtddtdz|tdtddtdz|dtddtdz|dtddft	tddd|t	ddt	tddd|dtdft	dtdd|t	ddt	dtdd|t	dtdt	tddtd|t	dtdt	tddtd|t	dtdt	tddtd|t	dtdt	tddtd|tddtdddz|tddtdddz|dtdddz|dtdddz|ddtddztdtdd}|d|j|d|j	|tdddtddz|d dtddz|d!d tddz|ddtddz|
ttjtddddS)"Nrr|rtg?g?y?y?rgyrg?y?rrry$@rr~ld&O!g"@g?rrrxgrryrzrr
g?)
rarr
rgrrrrr\rrrr )rrs  rtestMixedArithmeticz FractionTest.testMixedArithmetics
	qRyy!Ar((Q,777sAaHHsN333x1bX)>???qRyy!a2hh,777sC!Ar((N333x(a2hh)>???qRyy!Ar((Q,777tQq"XX^444y!Ar((h*?@@@qBxxQq"XX666sC!Ar((N333x(a2hh)>???qBxx1bA666sAaHHsN333x1bX)>???qBxxQq"XX666sC!Ar((N333x(a2hh)>???qBxx1bA666sAaHHsN333x1bX)>???qQxxQq"XX666tS1Q88^444y8qBxx*?@@@q!Ar((a-000sAaHHO444r1!R=111vv1b'9:::z3!Ar((?;;;qBxx1bA666sAaHHsN333qAwwAaHH555y#!R.999sAaHHuU||$;<<<uV}}a2hhv.FGGGuU||Qr2YYu-EFFFtQr2YYv%>???##Q!RM6!Ar((A3F3FGGG##F3$4$4fQq"XXs6K6KLLL##R1Jq!Ar((0C0CDDD##F3$4$4fS!Ar((6K6KLLL##F3e$=$=va2hhPUV[P\P\?]?]^^^##F3f

$>$>qBxxQVW]Q^Q^@_@_```##F4u$>$>qRyyRWX]R^R^@_@_```##F4v$?$?"b		SXY_S`S`AaAabbb	
qayy!Ar((b.999qayy!B((a-888sAaHHO444x1bh)?@@@q1!Q<000AaGGq!&)))AF###qAwwaAhh777sQ!Aq''\222tSAb!HH_555x(qBxx)?@@@+X\Aq''2	'	'	'	'	'rc	|ttjt	ddtd|ttjtdt	dddS)Nrwrz	3.1415926)rrr addrrr3s rtestMixingWithDecimalz"FractionTest.testMixingWithDecimalbsr)X\Ab''7;#7#7	9	9	9)X\!+..!B	9	9	9	9	9rc|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddkdS)Nrtrzrw)
assertTruerassertFalser3s rtestComparisonszFractionTest.testComparisonsiso!Q!Aq'')***1a1Q77*+++!Q1Q77*+++!Q1Q77*+++1aAaGG+,,,!Q1Q77*+++1aAaGG+,,,1aAaGG+,,,!Q1Q77*+++++rc|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddk|tddtddkdS)Nrtrzrwrru)rrr>r r3s rtestComparisonsDummyRationalz)FractionTest.testComparisonsDummyRationalts!Q=A#6#66777
a++qAww67771aM!Q$7$77888q!,,!Q7888!Q-1"5"556661a=A#6#667771a=A#6#667771a=A#6#667771a=A#6#66777!Q-1"5"55666!Q=A#6#66777!Q=A#6#667771aM!Q$7$778881aM!Q$7$77888!Q=A#6#66777!Q=A#6#66777
a++a1gg5666q!,,qAww6777q!,,qAww6777q!,,qAww6777q!,,qAww6777
a++a1gg5666
a++qAww6777
a++qAww6777q!,,!Q7888q!,,!Q7888
a++qAww6777
a++qAww677777rctd}tdd}|||k|||kp||k|||k|||ko||k|||k|||kp||k|||k|||ko||kdS)NgUUUUUU?rtrw)r
rrr )rxys   rtestComparisonsDummyFloatz&FractionTest.testComparisonsDummyFloatsu
aGGQAQ'''a   a*AF+++QAQ'''a   a*AF+++++rc|dtddk|dtddk|tdddk|tdddk|tdddk|tdddk|dtddk|dtddk|td	tddk|td
tddk|td
tddk|tddtd	k|tddtd
k|tddtd
kdS)Nrzr{rrwrt333333?皙??rrrr|rrrurrrr r
r3s r
testMixedLesszFractionTest.testMixedLesssAaGG$$$Qq!WW%%%!Q!$$$1a1%%%!Q#
&&&1a3'''a1gg
&&&qAww'''u!Q/000f

!R0111u"a0111!Q%,,.///2rU6]]23333uU||344444rc|dtddk|dtddk|tdddk|tdddk|dtddk|dtddk|tdddk|tdddk|td	tddk|td
tddk|td
tddk|tddtd	k|tddtd
k|tddtd
kdS)Nr+rtrzr)r*rrwr{rrrr|rrrur,rr-r.r/r3s rtestMixedLessEqualzFractionTest.testMixedLessEqualsqAww'''!Q(((!Q3'''1aC(((Qq!WW%%%a1gg&&&!Q1%%%1aA&&&u1a0111f

1b1222u2q1222!Q5<</0002reFmm34443e455555rc
|tdtdk|dtttjddzk|dttjddzk|dttjddz
k|dttjddz
k|dttjddzkdS)Nr~rrt)r rr
r@rrr3s rtestBigFloatComparisonsz$FractionTest.testBigFloatComparisonss!6eFmm3444a
4(8(81(<&=&= > >>???qD!1!1A!56667774:d#3#3a#7!8!88999qD!1!1A!56667774:d#3#3a#7!8!8899999rc|tdtdk|tt
jtdtd|tt
jtdtdtdd}tdd}tdd}|||k|||k|||k|||kt
j	t
jt
jt
j
fD]v}|t||||t||||t||||t|||wdS)Nr~rwrg?rg?)r rrrrr r/r&rr)r,)rr%rwrs     rtestBigComplexComparisonsz&FractionTest.testBigComplexComparisonss6gfoo5666)X[!F))WV__MMM)X[!F))WV__MMM
aGGE3E3Qa   a   Q+x{HKD	3	3BiQ222iQ222iQ222iQ2222		3	3rc|dtddk|dtddk|tdddk|tdddk|dtddk|dtddk|tdddk|tdddk|tddtd	k|td	tdd
k|tddtdk|tdtddkdS)
Nr+rtrzr)r*rrwr{rrurrr/r3s rtestMixedEqualzFractionTest.testMixedEqualsqAww'''!Q(((!Q3'''1aC(((Qq!WW%%%a1gg&&&!Q1%%%1aA&&&1aE%LL0111u1a01111aE%LL0111v!Aq''122222rc	|dttdd|dttd|dttdd|d	ttdd|d
ttdddS)NzFraction(7, 3)rurwz Fraction(6283185307, 2000000000)z3.1415926535z#Fraction(-1, 100000000000000000000)rtl Fx:^Vz7/37)r\reprrrjr3s rtestStringificationz FractionTest.testStringifications)4!Q==999;a//00	2	2	2>a7mm,,	.	.	.AaGG---c!Aq''ll+++++rc	tjj}tjj}|tdtt
dd|tddztt
ddz|ttdtt
d||tt
d||tt
dt
d	dS)	Nrr{rzr|2r~rtrx)
sys	hash_infomodulusrr\hashrrr
__hash__)rhmodhinfs   rtestHashzFractionTest.testHashs}$} cD1aMM222b"ftAb"fII777Dv//aiiAAAtAaJJ//000	
aeeaeenn&6&677777rc\td}d|dddddf\}}}}}}}t||z
tddkrG|}||z|dz}}||z|dz}}||z|z}||z
}t||z
tddkG|tj|dS)Nrwrrtʚ;r )rabsrr@pi)	rthreelaststsnnaddas	         rtestApproximatePizFractionTest.testApproximatePis!$%uaAq"$<!q!QAr!e)nnqE{{**EbD"Q$rAbD"R%rAQ!A
FA!e)nnqE{{**	
tw*****rctd}ddtddddf\}}}}}}t||z
tddkrN|}|dz
}|||dz
zz}|||zz}|dz}|||z|zz
}t||z
tddkN|tjd|dS)NrtrrJrzrx)rrLrr@cos)rr%rrOrQfactrBsigns        rtestApproximateCos1z FractionTest.testApproximateCos1s
aDD'(!QqTT1a':$5!T3!e)nnqE{{**E
FAA1ID1q5LCBJD
td""A
!e)nnqE{{**	
tx{{A.....rc
\tdd}tdd}tdtjdzD]3}||t
t||4|t|tt||t|tt||t|tt||t|tt|||t|||t|dS)Nrrurrt)
rrSrangepickleHIGHEST_PROTOCOLr\rridrrrra)rrWdrprotos    rtest_copy_deepcopy_picklez&FractionTest.test_copy_deepcopy_picklesH
b!HH
2q
!
!1f59::	8	8EQeAuoo 6 67777A477,,,A8A;;000BrFFBtBxxLL111BrFFBx||$4$4555r488,,,r8B<<00000rcltdd}|tt|dddS)Nrruar|)rrrrrs  r
test_slotszFractionTest.test_slots(s1
b!HH.'1c2>>>>>rcGddt}tj|d|d}||jd||jd|t
|j||t
|j|dS)NcLeZdZdZdZdZedZedZdS)-FractionTest.test_int_subclass.<locals>.myintclt|t|t|zSrr]rr"s  rrz5FractionTest.test_int_subclass.<locals>.myint.__mul__/s)!tDzz#d))c%jj"8999rclt|t|t|zSrrkr"s  rrz:FractionTest.test_int_subclass.<locals>.myint.__floordiv__1s)!tDzz#d))s5zz"9:::rcpt|t|t|z}|Srrk)rrr%s   r__mod__z5FractionTest.test_int_subclass.<locals>.myint.__mod__3s-DJJs4yy3u::566rcLt|t|Srrkr3s rrUz7FractionTest.test_int_subclass.<locals>.myint.numerator6s!tDzz#d)),,,rc2t|dSr)r]r3s rrVz9FractionTest.test_int_subclass.<locals>.myint.denominator9s!tDzz!}}$rN)	r8r9r:rrrnrrUrVr2rrmyintri.su
:
:
:
;
;
;



-
-X
-

%
%X
%
%
%rrqrwrrtrz)rrFrGr\rUrVr])rrqrs   rtest_int_subclasszFractionTest.test_int_subclass-s
	%
	%
	%
	%
	%C
	%
	%
	%
uuU||UU5\\::a(((***ak**E222am,,e44444rN)(r8r9r:rargrqrrrrrrrrrrrrrrrrrrrr!r#r'r0r2r4r7r9r=rGrVr[rcrfrrr2rrrZrZ[sP+++
QQQ
;;;1112;;;===qqqf((( 8---0===+++9990,,, , , ,D"&"&"&HAAA + + +D 
 
 
DC'C'C'J999	,	,	,888@
,
,
,555$666":::333$333,,,	8	8	8+++///
1
1
1???
55555rrZ__main__)r;decimalrtest.supportrr@rr rFrr@runittestrrr^rrrGrobjectr
r>rSrXTestCaserZr8mainr2rr<module>rzs!!******












@88888F888@AAAAAI&AAA(((f5f5f5f5f58$f5f5f5RzHMOOOOOr