MCPcopy Index your code
hub / github.com/python/cpython / testInitFromIntegerRatio

Method testInitFromIntegerRatio

Lib/test/test_fractions.py:364–394  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

362 self.assertRaises(OverflowError, F, Decimal('-inf'))
363
364 def testInitFromIntegerRatio(self):
365 self.assertEqual((7, 3), _components(F(Ratio((7, 3)))))
366 errmsg = (r"argument should be a string or a Rational instance or "
367 r"have the as_integer_ratio\(\) method")
368 # the type also has an "as_integer_ratio" attribute.
369 self.assertRaisesRegex(TypeError, errmsg, F, Ratio)
370 # bad ratio
371 self.assertRaises(TypeError, F, Ratio(7))
372 self.assertRaises(ValueError, F, Ratio((7,)))
373 self.assertRaises(ValueError, F, Ratio((7, 3, 1)))
374 # only single-argument form
375 self.assertRaises(TypeError, F, Ratio((3, 7)), 11)
376 self.assertRaises(TypeError, F, 2, Ratio((-10, 9)))
377
378 # as_integer_ratio not defined in a class
379 class A:
380 pass
381 a = A()
382 a.as_integer_ratio = lambda: (9, 5)
383 self.assertEqual((9, 5), _components(F(a)))
384
385 # as_integer_ratio defined in a metaclass
386 class M(type):
387 def as_integer_ratio(self):
388 return (11, 9)
389 class B(metaclass=M):
390 pass
391 self.assertRaisesRegex(TypeError, errmsg, F, B)
392 self.assertRaisesRegex(TypeError, errmsg, F, B())
393 self.assertRaises(TypeError, F.from_number, B)
394 self.assertRaises(TypeError, F.from_number, B())
395
396 def testFromString(self):
397 self.assertEqual((5, 1), _components(F("5")))

Callers

nothing calls this directly

Calls 8

_componentsFunction · 0.85
assertRaisesRegexMethod · 0.80
FClass · 0.70
RatioClass · 0.70
AClass · 0.70
BClass · 0.70
assertEqualMethod · 0.45
assertRaisesMethod · 0.45

Tested by

no test coverage detected