was lifted.
(Contributed by Serhiy Storchaka in :issue:`32489`.)
-* The ``int`` type now has a new ``as_integer_ratio`` method compatible
- with the existing ``float.as_integer_ratio`` method.
+* The :class:`int` type now has a new :meth:`~int.as_integer_ratio` method
+ compatible with the existing :meth:`float.as_integer_ratio` method.
(Contributed by Lisa Roach in :issue:`33073`.)
* Added support of ``\N{name}`` escapes in :mod:`regular expressions <re>`.
import sys
-import enum
import random
import math
import array
self.assertEqual(type(value >> shift), int)
def test_as_integer_ratio(self):
- tests = [10, 0, -10, 1]
+ class myint(int):
+ pass
+ tests = [10, 0, -10, 1, sys.maxsize + 1, True, False, myint(42)]
for value in tests:
numerator, denominator = value.as_integer_ratio()
- self.assertEqual((numerator, denominator), (value, 1))
- self.assertIsInstance(numerator, int)
- self.assertIsInstance(denominator, int)
-
- def test_as_integer_ratio_maxint(self):
- x = sys.maxsize + 1
- self.assertEqual(x.as_integer_ratio()[0], x)
-
- def test_as_integer_ratio_bool(self):
- self.assertEqual(True.as_integer_ratio(), (1, 1))
- self.assertEqual(False.as_integer_ratio(), (0, 1))
- self.assertEqual(type(True.as_integer_ratio()[0]), int)
- self.assertEqual(type(False.as_integer_ratio()[0]), int)
-
- def test_as_integer_ratio_int_enum(self):
- class Foo(enum.IntEnum):
- X = 42
- self.assertEqual(Foo.X.as_integer_ratio(), (42, 1))
- self.assertEqual(type(Foo.X.as_integer_ratio()[0]), int)
-
- def test_as_integer_ratio_int_flag(self):
- class Foo(enum.IntFlag):
- R = 1 << 2
- self.assertEqual(Foo.R.as_integer_ratio(), (4, 1))
- self.assertEqual(type(Foo.R.as_integer_ratio()[0]), int)
-
+ self.assertEqual((numerator, denominator), (int(value), 1))
+ self.assertEqual(type(numerator), int)
+ self.assertEqual(type(denominator), int)
if __name__ == "__main__":