a ze8@sfddlZddlmZmZmZddlmZddZddZdd Z d d Z Gd d d e Z Gdddej ZGdddZddZGdddeZGdddeedZGdddeZGdddeZeeGdddej ZGdd d e ZGd!d"d"eZGd#d$d$e ZGd%d&d&e ZGd'd(d(eZGd)d*d*ZGd+d,d,ej Zed-krbedS).N)eqlene)ABCMetacCs|r|||}}q|SN)abrrC/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_binop.pygcdsr cCs t|tSr) isinstanceintxrrr isint srcCs$tttfD]}t||r dSq dS)Nr)r floatcomplexr )rTrrr isnums rcCs t|tSr)r Ratrrrr isRatsrc@seZdZddgZd.ddZddZeed Zd d Zeed Z d d Z ddZ ddZ ddZ ddZeZddZddZddZeZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd S)/r _Rat__num _Rat__denrrcCsbt|std|t|s(td||dkr8tdt||}t|||_t|||_dS)NzRat numerator must be int (%r)z Rat denominator must be int (%r)rzzero denominator)r TypeErrorZeroDivisionErrorr r rr)selfnumdengrrr __init__"s   z Rat.__init__cCs|jSr)rrrrr _get_num1sz Rat._get_numNcCs|jSr)rr!rrr _get_den6sz Rat._get_dencCsd|j|jfS)Nz Rat(%d, %d)rrr!rrr __repr__;sz Rat.__repr__cCs tt|Sr)strrr!rrr __str__?sz Rat.__str__cCs|jd|jS)N?r$r!rrr __float__Csz Rat.__float__cCsN|jdkr:z t|jWSty8tdt|Yn0tdt|dS)Nrz%s too large to convert to intzcan't convert %s to int)rr r OverflowErrorrepr ValueErrorr!rrr __int__Gs    z Rat.__int__cCsVt|rt|}t|r>t|j|j|j|j|j|jSt|rRt||StSrrrrrrrrNotImplementedrotherrrr __add__Qs  z Rat.__add__cCsVt|rt|}t|r>t|j|j|j|j|j|jSt|rRt||StSrr.r0rrr __sub__^s  z Rat.__sub__cCsVt|rt|}t|r>t|j|j|j|j|j|jSt|rR|t|StSrr.r0rrr __rsub__is  z Rat.__rsub__cCsTt|r"t|j|j|j|jSt|rrArBrCrrrr rs2            rc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS) RatTestCasecCs|tddd|tddd|tddd|tddd|td dd |tdd d|td d d tdd D]l}tdd D]\}|t||d k|t| |d k|t|| d k|t| | d kqqdS) N  rdr) assertEqualr range assertTrue)rijrrr test_gcdszRatTestCase.test_gcdc Csjtdd}||jd||jdtdd}||jd||jdtdd}||jd||jdtdd}||jd||jdtd}||jd||jd ztd d }WntyYn 0|d d d ddgidttf D]f}z t|}Wnty"Yn0|d|ztd |}WntyTYq0|d|qdS)NrLrOrNirTrSrrz(Rat(1, 0) didn't raise ZeroDivisionError0gyrzRat(%r) didn't raise TypeErrorz!Rat(1, %r) didn't raise TypeError)rrVrrrZfailunittestr)rrZbadrrr test_constructors>       zRatTestCase.test_constructorcCs|tddtddd|tdddtdd|dtddtdd|dtddd|tdddddS)NrNr\rrPr(?rVrr!rrr test_adds zRatTestCase.test_addcCs|tddtddtdd|tdddtdd|dtddtdd|tdddd |dtddd dS) Nr]rNrPrLrr\r(?rbr!rrr test_subs "zRatTestCase.test_subcCs~|tddtddtdd|tdddd|dtddd|tdddd|dtddddS) NrNr\rPr]rLrdrer(rbr!rrr test_mul s "zRatTestCase.test_mulcCs|tddtddtdd|tdddtdd|dtdtdd|dtd dd |td ddd dS) NrLr\rPr] rN@rrarbr!rrr test_divs "zRatTestCase.test_divcCs`|tdtdd|tddtddd|tddd|dtdddS)NrLrNr\rbr!rrr test_floordivszRatTestCase.test_floordivcCsZ|tdtdd|tdd|dtd|tdd|dtddS)NrLrUrNg$@rbr!rrr test_eqs zRatTestCase.test_eqcCs|tddtddtdd|tdddtdd|dtdtdd|dtd dd |td ddd |td d dS) NrLr\rPr]rhrirNrjrraz1/2re)rVrevalr!rrr test_true_div$s "zRatTestCase.test_true_divN) rDrErFr[r`rcrfrgrkrmrnrprrrr rKs$rKc@seZdZddZddZdS)OperationLoggercCs ||_dSrlogger)rrsrrr r 1szOperationLogger.__init__cGs|j|dSrrr)rargsrrr log_operation3szOperationLogger.log_operationN)rDrErFr rurrrr rq/srqcGsFg}g}|D]}|||jq z ||Wnty@Yn0|Sr)appendr)opclasseslogZ instancescrrr op_sequence6s  r{c@s$eZdZddZddZddZdS)AcCs|dtS)NA.__eq__rur/r0rrr rCEs r}cCs|dtS)NA.__le__r~r0rrr __le__Hs rcCs|dtS)NA.__ge__r~r0rrr __ge__Ks rNrDrErFrCrrrrrr r|Dsr|c@s$eZdZddZddZddZdS)BcCs|dtS)NB.__eq__r~r0rrr rCPs rcCs|dtS)NB.__le__r~r0rrr rSs rcCs|dtS)NB.__ge__r~r0rrr rVs rNrrrrr rOsr) metaclassc@s$eZdZddZddZddZdS)CcCs|dtS)NC.__eq__r~r0rrr rC[s rcCs|dtS)NC.__le__r~r0rrr r^s rcCs|dtS)NC.__ge__r~r0rrr ras rNrrrrr rZsrc@s$eZdZddZddZddZdS)VcCs|dtS)NV.__eq__r~r0rrr rCgs rcCs|dtS)NV.__le__r~r0rrr rjs rcCs|dtS)NV.__ge__r~r0rrr rms rNrrrrr resrc@seZdZddZdS)OperationOrderTestscCs4|ttttddg|ttttddg|ttttddg|ttttddg|ttttddg|ttttddg|ttttddg|ttttddg|ttttddg|ttttd dg|tt t|tttt dd g|tttt dd gdS) Nr}rrrrrrrrrr) rVr{rr|rrrrX issubclassrr!rrr test_comparison_orderstsz*OperationOrderTests.test_comparison_ordersN)rDrErFrrrrr rssrc@seZdZddZdS)SupEqcCsdSNTrr0rrr rCsz SupEq.__eq__NrDrErFrCrrrr rsrc@seZdZdZdS)SNrrrrr rsrc@s eZdZdS)FN)rDrErFrrrr rsrc@seZdZdZdS)XNrrrrr rsrc@seZdZdZdS)SNN)rDrErF__ne__rrrr rsrc@seZdZddZdZdS)XNcCsdSrrr0rrr rCsz XN.__eq__N)rDrErFrCrrrrr rsrc@seZdZddZddZdS)FallbackBlockingTestscCsttttf\}}}}|||||||||||||tt|||tt|||tt||dSr)rrrrrV assertRaisesrr)refsrrrr test_fallback_rmethod_blockings    z4FallbackBlockingTests.test_fallback_rmethod_blockingcCsfttt}}}|||k|tt|||tt|||||k|tt||dSr)rrrZ assertFalserrr)rrZsnZxnrrr test_fallback_ne_blockings z/FallbackBlockingTests.test_fallback_ne_blockingN)rDrErFrrrrrr rs r__main__) r_operatorrrrabcrr rrrobjectrZTestCaserKrqr{r|rrrregisterrrrrrrrrrDmainrrrr s4 *j