diff options
author | Lisa Roach <lisaroach14@gmail.com> | 2018-09-14 06:56:23 (GMT) |
---|---|---|
committer | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2018-09-14 06:56:23 (GMT) |
commit | 5ac704306f4b81ae3f28d8742408d3214b145e8a (patch) | |
tree | 34a39f0216d918b679367a84e05f2326aef70a7c /Lib | |
parent | 83df50ea5757816c7338d27f21fd18b1e79206f7 (diff) | |
download | cpython-5ac704306f4b81ae3f28d8742408d3214b145e8a.zip cpython-5ac704306f4b81ae3f28d8742408d3214b145e8a.tar.gz cpython-5ac704306f4b81ae3f28d8742408d3214b145e8a.tar.bz2 |
bpo-33073: Adding as_integer_ratio to ints. (GH-8750)
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_doctest.py | 3 | ||||
-rw-r--r-- | Lib/test/test_long.py | 32 |
2 files changed, 34 insertions, 1 deletions
diff --git a/Lib/test/test_doctest.py b/Lib/test/test_doctest.py index 83941c1..797bdb8 100644 --- a/Lib/test/test_doctest.py +++ b/Lib/test/test_doctest.py @@ -665,7 +665,7 @@ plain ol' Python and is guaranteed to be available. True >>> real_tests = [t for t in tests if len(t.examples) > 0] >>> len(real_tests) # objects that actually have doctests - 8 + 9 >>> for t in real_tests: ... print('{} {}'.format(len(t.examples), t.name)) ... @@ -675,6 +675,7 @@ plain ol' Python and is guaranteed to be available. 2 builtins.float.hex 1 builtins.hex 1 builtins.int + 3 builtins.int.as_integer_ratio 2 builtins.int.bit_length 1 builtins.oct diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index 8472889..7c883ba 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -3,6 +3,7 @@ from test import support import sys +import enum import random import math import array @@ -1349,6 +1350,37 @@ class LongTest(unittest.TestCase): self.assertEqual(type(value << shift), int) self.assertEqual(type(value >> shift), int) + def test_as_integer_ratio(self): + tests = [10, 0, -10, 1] + 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) + + if __name__ == "__main__": unittest.main() |