@@ -175,6 +175,14 @@ def parse_testfile(fname):
175175 flags
176176 )
177177
178+ # Class providing an __index__ method.
179+ class MyIndexable (object ):
180+ def __init__ (self , value ):
181+ self .value = value
182+
183+ def __index__ (self ):
184+ return self .value
185+
178186class MathTests (unittest .TestCase ):
179187
180188 def ftest (self , name , value , expected ):
@@ -595,6 +603,49 @@ def msum(iterable):
595603 s = msum (vals )
596604 self .assertEqual (msum (vals ), math .fsum (vals ))
597605
606+ def testGcd (self ):
607+ gcd = math .gcd
608+ self .assertEqual (gcd (0 , 0 ), 0 )
609+ self .assertEqual (gcd (1 , 0 ), 1 )
610+ self .assertEqual (gcd (- 1 , 0 ), 1 )
611+ self .assertEqual (gcd (0 , 1 ), 1 )
612+ self .assertEqual (gcd (0 , - 1 ), 1 )
613+ self .assertEqual (gcd (7 , 1 ), 1 )
614+ self .assertEqual (gcd (7 , - 1 ), 1 )
615+ self .assertEqual (gcd (- 23 , 15 ), 1 )
616+ self .assertEqual (gcd (120 , 84 ), 12 )
617+ self .assertEqual (gcd (84 , - 120 ), 12 )
618+ self .assertEqual (gcd (1216342683557601535506311712 ,
619+ 436522681849110124616458784 ), 32 )
620+ c = 652560
621+ x = 434610456570399902378880679233098819019853229470286994367836600566
622+ y = 1064502245825115327754847244914921553977
623+ a = x * c
624+ b = y * c
625+ self .assertEqual (gcd (a , b ), c )
626+ self .assertEqual (gcd (b , a ), c )
627+ self .assertEqual (gcd (- a , b ), c )
628+ self .assertEqual (gcd (b , - a ), c )
629+ self .assertEqual (gcd (a , - b ), c )
630+ self .assertEqual (gcd (- b , a ), c )
631+ self .assertEqual (gcd (- a , - b ), c )
632+ self .assertEqual (gcd (- b , - a ), c )
633+ c = 576559230871654959816130551884856912003141446781646602790216406874
634+ a = x * c
635+ b = y * c
636+ self .assertEqual (gcd (a , b ), c )
637+ self .assertEqual (gcd (b , a ), c )
638+ self .assertEqual (gcd (- a , b ), c )
639+ self .assertEqual (gcd (b , - a ), c )
640+ self .assertEqual (gcd (a , - b ), c )
641+ self .assertEqual (gcd (- b , a ), c )
642+ self .assertEqual (gcd (- a , - b ), c )
643+ self .assertEqual (gcd (- b , - a ), c )
644+
645+ self .assertRaises (TypeError , gcd , 120.0 , 84 )
646+ self .assertRaises (TypeError , gcd , 120 , 84.0 )
647+ self .assertEqual (gcd (MyIndexable (120 ), MyIndexable (84 )), 12 )
648+
598649 def testHypot (self ):
599650 self .assertRaises (TypeError , math .hypot )
600651 self .ftest ('hypot(0,0)' , math .hypot (0 ,0 ), 0 )
0 commit comments